Dưới đây là một lời mở đầu cho cuốn sách của bạn về phân loại thư, email rác với sự áp dụng của thuật toán K-NN: L i m đ uờ ở ầ Trong thế giới kỹ thuật số ngày nay, thư điện tử email đã
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC PHƯƠNG ĐÔNG KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
-
-BÀI TẬP LỚN
Phân l$p d' liê *u v$i K-NN v /ng d1ng
HÀ NỘI ./ 3/2024
Giáo viên hư$ng dẫn : DƯƠNG THỊ BÌNH
Sinh viên thực hiện : DƯƠNG QUANG TIẾN-521100177
ĐÀO QUANG TRUNG-521100181 PHẠM KHÁNH LINH-521100159
Trang 2PHÂN CHIA NỘI DUNG VIẾT BÁO CÁO
Bảng phân chia
1 Dương quang tiến
- Chương 1:
• Tổng quan về phân loại email rác
• Bài toán phân loại email rác
2 Đào quang trung
- Chương 2:
• Thuật toán KNN
• Xử lý email rác
3 Phạm khánh linh
-Chương 3:
• Thiết kế và xây dựng chương trình phân loại email rác với KNN
• Thực nghiệm chương trình
-Kết luận
Trang 3PHÂN CÔNG VÀ K HO CH TH C HI NẾ Ạ Ự Ệ
Đề tài: phân lớp dữ liệu với KNN
STT Người thực hiện Nội dung công việc Kết quả đạt được Phương pháp thực hiện
1
Dương quang tiến
Đào quang trung
Phạm khánh linh
Lập kế hoạch làm bài tập lớn, thực hiện nghiên cứu phát biểu bài toán.
Kế hoạch chi tiết công việc.
Tìm hiểu tài liệu, thảo luận nhóm.
2 Dương quang tiến
Tìm hiểu về thuật toán KNN
Tổng quan về quy trình của thuật toán KNN, ưu và nhược điểm của thuật toán.
Tìm hiểu tài liệu, thảo luận nhóm.
3
Dương quang tiến
Đào quang trung
Phạm khánh linh
Tìm hiểu và cài đặt thuật toán KNN Tiến hành các bước thu thập, tiền xử lý dữ liệu; sử dụng các công cụ phù hợp để thực nghiệm/xây dựng chương trình.
Mô hình KNN xây dựng trên ngôn ngữ Python Sử dụng mô hình để phát triển chương trình.
Tìm hiểu tài liệu, thảo luận nhóm Sưu tầm ví dụ.
5 Đào quang trung
Tổng hợp nội dung
Chạy đánh giá chương trình.
Nội dung hoàn chỉnh
về bài báo cáo Sản phẩm demo chương trình
Tổng hợp kết quả thu được từ những lần làm việc trước đó 6
Đào quang trung
Phạm khánh linh
Xây dựng bài thuyết trình từ nội dung tổng hợp.
Bài thuyết trình để trình bày về kết quả học tập của nhóm.
Họp nhóm.
Trang 4L I C M NỜ Ả Ơ
Lời đầu tiên cho phép chúng em gửi lời cảm ơn sâu sắc tới các thầy cô trong khoa Công nghệ thông tin - Trường Đại học Phương Đông Hà Nội, những người đã hết mình truyền đạt và chỉ dẫn cho chúng em những kiến thức, những bài học quý báu và bổ ích Đặc biệt chúng em xin được bày tỏ sự tri ân và xin chân thành cảm ơn giảng viên Dương Thị Bình người trực tiếp hướng dẫn, chỉ bảo chúng
em trong suốt quá trình học tập, nghiên cứu và hoàn thành được bài tập lớn này Sau nữa, chúng em xin gửi tình cảm sâu sắc tới gia đình và bạn bè vì đã luôn bên cạnh khuyến khích, động viên, giúp đỡ
cả về vật chất linh tinh thần cho chúng em trong suốt qui trình học tập để chúng em hoàn thành tốt việc học tập của bản thân
Trong quá trình nghiên cứu và làm đề tài, do năng lực, kiến thức, trình độ bản thân chúng
em còn hạn hẹp nên không tránh khỏi những thiếu sót và chúng em mong mỏi nhận được sự thông cảm và những góp ý từ quý thầy cô cũng như các bạn trong lớp Chúng em xin chân thành cảm ơn!
Dương Quang Tiến Đào Quang
Linh
Dĩ nhiên! Dưới đây là một lời mở đầu cho cuốn sách của bạn về phân loại thư, email rác với sự
áp dụng của thuật toán K-NN:
L i m đ uờ ở ầ
Trong thế giới kỹ thuật số ngày nay, thư điện tử (email) đã trở thành một phương tiện truyền thông không thể thiếu và phổ biến trong cuộc sống hàng ngày của chúng ta Tuy nhiên, cùng với
sự tiện lợi của việc gửi và nhận thư điện tử, cũng xuất hiện những thách thức mới, trong đó bao gồm cả vấn đề về email rác (spam), các thông điệp không mong muốn và gây phiền toái Việc phân loại thư, email rác trở thành một bài toán quan trọng và cấp thiết trong việc quản lý thư điện tử hiệu quả Với sự phát triển của các kỹ thuật học máy và xử lý ngôn ngữ tự nhiên, chúng ta có thể áp dụng những giải pháp hiện đại để tự động phân loại email và loại bỏ các thông điệp không mong muốn một cách nhanh chóng và hiệu quả
Trong, chúng em sẽ khám phá cách áp dụng thuật toán K-NN (K-nearest neighbors) - một trong những thuật toán học máy phổ biến nhất - để giải quyết bài toán phân loại thư, email rác Chúng
em sẽ tập trung vào cách thuật toán này hoạt động, cách triển khai và tối ưu hóa nó để đạt được hiệu suất tốt nhất trong việc phân loại thư điện tử
Trang 5Phân loại thư rác là một trong những bài tốn quan trọng trong lĩnh vực xử lý và kiểm sốt tốt hịm thư của bạn Nhiệm vụ của bài tốn này là phân loại mỗi email vào hai nhĩm: email cĩ giá trị và email rác Để giải quyết vấn đề này, chúng ta cĩ thể áp dụng các mơ hình học máy như Nạve Bayes, Cây quyết định, Mạng Neuron nhân tạo và SVM Tuy nhiên, trong đồ án này, chúng em sẽ tập trung vào việc áp dụng thuật tốn K-NN để phân loại thư rác
Mơ hình phân loại thư rác bằng thuật tốn K-NN dễ cài đặt và thường cho kết quả khá tốt cho bài tốn này, dù độ chính xác vẫn phụ thuộc vào dữ liệu huấn luyện Chính vì vậy, trong phạm vi đồ
án này, chúng tơi đã chọn đề tài "Phân loại thư rác bằng K-NN" để nắm vững kiến thức về quy trình phát triển mơ hình học máy và hiểu rõ hơn về cách thuật tốn K-NN được áp dụng vào bài tốn thực tế
Cụ thể, đồ án này sẽ được tổ chức trong ba chương chính:
1 Tổng quan về b.i tốn phân loại thư rác v thuật tốn K-NN
2 Xây dựng mơ hình phân loại thư rác bằng K-NN
3 Thử nghiệm v đánh giá hiệu suất của mơ hình
CHƯƠNG 1 : BÀI TỐN PHÂN LOẠI EMAIL RÁC
1.1,tổng quan về phân loại email rác
Trong thời đại số hĩa hiện nay, việc xử lý lượng lớn thư điện tử đã trở thành một phần khơng thể thiếu của cuộc sống cá nhân và cơng việc Tuy nhiên, cùng với sự tiện lợi của việc trao đổi thơng tin qua email, cũng xuất hiện những vấn đề mới, trong đĩ bao gồm cả email rác - những thơng điệp khơng mong muốn
và khơng được yêu cầu Bài tốn phân loại thư, email rác ra đời nhằm giải quyết vấn đề này và mang lại
sự thuận tiện và hiệu quả trong việc quản lý thư điện tử
1.1.1 Tính chất v sự cần thiết của b.i tốn phân loại thư, email rác
Bài tốn phân loại thư, email rác địi hỏi sự kết hợp giữa kiến thức về xử lý ngơn ngữ tự nhiên (NLP), học máy và các kỹ thuật phân loại Việc áp dụng thuật tốn K-NN là một lựa chọn hợp lý, bởi nĩ dựa trên việc phân loại dựa trên các điểm dữ liệu gần nhất trong khơng gian đặc trưng
1.1.2 Bản chất của quá trình phân loại thư, email rác v$i thuật tốn K-NN
Quá trình phân loại thư, email rác sử dụng thuật tốn K-NN bao gồm việc tính tốn khoảng cách giữa các email dựa trên các đặc trưng đã được trích xuất, sau đĩ dựa vào các điểm dữ liệu gần nhất để quyết định nhãn của email đĩ Điều này giúp hệ thống phân loại tự động học và điều chỉnh dựa trên các mẫu mới và
sự thay đổi trong cách thức gửi email rác
Trang 61.2 B.i tốn về phân loại email rác
1 Khái Niệm
Phân loại thư, email rác là quá trình tự động hoặc bán tự động của việc phân loại các email đến thành các nhĩm khác nhau dựa trên tính chất của nội dung hoặc nguồn gốc của email Mục tiêu chính của phân loại thư, email rác là phân biệt giữa các email cĩ giá trị và mong muốn với những email khơng mong muốn hoặc cĩ hại
1.2.2 Nguyên tắc hoạt động cơ bản
Quá trình phân loại email rác bắt đầu bằng việc thu thập dữ liệu từ các email đã được phân loại trước đĩ thành hai nhĩm: email cĩ giá trị và email rác Dữ liệu này bao gồm nội dung của email, địa chỉ email gửi, tiêu đề và các đặc trưng khác
Sau khi thu thập dữ liệu, hệ thống sẽ tiến hành trích xuất các đặc trưng từ các email như từ khĩa, độ dài của email, sự xuất hiện của các liên kết và các đặc điểm khác cĩ thể giúp phân biệt giữa email cĩ giá trị
và email rác
Tiếp theo, hệ thống sử dụng các đặc trưng đã trích xuất để xây dựng một mơ hình phân loại Mơ hình này
cĩ thể sử dụng các thuật tốn máy học như Nạve Bayes, K-NN, SVM hoặc các phương pháp khác để phân loại mỗi email vào đúng nhĩm
Sau khi mơ hình đã được xây dựng, hệ thống sẽ tiến hành kiểm tra và đánh giá hiệu suất của nĩ bằng cách
sử dụng dữ liệu kiểm tra, tức là các email mà hệ thống chưa biết trước Dựa trên kết quả kiểm tra, hệ thống cĩ thể được tinh chỉnh và cải tiến để nâng cao hiệu suất phân loại email rác trong tương lai
Trang 7Hình 1 Quy trình lọc thư rác tiêu chuẩn Quy trình 6 thành phần nêu trên là quy trình tiêu chuẩn, tuy nhiên trong thực tế, những bộ lọc thư rác có thể không chỉ bao gồm các thành phần này
Trong đó, một trong những phương pháp phổ biến từ phía người dùng được Gmail sử dụng là danh sách đen, chặn những địa chỉ hoặc tên miền mà người dùng cho là thư rác Phương pháp khác cũng được sử dụng rộng rãi là lọc dựa trên quy luật Trong Gmail, người dùng có thể tạo danh sách trắng (whitelist) cho những người gửi đã biết trước Ngoài ra, Outlook cho phép người dùng chặn những email có ngôn ngữ lạ thông qua Danh sách mã hóa đã bị chặn (Blocked Encodings List)
Mặc dù các bộ lọc thư rác ngày càng phát triển, nhưng người dùng vẫn có thể bị ngập trong thư rác mỗi ngày, vì kẻ phát tán thư rác có thể nhanh chóng thích ứng các kỹ thuật mới, cũng như do sự thiếu linh hoạt của các bộ lọc thư rác để thích nghi với sự thay đổi
Trang 8CHƯƠNG 2: PHÂN LOẠI EMAIL RÁC VỚI K-NN
2.1 Thuật toán KNN
2.1.1 Gi$i thiệu về thuật toán KNN
K- Nearest Neighbors (KNN) là một thuật toán học máy có giám sát (supervised learning) có thể được sử dụng trong cả phân loại (classification) và hồi quy (regression) Có thể nói KNN là một thuật toán xuất phát từ thực tế cuộc sống Mọi người có xu hướng bị ảnh hưởng bởi những người xung quanh họ Hành vi của chúng ta được hướng dẫn bởi những người bạn mà chúng ta đã lớn lên cùng Cha mẹ chúng ta cũng hình thành nhân cách của chúng ta theo một số cách Nếu bạn lớn lên với những người yêu thể thao, rất có thể bạn sẽ yêu thể thao, tất nhiên cũng có những ngoại lệ KNN hoạt động với nguyên lý tương tự Giá trị của một điểm dữ liệu được xác định bởi các điểm dữ liệu xung quanh nó
Nếu bạn có một người bạn rất thân và dành phần lớn thời gian cho anh ấy/cô ấy, bạn sẽ có chung sở thích và tận hưởng những điều giống nhau Đó là KNN với K = 1
Nếu bạn luôn đi chơi với một nhóm 5 người, mỗi người trong nhóm có ảnh hưởng đến hành
vi của bạn và bạn sẽ là trung bình của 5 Đó là KNN với K = 5
Trang 9số Nếu K được đặt là 5, các lớp của 5 điểm gần nhất sẽ được kiểm tra Dự đoán đưa ra kết quả lớp của điểm dữ liệu dựa vào lớp nào chiếm đa số trong 5 điểm gần nhất Tương tự, hồi quy KNN lấy giá trị trung bình của 5 điểm gần nhất
Làm thế nào các điểm dữ liệu được xác định là gần nhau? Trước hết cần đo khoảng cách giữa các điểm dữ liệu Có nhiều phương pháp để đo khoảng cách Phép đo khoảng cách Euclid là một trong những phép đo khoảng cách được sử dụng phổ biến nhất Hình dưới đây cho thấy cách tính khoảng cách Euclid giữa hai điểm trong không gian 2 chiều
Khoảng cách Euclid được tính toán bằng công thức sau:
d=√(x2−x1) +(2 y2− 1)y 2
Hình 3 Khoảng cách Euclid
Khoảng cách Euclide trong không gian hai chiều gợi nhớ cho chúng ta định lý Pytago nổi tiếng: khoảng cách giữa 2 điểm chính là cạnh huyền của tam giác, còn chênh lệch giữa tọa độ x, y của
2 điểm dữ liệu chính là 2 cạnh góc vuông
Trang 102.1.2 Quy trình của thuật toán KNN
Bước 1: Xác định tham số K = số láng giềng gần nhất
Bước 2: Tính toán khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong training data
Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần nhất với đối tượng cần phân lớp
Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất
Bước 5: Dựa vào phần lớn lớp của K để xác định lớp cho đối tượng cần phân lớp
2.1.3 Ưu điểm v nhược điểm của thuật toán
KNN
Ưu điểm
Đơn giản và dễ giải thích
Không dựa trên bất kỳ giả định nào, vì thế nó có thể được sử dụng trong các bài toán phi tuyến tính
Hoạt động tốt trong trường hợp phân loại với nhiều lớp
Sử dụng được trong cả phân loại và hồi quy
Nh ượ c đi m ể
Trở nên rất chậm khi số lượng điểm dữ liệu tăng lên vì mô hình cần lưu trữ tất cả các điểm
dữ liệu
Tốn bộ nhớ
Nhạy cảm với các dữ liệu bất thường (nhiễu)
2.2 Xử lý email rác
2.2.1 Khái niệm về email rác
Hiện nay vẫn chưa có một định nghĩa hoàn chỉnh, chặt chẽ về thư rác Có quan
điểm coi thư rác là những thư quảng cáo không được yêu cầu (Unsolicited Commercial
Email-UCE), có quan điểm rộng hơn cho rằng thư rác bao gồm thư quảng cáo, thư quấy
rối, và những thư có nội dung không lành mạnh (Unsolicited Bulk Emai -UBE) Sau đây
Trang 11sẽ đưa ra một định nghĩa thông dụng nhất về thư rác và giải thích các đặc điểm của nó để
phân biệt thư rác với thư thông thường :
Thư rác (spam mail) là những bức thư điện tử không yêu cầu, không mong muốn
và được gửi hàng loạt tới người nhận
Một bức thư nếu gửi không theo yêu cầu có thể đó là thư làm quen hoặc thư được
gửi lần đầu tiên, còn nếu thư được gửi hàng loạt thì nó có thể là thư gửi cho khách hàng
của các công ty, các nhà cung cấp dịch vụ Vì thế một bức thư bị coi là rác khi nó không
được yêu cầu, và được gửi hàng loạt
Tuy nhiên yếu tố quan trọng nhất để phân biệt thư rác với thư thông thường là nội
dung thư Khi một người nhận được thư rác, người đó không thể xác định được thư đó
được gửi hàng loạt hay không nhưng có thể xác định được đó là thư rác sau khi đọc nội
dung thư Đặc điểm này chính là cơ sở cho giải pháp phân loại thư rác bằng cách phân
tích nội dung thư
2.1.2 Phương pháp xử lý email rác
A) Tiền xử lý d' liệu:
Tiền xử lý dữ liệu: in ra nội dung của dữ liệu, biểu diễn, mô tả dữ liệu có chiều bao nhiêu, bao nhiêu hàng, bao nhiêu cột
Tách từ
Loại bỏ Stopwords
Loại bỏ các kí tự đặc biệt
Chuẩn hóa từ
B) Xác định đặc trưng v lựa chọn đặc trưng
B.1)Xác định các đặc trưng
Xác định từng đặc trưng dựa trên nội dung của các email Các đặc trưng có thể bao gồm từ khóa phổ biến trong thư rác, cụm từ có tính phân biệt cao, độ dài của email, tỷ lệ các liên kết, và tỷ lệ các ký tự viết hoa
B.2)Lựa chọn đặc trưng
Sử dụng kỹ thuật như PCA (Principal Component Analysis) hoặc LDA (Linear Discriminant Analysis) để giảm số lượng đặc trưng và tăng tính khả thi cho việc huấn luyện và phân loại
Trang 12C)Trích xuất đặc trưng
C.1 Trích xuất đặc trưng (feature extraction):
Biến đổi dữ liệu thô về cùng một chuẩn vector, giữ được những đặc trưng của dữ liệu thô ban đầu
Sử dụng phương pháp Bag of Words (BoW) hoặc TF-IDF để biểu diễn các email dưới dạng vector
D Chuẩn bị d' liệu cho K-NN
D.1 Chuẩn bị d' liệu cho K-NN:
Chuẩn hóa các giá trị đặc trưng để chúng có cùng phạm vi giá trị và có thể được sử dụng trong thuật toán K-NN một cách hiệu quả
CHƯƠNG 3 THỰC NGHIỆM PHÂN LOẠI EMAIL RÁC VỚI KNN
3.1 Thiết kế chương trình
Phần mềm cần thiết để xây dựng chương trình:
Python : bản mới nhất
Visual studio code : bản mới nhất
Link download python : https://sourceforge.net/projects/weka/download
Link download visual studio code : https://code.visualstudio.com/download
Các thư viện cần dùng trong chương trình :
Numpy , nltk ,pandas,matplotlib seaborn scikit-learn
Cách cài : pip install pandas numpy matplotlib seaborn scikit-learn(chạy Terminal)
KẾT LUẬN
Trong quá trình thực hiện bài tập lớn này, chúng em đã cố gắng hết sức để tìm hiểu và học hỏi nhưng vì khả năng còn giới hạn nên có những sai sót và không thể giải quyết được tất cả các vấn
Trang 13đề Chúng em rất mong nhận được sự thông cảm và tiền bạc từ quý thầy cô chúng em xin chân thành cảm ơn
Những kết quả đạt được:
Tôi có một kiến thức cơ bản tốt về thuật toán KNN
Từ việc làm được những điều đó, tôi đã có thêm kiến thức về Machine Learning và ứng dụng của Machine Learning trong cuộc sống công nghệ hiện đại
Làm quen với ngôn ngữ lập trình Python
Những hạn chế:
Thuật toán KNN phụ thuộc nhiều vào hệ số K
Kết quả đưa ra có thể thay đổi (vì các điểm xét được lấy ngẫu nhiên)
Chúng em chưa thực sự hiểu hết về bài toán