TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI TÌM HIỂU THUẬT TOÁN KNN VÀ ỨNG DỤNG PHÁT HIỆN TIN NHẮN RÁC Hà Nội 2022 Lời cảm ơn Để hoàn thiện được đề tài Bài tập lớn môn Trí Tu[.]
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÀI TẬP LỚN: TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: TÌM HIỂU THUẬT TỐN KNN VÀ ỨNG DỤNG PHÁT HIỆN TIN NHẮN RÁC Hà Nội - 2022 Lời cảm ơn Để hoàn thiện đề tài Bài tập lớn mơn Trí Tuệ Nhân Tạo, chúng em xin gửi lời cảm ơn chân thành đến trường Đại học Công nghiệp Hà Nội, khoa Công Nghệ Thông Tin tạo điều kiện cho chúng em học tập Chúng em xin gửi lời cảm ơn chân thành đến thầy cô khoa Công Nghệ Thông Tin truyền đạt cho chúng em nhiều kiến thức trình học tập trường Đặc biệt chúng em xin chân thành cảm ơn đến cô giáo ThS Lê Thị Thủy Trong suốt trình làm tập lớn thầy ln giúp đỡ, hướng dẫn tận tình, truyền đạt kiến thức kinh nghiệm để chúng em hoàn thành đề tài Chúng em cố gắng hoàn thiện báo cáo tập lớn tốt khơng thể tránh thiếu sót Chúng em mong nhận góp ý thầy cô bạn để báo cáo chúng em hoàn thiện Chúng em xin chân thành cảm ơn! Mục lục GIỚI THIỆU CHƯƠNG 1: Tìm hiểu thuật tốn K-Nearest Neighbors (KNN) Tại cần thuật toán KNN Định nghĩa cách hoạt động thuật toán KNN 2.1 Định nghĩa 2.2 Cách hoạt động .6 Các bước triển khai thuật toán KNN 3.1 Tiền xử lý liệu 3.2 Tính toán khoảng cách 3.3 Chọn K 11 3.4 Phân loại dự đoán 14 Các ưu điểm hạn chế thuật toán KNN 15 4.1 Ưu điểm 15 4.2 Hạn chế 16 CHƯƠNG 2: Xây dựng ứng dụng phát tin nhắn rác 17 Tiền xử lý liệu 17 1.1 Đổi tên cột 17 1.2 Bỏ cột không cần thiết 17 1.3 Mã hóa câu 18 1.4 Loại bỏ stop word 19 1.5 Loại bỏ dấu câu chuyển thành chữ thường 19 1.6 Stemming of words .20 1.7 Vector hóa từ 20 1.8 Chia tập liệu thành tập huấn luyện tập kiểm tra 21 Tính tốn khoảng cách 22 Tìm k hàng xóm gần nhãn 23 Dự đoán nhẵn .23 Đánh giá mơ hình KNN tập kiểm tra 24 KẾT LUẬN 25 Kết đạt 25 Mặt hạn chế 25 TÀI LIỆU THAM KHẢO 26 Danh mục hình ảnh Ảnh Ví dụ KNN .3 Ảnh Bản đồ 1NN (Nguồn: Wikipedia) Ảnh Đồ thị khoảng cách hai điểm p q Ảnh Khoảng cách theo Cosine .9 Ảnh K tăng dần làm mịn ranh giới .11 Ảnh Đồ thị K bến thiên K-mean 12 Ảnh Chức đổi tên cột để hiểu rõ 16 Ảnh Chức loại bỏ cột không cần thiết 16 Ảnh Chức mã hóa câu 17 Ảnh 10 Loại bỏ stop word .18 Ảnh 11 Chuyển dạng chữ thường .18 Ảnh 12 Steaming 19 Ảnh 13 Vector hóa 20 Ảnh 14 Chia liệu kiểm tra 20 Ảnh 15 Tính khoảng cách 21 Ảnh 16 Tính K .22 Ảnh 17 Dự đoán nhãn 22 Ảnh 18 Đánh giá hiệu .23 Danh mục bảng biểu Table Khái niệm người máy Danh mục từ viết tắt Từ viết tắt Từ hoàn chỉnh Knn.K-NN, KNN K-Nearest Neighbors TF–IDF Term Frequency–Inverse Document Frequency Bow Bag of Words AI Artificial Intelligence GIỚI THIỆU Trong kỷ nguyên số hóa nay, việc sử dụng hệ thống truyền thông điện tử email, ứng dụng nhắn tin, mạng xã hội trở thành phần thiếu sống hàng ngày người Tuy nhiên, phát triển công nghệ kèm với gia tăng lượng thơng tin khơng mong muốn có hại, đặc biệt việc nhận tin nhắn rác (spam) Tin nhắn rác khơng gây phiền tối cho người dùng mà tiềm ẩn rủi ro bảo mật, dẫn đến việc lừa đảo, phát tán mã độc, xâm nhập vào thông tin cá nhân Vấn đề đẩy nhà nghiên cứu tổ chức vào việc nghiên cứu phát triển công nghệ phương pháp để phát loại bỏ tin nhắn rác cách hiệu Mục tiêu đề tài "Tìm hiểu thuật tốn KNN ứng dụng phát tin nhắn rác" tìm hiểu thuật tốn K-Nearest Neighbors (KNN) áp dụng vào việc phát tin nhắn rác Chúng ta tiến hành xây dựng mơ hình phân loại tin nhắn "spam" "không phải spam" cách sử dụng tập liệu huấn luyện tập liệu kiểm tra Ý nghĩa đề tài giúp cải thiện chất lượng hiệu việc phát tin nhắn rác hệ thống truyền thông điện tử Việc triển khai thành cơng mơ hình KNN vào ứng dụng thực tế giúp giảm thiểu lượng tin nhắn rác, bảo vệ người dùng khỏi mối đe dọa bảo mật, cải thiện trải nghiệm người dùng sử dụng dịch vụ truyền thông CHƯƠNG 1: Tìm hiểu thuật tốn K-Nearest Neighbors (KNN) Tại cần thuật tốn KNN Giả sử có hai loại, tức Loại A Loại B, có điểm liệu x1, điểm liệu nằm loại số loại Để giải loại vấn đề này, cần thuật toán K-NN Với trợ giúp K-NN, dễ dàng xác định danh mục lớp tập liệu cụ thể Hãy xem xét sơ đồ Ảnh Ví dụ KNN Định nghĩa cách hoạt động thuật toán KNN 2.1 Định nghĩa K-nearest neighbor thuật toán supervised-learning đơn giản (mà hiệu vài trường hợp) Machine Learning Khi training, thuật tốn khơng học điều từ liệu training (đây lý thuật toán xếp vào loại lazy learning), tính tốn thực cần dự đốn kết liệu K-nearest neighbor áp dụng vào hai loại toán Supervised learning Classification Regression KNN gọi thuật tốn Instance-based hay Memory-based learning Có vài khái niệm tương ứng người-máy sau: Ngôn ngữ người Ngôn ngữ Máy Học in Machine Learning Câu hỏi Điểm liệu Data point Đáp án Đầu ra, nhãn Output, Label Ôn thi Huấn luyện Training Tập tài liệu mang vào Tập liệu tập huấn Training set phòng thi Đề thi Tập liểu kiểm thử Test set Table Khái niệm người máy Với KNN, toán Classification, label điểm liệu (hay kết câu hỏi thi) suy trực tiếp từ K điểm liệu gần training set Label test data định major voting (bầu chọn theo số phiếu) điểm gần nhất, suy cách đánh trọng số khác cho điểm gần suy label Chi tiết nêu phần Trong toán Regresssion, đầu điểm liệu đầu điểm liệu biết gần (trong trường hợp K=1), trung bình có trọng số đầu điểm gần nhất, mối quan hệ dựa khoảng cách tới điểm gần Một cách ngắn gọn, KNN thuật tốn tìm đầu điểm liệu cách dựa thông tin K điểm liệu training set gần (K-lân cận), khơng quan tâm đến việc có vài điểm liệu điểm gần nhiễu Hình ví dụ KNN classification với K = Ảnh Bản đồ 1NN (Nguồn: Wikipedia) Ví dụ tốn Classification với classes: Đỏ, Lam, Lục Mỗi điểm liệu (test data point) gán label theo màu điểm mà thuộc Trong hình này, có vài vùng nhỏ xem lẫn vào vùng lớn khác màu Ví dụ có điểm màu Lục gần góc 11 nằm hai vùng lớn với nhiều liệu màu Đỏ Lam Điểm nhiễu Dẫn đến liệu test rơi vào vùng có nhiều khả cho kết khơng xác 2.2 Cách hoạt động Khi có điểm liệu cần phân loại dự đoán, thuật toán KNN thực bước sau: 2.2.1 Tính khoảng cách Tính khoảng cách điểm liệu tất điểm liệu tập huấn luyện Khoảng cách thường tính cách sử dụng phương pháp đo lường khoảng cách Euclidean, khoảng cách Manhattan, hay khoảng cách Cosine 2.2.2 Xác định hàng xóm Chọn K điểm liệu có khoảng cách gần với điểm liệu K siêu tham số mà người dùng phải xác định trước 2.2.3 Voting trung bình Cuối cùng, sử dụng phương pháp voting (nếu tốn phân loại) trung bình (nếu tốn dự đốn) nhãn K hàng xóm chọn để xác định nhãn giá trị cho điểm liệu Các bước triển khai thuật toán KNN Triển khai thuật tốn KNN thực qua bước sau: 3.1 Tiền xử lý liệu Tiền xử lý liệu bước quan trọng xử lý liệu văn trước áp dụng thuật toán Machine Learning KNN Mục tiêu tiền xử lý làm sạch, chuẩn hóa biểu diễn liệu văn thành dạng số hóa để thuật tốn xử lý hiệu Dưới bước thường thực tiền xử lý liệu văn bản: 3.1.1 Chuyển đổi văn thành chữ thường Chuyển đổi toàn văn thành chữ thường để tránh phân biệt từ viết hoa không viết hoa 3.1.2 Loại bỏ dấu câu ký tự đặc biệt Loại bỏ dấu câu, ký tự đặc biệt số không cần thiết văn Chỉ giữ lại từ ký tự cần thiết để xây dựng đặc trưng cho văn 3.1.3 Tách từ (Tokenization) Tách văn thành từ riêng lẻ (từ token) để chuẩn bị cho bước tiền xử lý xây dựng đặc trưng Ảnh Đồ thị K bến thiên K-mean 13 3.3.3 Domain Knowledge Hiểu biết toán liệu cụ thể giúp bạn lựa chọn giá trị K Ví dụ, bạn biết lớp liệu có tách biệt rõ ràng, chọn giá trị K nhỏ Ngược lại, liệu có nhiễu overlap lớp, bạn cân nhắc chọn K lớn 3.3.4 Thử nghiệm đánh giá Thử nghiệm với loạt giá trị K đánh giá hiệu suất mô hình tập kiểm tra để xác định giá trị K tạo kết tốt 3.3.5 Grid Search Nếu bạn sử dụng KNN phần pipeline quy trình Machine Learning phức tạp hơn, bạn sử dụng kỹ thuật Grid Search để tìm kiếm giá trị K tốt phạm vi cụ thể 3.4 Phân loại dự đoán Trong Machine Learning, "phân loại" "dự đoán" hai khái niệm liên quan đến việc sử dụng mơ hình để đưa định dự đốn liệu Dưới khác biệt hai khái niệm này: 3.4.1 Phân loại (Classification) Phân loại trình đưa định lớp nhãn điểm liệu dựa thông tin học từ liệu huấn luyện Mục tiêu phân loại phân chia điểm liệu vào lớp khác dựa đặc trưng Ví dụ, tốn phát thư rác, bạn sử dụng phân loại để dự đốn xem email có phải thư rác (lớp 1) hay khơng (lớp 0) 3.4.2 Dự đốn (Prediction) Dự đốn q trình ước tính giá trị số dự đoán đặc điểm cụ thể liệu dựa thông tin học từ liệu huấn luyện Mục tiêu dự đốn ước tính giá trị số, thời gian, biến liên tục khác dựa mơ hình học máy Ví dụ, tốn dự đốn giá nhà, bạn sử dụng mơ hình để ước tính giá trị số (giá nhà) dựa đặc trưng diện tích, số phịng ngủ, vị trí, v.v 14 Tóm lại, phân loại trình phân chia liệu vào lớp khác nhau, dự đốn q trình ước tính giá trị số dự đốn biến liên tục cụ thể Cả hai khái niệm đóng vai trò quan trọng Machine Learning sử dụng cho toán khác Các ưu điểm hạn chế thuật toán KNN 4.1 Ưu điểm Đơn giản dễ triển khai Khả mở rộng ứng dụng cho nhiều loại liệu Ưu điểm Khơng cần huấn luyện mơ hình, việc áp dụng KNN vào liệu nhanh chóng Độ xác cao liệu đồng (gần không gian đặc trưng) 15 4.2 Hạn chế Địi hỏi lưu tồn tập liệu huấn luyện nhớ, tốn khơng gian lưu trữ lớn Hiệu suất KNN giảm liệu có kích thước lớn Hạn chế Nhạy cảm với nhiễu liệu nhiều chiều (curse of dimensionality) Cần lựa chọn tham số K phù hợp, sai lầm lựa chọn K làm giảm hiệu suất mơ hình 16 CHƯƠNG 2: Xây dựng ứng dụng phát tin nhắn rác Tiền xử lý liệu 1.1 Đổi tên cột Ảnh Chức đổi tên cột để hiểu rõ Đoạn mã thực việc đổi tên cột DataFrame ‘data_set’ để tạo tên cột dễ hiểu o ‘data_set.rename(columns={'v1': 'Variety', 'v2': 'Data'}, inplace=True)’: Đây lệnh sử dụng để đổi tên cột DataFrame ‘data_set’ Đối tượng columns từ điển, khóa (keys) tên cột giá trị tương ứng (values) tên mà bạn muốn đặt cho cột Trong trường hợp này, 'v1' đổi thành 'Variety', 'v2' đổi thành 'Data' o ‘inplace=True’: Đây tham số phương thức rename để định thay đổi tên cột thực trực tiếp DataFrame ‘data_set’ mà không cần tạo o ‘print(data_set.head())’: Đây câu lệnh in hình dịng DataFrame ‘data_set’ sau tên cột thay đổi Điều giúp kiểm tra xem việc đổi tên cột thực cách hay không 1.2 Bỏ cột không cần thiết Ảnh Chức loại bỏ cột không cần thiết 17