Giới thiệu

MSc | AI/ML | Cyber Security | DevOps | ITIL | Compliance | Cloud | System | Virtualization | DBA | SAN...

Security/DevSecOps tại VietSunshine CyberSecurity

System & Network Engineer tại HQG

Từng học Thạc sĩ khoa học máy tính - Đại học quốc tế Sài Gòn

Từng học Đại học công nghệ thông tin - ĐHQG TPHCM

Sống tại Hồ Chí Minh, Việt Nam

Đến từ Lộc Ninh, Bình Phước, Việt Nam

Xem nhiều hơn

Bài mới

Series [K8S]: Phần 3 Install Rancher on Kubernetes
Series [K8S]: Phần 2 Install Ceph Cluster Kubernetes
Series [K8S]: Phần 1 Install Kubernetes Cluster v1.28
Series [CA]: Phần 2 Create SAN Certificate
Linux Route Two Card Network
Resize LVM Disk On Redhat
Series [Powershell]: Phần 1 Encrypting Script Using AES
Series [SIEM]: Phần 05 Postman With Qradar API
Series [CA]: Phần 1 Install CA Windows Server

Series [AI/ML]: Phần 1 Học Máy Trong Phân Loại Thư Rác

Lời mở đầu

Trong những năm gần đây, spam hay các thư không mong muốn đã trở thành một vấn nạn và đe dọa khả năng giao tiếp của con người trên kênh liên lạc này, đó là một trong những thách thức lớn mà khách hàng và các nhà cung cấp dịch vụ phải đối phó. Spam đã trở thành một hình thức quảng cáo chuyên nghiệp, phát tán virus, ăn cắp thông tin với nhiều thủ đoạn và mánh khóe cực kỳ tinh vi. Người dùng sẽ phải mất khá nhiều thời gian để xóa những thư “không mời mà đến”, nếu vô ý còn có thể bị nhiễm virus và nặng nề hơn là mất thông tin như thẻ tín dụng, tài khoản ngân hàng qua các thư dạng phishing….Theo báo cáo tình hình thư rác do Kaspersky Lab vừa công bố, tỷ lệ thư rác trong lưu lượng truy cập thư của quý 3/2014 tăng 1,7 % so với quý trướ c, đạt trung bình 66,9%. Ba nguồn phát tán thư rác hàng đầu gồm có Mỹ (14%) và Nga (6,1%) và Việt Nam đứng vị trí thứ 3 với 6%.Để ngăn chặn spam, nhiều tổ chức, cá nhân đã nghiên cứu và phát triển những kỹ thuật phân loại thư thành các nhóm; từ đó xác định, nhận biết giữa thư rác và thư có giá trị. Tuy nhiên, những người tạo nên thư rác luôn tìm mọi cách vượt qua các bộ phân loại này và phát tán chúng. Vì vậy, cần có một hệ thống phân loại đâu là spam mail và đâu là mail tốt.
Xuất phát từ thực trạng đó, tôi chọn hướng nghiên cứu “Ứng Dụng Học Máy Trong Phân Loại Thư Rác” với mục đích tìm hiểu, thử nghiệm một số phương pháp tiếp cận cho bài toán phân loại thư, từ đó ngăn chặn thư spam hiệu quả hơn.

Định Nghĩa Thư Rác

Thư điện tử đã trở thành một ứng dụng không thể thiếu khi Internet và công nghệ mạng phát triển. Thư điêṇ tử (Email) , hay còn gọi là thư, là môṭ hê ̣thống chuyển nhâṇ thư từ qua các mạng máy tính. Thư điện tử là môṭ phương tiện truyền thông tin rất hữu ích.
     Tuy nhiên, trong những năm gần đây, một hình thức mới của thư điện tử đã xuất hiện với số lượng lớn gây phiền hà cho người nhận và thiệt hại không nhỏ cho nền kinh tế gọi là thư rác hay spam emails.Một bức thư được gọi là thư rác chỉ khi nó là thư không yêu cầu và được gửi hàng loạt. Hoặc là những bức thư làm quen, được gửi lần đầu tiên hay bức thư gửi cho khách hành của các công ty, các nhà cung cấp dịch vụ…
     Như vậy, thư rác là thư không yêu cầu và được gửi hàng loạt. Nhưng yếu tố quan trọng nhất để phân biệt thư rác với thư thông thường phải là ở nội dung bức thư. Khi một người nhận được thư rác, người đó không thể xác định được thư có được gửi hàng loạt hay không nhưng có thể nói chính xác đó là thư rác sau khi xem nội dung thư. Đặc điểm này chính là cơ sở để học máy thực hiện phân loại thư rác bằng cách phân tích nội dung thư.

Phân Loại Thư Rác

Việc phân loại thư rác rất quan trọng không chỉ trong lĩnh vực tạo những bộ lọc thư rác phù hợp cho hiệu quả cao mà còn giúp cho việc ban hành các bộ luật chống thư rác thích hợp. Có rất nhiều cách phân loại thư rác. Dưới đây là một số loại điển hình nhất.
Thư rác có thể được phân loại theo mục tiêu của người gửi thư rác. Nhiều người gửi thư rác gửi e-mail hàng loạt vì lý do quảng cáo như gửi quảng cáo thương mại hoặc mời tham gia vào các chiến dịch chính trị, hoặc nhằm mục đích lừa đảo hay phân phối phần mềm độc hại như virus hay trojan. Phần này trình bày các loại thư rác phổ biến và đưa ra số liệu thống kê, nếu có.
Theo Statista , trong năm 2018, 281,1 tỷ thư điện tử được gửi và nhận hàng ngày. Điều này bao gồm hàng tỷ thư quảng cáo được gửi bởi các nhà tiếp thị mỗi ngày. Trong khi nhiều người dùng e-mail tin rằng nội dung như sẽ nằm trong mục thư rác (Spam), hay thư tiếp thị nói chung là vô hại, hoặc chỉ là gây khó chịu cho người dùng. Tính đến quý 2 năm 2018, chỉ 85% thư điện tử tiếp thị nằm trong Hộp thư đến (Inbox) của người dùng và 7% đã bị bộ lọc thư rác bắt được. Tuy nhiên, mọi thứ đang được cải thiện vào năm 2018, tỷ lệ đặt thư rác thương mại đã giảm xuống còn 9%, giảm từ 14% vào năm 2017.

Ứng Dụng Học Máy Trong Phân Loại Thư Rác

Hình 1: Thống kê phân loại các nội dung của thư rác năm 2020

Giới Thiệu Học Máy

Học máy được hiểu là một lĩnh vực con của Trí tuệ nhân tạo (Artificial Intelligence). Nó sử dụng những thuật toán cho phép máy tính có thể học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ ràng.
Học máy là một ứng dụng của trí tuệ nhân tạo (AI) cung cấp cho các khả năng tự động học hỏi và cải thiện từ kinh nghiệm mà không cần lập trình rõ ràng. Học máy tập trung vào việc phát triển các chương trình máy tính có thể truy cập dữ liệu và sử dụng nó để tự học.

Các Thuật Toán Sử Dụng Trong Học Máy Có Giám Sát Lọc Thư Rác Phổ Biến

Thuật Toán NB

Naïve Bayes (NB) là phương pháp phân loại dựa vào xác suất được sử dụng rộng rãi trong lĩnh vực máy học [Mitchell, 1996] [Joachims, 1997] [Jason, 2001], được sử dụng lần đầu tiên trong lĩnh vực phân loại bởi Maron vào năm 1961 [Maron, 1961] sau đó trở nên phổ biến dùng trong nhiều lĩnh vực như trong các công cụ tìm kiếm [Rijsbergen et al, 1970], các bộ lọc thư [Sahami et al, 1998]…
Ý tưởng cơ bản của cách tiếp cận này là sử dụng xác suất có điều kiện giữa từ hoặc cụm từ và chủ đề để dự đoán xác suất chủ đề của một văn bản cần phân loại. Điểm quan trọng của phương pháp này chính là ở chỗ giả định rằng sự xuất hiện của tất cả các từ trong văn bản đều độc lập với nhau. Như thế NB không tận dụng được sự phụ thuộc của nhiều từ vào một chủ đề cụ thể. Chính giả định đó làm cho việc tính toán NB hiệu qủa và nhanh chóng hơn các phương pháp khác với độ phức tạp theo số mũ vì nó không sử dụng cách kết hợp các từ để đưa ra phán đoán chủ đề.

Thuật Toán SVM

Máy vectơ hỗ trợ SVM là một khái niệm trong thống kê khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy. SVM dạng chuẩn nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là một thuật toán phân loại nhị phân. Với một bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó.
Một mô hình SVM là một cách biểu diễn các điểm trong không gian và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các ví dụ luyện tập tới ranh giới là xa nhất có thể. Các ví dụ mới cũng được biểu diễn trong cùng một không gian và được thuật toán dự đoán thuộc một trong hai thể loại tùy vào ví dụ đó nằm ở phía nào của ranh giới.
Các thử nghiệm thực tế cho thấy, phương pháp SVM có khả năng phân loại khá tốt đối với bài toán phân loại văn bản cũng như trong nhiều ứng dụng khác (như nhận dạng chữ viết tay, phát hiện mặt người trong các ảnh, ước lượng hồi quy,…). So sánh với các phương pháp phân loại khác, khả năng phân loại của SVM là tương đương hoặc tốt hơn đáng kể.

Thực Nghiệm & Đánh Giá

Mô Tả Thuộc Tính

Link tải bộ Dataset tại đây

Bộ dữ liệu thực nghiệm sẽ bao gồm 02 thuộc tính chính. Chi tiết các thuộc tính được mô tả ở bảng dưới đây:

STT Tên thuộc tính Giá trị thuộc tính Ý nghĩa thuộc tính
1 Label Spam/Ham Cho biết email thuộc loại là thư rác hay thư bình thường
2 Emailtext Nội dung/thân của email Cho biết nội dung của thư điện tử

Bảng 1: Tập Dữ Liệu Mẫu

Tập dữ liệu thực hiện trong thực nghiệm này là 5572 bản ghi, dưới đây là một vài dữ liệu mẫu:

Label EmailText
ham Go until jurong point, crazy.. Available only in bugis n great world la e buffet… Cine there got amore wat…
ham Ok lar… Joking wif u oni…
spam Free entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121 to receive entry question(std txt rate)T&C’s apply 08452810075over18’s
ham U dun say so early hor… U c already then say…

Bảng 2: Dữ liệu mẫu

Phương Pháp Đánh Giá

Ma Trận Nhầm Lẫn

Tính hiệu quả của giải thuật được đánh giá bởi chỉ số khôi phục (Recall), tỉ lệ chính xác (Precision), và hệ số điều hòa F-measure. Trong đó:

  • TP – True Positives: Tổng số email dự đoán đúng là email sạch
  • TN – True Negatives: Tổng số email đoán đúng là email spam
  • FP – False Positives: Tổng số email dự đoán là email sạch nhưng thực tế là email spam.
  • FN – False Negatives: Tổng số email dự đoán là email spam như thực tế là email sạch.

Tránh Overfitting

Trong nhiều trường hợp, chúng ta có rất hạn chế số lượng dữ liệu để xây dựng mô hình. Nếu lấy quá nhiều dữ liệu trong tập training ra làm dữ liệu validation, phần dữ liệu còn lại của tập training là không đủ để xây dựng mô hình. Lúc này, tập validation phải thật nhỏ để gee được lượng dữ liệu cho training đủ lớn. Tuy nhiên, một vấn đề khác nảy sinh. Khi tập validation quá nhỏ, hiện tượng overfitting lại có thể xảy ra với tập training còn lại. Cross validation sẽ giải quyết vấn đề này.
Cross validation là một cải tiến của validation với lượng dữ liệu trong tập validation là nhỏ nhưng chất lượng mô hình được đánh giá trên nhiều tập validation khác nhau. Một cách thường đường sử dụng là chia tập training ra k tập con không có phần tử chung, có kích thước gần bằng nhau. Tại mỗi lần kiểm thử , được gọi là run, một trong số k tập con được lấy ra làm validate set. Mô hình sẽ được xây dựng dựa vào hợp của k−1 tập con còn lại. Mô hình cuối được xác định dựa trên trung bình của các train error và validation error. Cách làm này còn có tên gọi là k-fold cross validation.
Learning curve là một hàm trong python giúp phát hiện overfitting bằng cách so sánh training accuracy và cross-validation accuracy. Nếu training accuracy tăng cao trong khi cross-validation accuracy giảm dần hoặc không cải thiện nhiều, điều này có thể cho thấy mô hình đang overfitting dữ liệu. Trong trường hợp này, cần thử điều chỉnh các thông số của mô hình, sử dụng regularizations hoặc tăng số lượng dữ liệu để giảm overfitting.
Tuy nhiên, nếu training accuracy và cross-validation accuracy đều tăng một cách đồng đều, điều này cho thấy rằng mô hình đang học tốt và không có overfitting.

Mô Hình Học Máy & Thuật Toán

Giai đoạn 1: Thực hiện xử lí dự liệu đầu vào

Ứng Dụng Học Máy Trong Phân Loại Thư Rác

Hình 5: Quá trình tiền xử lý dữ liệu

  • Sửa lỗi chính tả : Đầu vào là văn bản tinh. Sau bước xử lý này sẽ loại bỏ các lỗi chính tả do người dùng vô tình mắc phải nhằm tăng độ chính xác cho phần tiền xử lý. Thông thường phần dữ liệu đầu vào là chuẩn, do đó số lỗi chính tả gần như không có. Nên việc bỏ qua phần sửa lỗi không ảnh hưởng nhiều so với kết quả trong thực tế. Ví dụ: nếu thư chứa một số từ lỗi như “frei” có thể bị viết sai chính tả thành “free”. Stemmer sẽ ngăn chặn hoặc giảm từ lỗi đó thành từ gốc của nó, tức là “fre”. Do đó, “fre” là từ gốc của cả “free” và “frei”.
  • Đưa về túi từ, loại bỏ các stop words và thay thế các giá trị ham/spam bằng 0 và 1: Túi từ hoặc véc tơ hóa là quá trình chuyển đổi các từ trong câu thành định dạng véc tơ nhị phân. Nó rất hữu ích vì các mô hình yêu cầu dữ liệu ở định dạng số. Vì vậy, nếu từ có mặt trong câu cụ thể đó thì chúng ta sẽ đặt 1 nếu không thì 0. Điều này có thể đạt được bằng “TFidfVectorizer”. Ngoài ra, chúng tôi sẽ xóa những từ không bổ sung nhiều ý nghĩa cho câu của chúng tôi mà theo thuật ngữ kỹ thuật được gọi là “stop_words”. Ví dụ: những từ này có thể là nguyên âm, mạo từ hoặc một số từ thông dụng. Vì vậy, đối với điều này, chúng tôi sẽ thêm một tham số có tên là “stop_words” trong “TFidfVectorizer”.
Kết thúc giai đoạn 1, tập tin dữ liệu đã được xử lí và bắt đầu đưa vào thuật toán huấn luyện

Ứng Dụng Học Máy Trong Phân Loại Thư Rác

Hình 6: Đưa dữ liệu vào xử lí với thuật toán học máy

Bước huấn luyện dữ liệu sẽ cài đặt 2 thuật toán: Naïve Bayes và Support Vector Machine. Đầu vào của bước này là các túi từ được đưa ra từ bước tiền xử lí. Kết quả của bước này là đưa ra mô hình học máy phù hợp với tập dữ liệu đầu vào. Từ mô hình này ta sẽ dự đoán việc phân loại các văn bản đầu vào khác. Đây cũng là bước chính nghiên cứu trong đồ án này. Việc cài đặt thuật toán nào ở đây mang tính cốt lõi của hệ thống .

  • Giai đoạn 2: Tiến hành chia ra 2 tập dữ liệu huấn luyện và kiểm tra qua 2 thuận toán NB và SV

Ứng Dụng Học Máy Trong Phân Loại Thư Rác

Hình 7: Thực hiện xử lí theo mỗi thuật toán và phân loại

Thực Nghiệm

Thực hiện chạy trên google colab

Đường dẫn tải code tại đây

Video demo

Video: Ứng Dụng Học Máy Trong Phân Loại Thư Rác

Kết Quả Thực Nghiệm

So Sánh Các Thuật Toán

Giá trị thử nghiệm Thuật toán NB Thuật toán SVM
Accuracy 95.96% 97,94%
Precision 100% 98.44%
Recall 69.39% 85.71%
F1-Score 81.93% 91.64%

 

Bảng 3: Bảng so sánh kết quả thực nghiệm SVM/NB

Nhận xét: Thuật toán SVM cho kết quả chính xác hơn với các độ đo so với thuật toán NB, tuy nhiên thời gian chạy cho thuật toán SVM cao hơn nhiều lần so với NB

Thuật toán NB
Dự đoán (Ham) Dự đoán (Spam)
Thực tế (Ham) 968 0
Thực tế (Spam) 45 102

 

Bảng 4: Kết quả ma trận confusion_matrix thuật toán NB

Thuật toán SVM
Dự đoán (Ham) Dự đoán (Spam)
Thực tế (Ham) 966 2
Thực tế (Spam) 21 126

 

Bảng 5: Kết quả ma trận confusion_matrix thuật toán SVM

Nhận xét: Kết quả ma trận nhầm lẫn confusion_matrix cho thấy tỉ lệ phân loại email spam và email sạch giữa thực tế và dự đoán ở thuật toán SVM cao hơn so với NB.

Đánh Giá Kết Quả

Theo kết quả thực nghiệm cho thấy phương pháp Naïve Bayes cho kết quả kém hơn so với phương pháp SVM. Tuy nhiên, phương pháp Bayes có ưu thế rõ rệt về tốc độ phân loại do có độ phức tạp tính toán thấp hơn trong khi SVM đòi hỏi khối lượng và thời gian tính toán lớn hơn nhiều. Trong các thử nghiệm, tổng thời gian huấn luyện và phân loại bằng SVM lớn hơn Bayes nhiều lần.
Những phân tích của các tác giả trên đây và thực nghiệm cho thấy SVM có nhiều điểm phù hợp cho việc ứng dụng phân lớp thư điện tử. Và trên thực tế, các thí nghiệm phân lớp thư rác tiếng Anh chỉ ra rằng SVM đạt độ chính xác phân lớp cao và tỏ ra xuất sắc hơn so với các phương pháp phân lớp khác. Đó cũng chính là lý do tại sao SVM đang là lựa chọn cho các bài toán phân loại thư rác.
Hi vọng bài viết “Ứng Dụng Học Máy Trong Phân Loại Thư Rác” chia sẻ những kiến thức hữu ích để các bạn có cái nhìn về học máy trong phân loại thư rác cũng như các ứng dụng mà nó mang lại.

 

Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận

LƯỢT TRUY CẬP

Đang Online 0
Hôm nay 7
Hôm qua 22
Tổng truy cập 29567

Xem nhiều

Series [K8S]: Phần 3 Install Rancher on Kubernetes
Series [K8S]: Phần 2 Install Ceph Cluster Kubernetes
Series [K8S]: Phần 1 Install Kubernetes Cluster v1.28
Series [CA]: Phần 2 Create SAN Certificate

Video