Chương 2. Các kỹ thuật lọc thư rác thư rác
2.2. Các kỹ thuật lọc thư rác
2.2.3. Các kỹ thuật lọc thư rác thông minh
Các phương pháp phát hiện thư rác thông minh đang được đánh giá là cách hiệu quả nhất và được sử dụng rộng rãi trong lĩnh vực này. Các phương pháp phát hiện thông minh có khả năng tự động hóa cao và không cần nhiều sự can thiệp của con người. Các phương pháp này được đặc trưng bởi độ chính xác cao và có thể thích ứng với những biến đổi về nội dung thư điện tử và sở thích của người dùng. Theo quan điểm của các phương pháp tiếp cận thông minh, phân loại và phát hiện thư rác là một vấn đề phân loại điển hình, có thể được giải quyết bằng các phương pháp học máy có giám sát. Thông thường, các phương pháp học máy có giám sát trích xuất thông tin dưới dạng các tính năng từ tập huấn luyện và xây dựng các bộ phân loại dựa trên các tính năng được trích xuất theo các nguyên tắc học tập tương ứng. Ngoại trừ sự tham gia của con người trong quá trình huấn luyện, quá trình học tập và phân loại quy trình được hoàn thành tự động. Trong khi đó, mô hình học tập có thể thích ứng với những thay đổi động của nội dung thư điện tử và sở thích của người dùng thông qua điều chỉnh các tập huấn luyện và cập nhật các bộ phân loại [12]. Rất nhiều phương pháp học máy cổ điển đã được áp dụng thành công trong việc phát hiện thư rác, bao gồm Naive Bayes, SVM, k-Hàng xóm gần nhất (k-NN), Mạng thần kinh nhân tạo (ANN) và Tăng cường [12].
2.2.3.1. Lọc thư dựa trên mơ hình phân lớp thống kê Nạve Bayes Naive Bayes là một phương pháp thống kê cơ bản dựa trên xác suất được đề xuất bởi Sahami cùng cộng sự [14]. Thuật toán dự đoán và phân loại thư mới là thư rác hay hợp pháp bằng cách sử dụng “training set”- là một tập dữ liệu mẫu và được “huấn luyện”. Từ đó, thuật toán sẽ sử dụng thông tin từ dữ liệu mẫu để đưa ra thống kê và so sánh, đối chiếu các đặc điểm của thư mới với các bộ mẫu [2].
Bộ lọc thống kê dựa trên "Định lý xác suất Nạve Bayes" được coi là rất hữu ích trong việc phát hiện thư rác từ những năm 1998-2000 [2]. Hiện nay, nó vẫn rất phổ biến và được triển khai rộng rãi và sử dụng phương pháp thống kê toán học và vectơ đặc trưng– ví dụ như là cụm từ “ưu đãi”
Cơng thức Nạve Bayes là:
) Pr(
)
| Pr(
) Pr(
)
| Pr(
) Pr(
)
| ) Pr(
|
Pr( W S S W H H
S S W W
S +
= 4
Với:
P(S) là xác suất xuất hiện của tổng số thư rác P(H) là xác suất xuất hiện của tổng số thư hợp lệ
P(W|H) là xác suất từ, cụm từ đó xuất hiện trong thư hợp lệ P(W|S) là xác suất từ, cụm từ đó xuất hiện trong các thư rác Với P(S|W) là xác suất thư có chứa từ “ưu đãi” là thư rác Cho ví dụ cụ thể hơn như sau:
- Số lượng thư thư rác là 5000. Trong đó 600 thư điện tử chứa từ “ưu đãi”
- Số lượng thư hợp lệ là 500, trong đó 9 thư có từ “ưu đãi”
Như vậy xác suất một thư chứa từ “ưu đãi” có khả năng là spam được tính như sau:
𝑃(𝑆|𝑊) = (600/5000) X (5000/5500) (600
5000) x (5000
5500) + ( 9
500) x (500 5500)
≈ 88%
Trên thực tế, để xem xét một thư có phải là thư rác hay không, ta phải xem xét rất nhiều từ ngữ, dẫn đến việc tính toán xác suất khả năng của một thư có phải là thư rác hay không như sau:
) 1 ( ) 1 )(
1
( 1 2
2 1
2 1
N N
N
p p
p p
p p
p p p p
−
−
− +
= 5
Với: p là xác suất là thư rác của một thư điện tử đang kiểm tra.
p1 là xác suất P(S|W1) thư rác có chứa từ thứ nhất p2 là xác suất P(S|W2) thư rác có chứa từ thứ hai pn là xác suất P(S|W2) của thư rác có chứa từ thứ n.
Thuật tốn Nạve Bayes cho phân loại thư rác như sau:
Thuật tốn 1. Nạve Bayes
1. Nhập tập thư điện tử
2. Trích xuất văn bản thành các token thành phần wi
3. Xác suất spam cho mỗi token là P (S/wi), xác suất ham cho mỗi token là P(H|wi) 4. Lưu giá trị xác suất spam cho mỗi token này
5. for each (M) do //chạy vòng lặp duyệt thư từ đầu đến cuối 6. while (M not end) do //chạy vòng lặp cho đến cuối thư 7. Chạy thư cho đến token kế tiếp wi
8. Tìm trong database xác suất spam của P(S|wi)
9. Tính xác suất spam của thư M là P(S|M) và xác suất ham của thư P(H|M) 10. Tính toán khả năng xác suất thư rác của toàn thư điện tử P(M)
11. if P(M) > ngưỡng
12. thư được đánh dấu là spam 13. else if
14. thư được đánh dấu là ham 15. end if
16. end if 17. end while 18: end for
19. return kết quả phân loại thư rác.
20. Kết thúc chương trình
Thuật toán trên trải qua những bước sau:
Giai đoạn 1. Huấn luyện
Đầu vào: Thư cần kiểm tra là thư rác hay không.
Phân tích cú pháp mỗi email thành các từ, cụm từ hay còn gọi là token.
Tính toán xác suất cho các token này.
Giai đoạn 2. Lọc
Đối với mỗi thư M, duyệt tuần tự từ đầu cho đến cuối thư và tính toán xác suất là spam của từng token wi, sau đó tính toán xác suất ham của từng token.
Sau đó tính tổng giá xác suất của thư, xác tổng xác suất P(M) lớn hơn ngưỡng, thư sẽ bị đánh dấu là thư rác khác, nếu không sẽ được đánh dấu là thư hợp lệ.
Đầu ra: Trả lại kết quả phân loại là thư rác hay thư hợp lệ.
2.2.3.2. Máy hỗ trợ vectơ
Máy hỗ trợ vectơ (Support Vectơ Machine, viết tắt là SVM) là một phương pháp học máy có giám sát dựa trên giảm thiểu rủi ro cấu trúc [22], là một nhóm các thuật toán được đề xuất bởi Vapnik năm 1995 để giải quyết các vấn đề phân loại và hồi quy. SVM tạo danh mục bằng một bộ phân loại nhị phân. Ưu điểm của SVM là nó không bị ảnh hưởng bởi kích thước của không gian đối tượng, thay vào đó tập trung vào việc tối ưu hóa ranh giới giữa những điển hình tích cực và tiêu cực trong các tài liệu huấn luyện. Phương pháp này cố gắng tránh sử dụng nhiều tài liệu huấn luyện, chỉ sử dụng những tài liệu gần ranh giới phân loại, để tạo ra một biên giới ngăn cách giữa các mẫu tích cực và tiêu cực. SVM có thể học bộ phân loại đa thức, hàm cơ sở xuyên tâm và mạng nơron sigmoid ba cấp, do đó có được khả năng học lớn.
SVM được ứng dụng trong việc cung cấp giải pháp cho các vấn đề lập trình bậc hai có các ràng buộc về đẳng thức và bất đẳng thức tuyến tính bằng mặt siêu phẳng. SVM vẽ một đường hoặc một siêu phẳng chia một không gian ra làm 2 không gian phụ, một không gian phụ chứa các vec tơ thuộc 1 nhóm, không gian kia chứa các vec tơ thuộc nhóm còn lại. Những vec tơ sẽ biểu diễn văn bản huấn luyện và văn bản sẽ được phân chia vào nhóm định phân loại, trong trường hợp lọc thư rác là thư hợp lệ hoặc thư rác.
Mặc dù SVM có thể không nhanh bằng các phương pháp phân loại khác, nhưng thuật toán có độ chính xác cao vì khả năng mô hình hóa các đường biên giới đa chiều không tuần tự hoặc đơn giản. SVM không dễ bị ảnh hưởng bởi một tình huống hay mô hình phức tạp chẳng hạn như có nhiều tham số so với số lượng quan sát. Những chất lượng làm cho SVM trở thành thuật toán lý tưởng để ứng dụng trong các lĩnh vực nhận dạng chữ ký điện tử, phân loại văn bản, nhận dạng giọng nói.
1) SMSVM (SVM phân chia mềm): Vì không thể luôn luôn có sự phân tách rõ, SMSVM cố gắng phân chia rõ ràng nhất có thể đối với các mẫu ví dụ,
trong khi cố gắng tối đa hóa khoảng cách giữa các ví dụ đã được phân chia rõ ràng [13].
2) Bộ phân loại kết hợp: Tretyakov đã thử kết hợp hai bộ lọc, cả hai đều hiển thị kết quả xác suất dương tính giả thấp [13]. Sự kết hợp của SMSVM và Nạve Bayes đã được thử nghiệm trên tập tin PU1. Kết quả thực nghiệm chỉ ra 94,4% phân loại đúng, 12,7% sai và 0,0% dương tính giả. Trong khi đó, độ chính xác của SMSVM là 98,1%, với 1,6% dương tính giả và 2,3% âm tính giả. Điều chỉnh tham số của SMSVM giảm số dương tính giả xuống 0,0%, nhưng điều này dẫn đến giảm rõ rệt độ chính xác xuống 90,8% và sai âm tính giả đến 21%. Do đó, phương pháp này có thể giải quyết vấn đề dương tính giả trong khi vẫn duy trì độ chính xác ở mức chấp nhận được [13].
Do khả năng giải quyết các vấn đề phân loại phi tuyến bằng cách áp dụng thủ thuật kernel, SVM gần đây đã trở nên phổ biến. Nguyên tắc của SVM là xây dựng một hypherlane để đảm bảo rằng khoảng cách giữa hai loại cấu trúc là tối đa. Trong khi tối đa hóa khoảng cách, SVM vẫn cần giảm nguy cơ điểm bị phân loại sai nhóm. Bằng cách này, chúng ta có thể thấy SVM thực chất là một phương pháp tối ưu hóa bậc hai.
Thuật toán Máy hỗ trợ vectơ được sử dụng để phân loại thư rác như sau:
Thuật toán 2. SVM
1. Nhập thư mẫu để phân loại
2. Tập dữ liệu huấn luyện S, hàm kernel, {c1, c2, …cnum} and {γ1, γ2, …γnum}.
3. Số lượng của hàng xóm gần nhất là k 4. for i:=1 to n //chạy vòng lặp n lần 5. set C= Ci // đặt giá trị C= Ci 6. for j:=1 to q //cho chạy j q lần 7. Đặt γ=γ;
8. Tạo ra phân loại SVM f(x) thông qua tham số merger (C, γ);
9. if (f (x) là hàm phân biệt được tạo ra đầu tiên 10. f (x) là hàm SVM lý tưởng nhất f *(x) 11. else
12. So sánh hàm phân loại f(x) với hàm SVM lý tưởng nhất hiện tại, sử dụng xác thực chéo k lần.
13. Giữ lại bộ phân loại chính xác hơn 14. end if
15. end for 16. end for
17. return kết quả phân loại thư điện tử là spam hay ham 18. Kết thúc chương trình
Thuật toán SVM để phân loại thư như sau:
Đầu vào: Thư điện tử cần phân loại
Đầu ra: Kết quả phân loại là thư rác hay thư hợp lệ.
Ở đây C biểu thị tham số chi phí để điều chỉnh lỗi mô hình phát sinh khi một hàm gần khớp với một tập hợp điểm dữ liệu giới hạn bằng cách phạt lỗi.
Trong quá trình huấn luyện, giả sử chúng ta có một tập dữ liệu cần được đào tạo, theo giả thuyết chỉ có sự hợp nhất của tham số (C, γ) có khả năng tạo ra bộ phân loại SVM ưu việt nhất.
Tìm kiếm theo lưới trên tham số C và γ là kỹ thuật khả thi duy nhất thường được áp dụng trong đào tạo SVM để có được sự hợp nhất của tham số này. Gán hàm SVM lý tưởng nhất cho hàm SVM đầu tiên.
Ước tính xoay vòng k-lần được sử dụng trong tìm kiếm lưới để chọn bộ phân loại SVM với ước tính chính xác nhất.
Mỗi lần, giá trị hàm SVM lý tưởng nhất f*(x) được so sánh và tính toán lại, để tìm được bộ phân loại chính xác hơn.
Cuối cùng, kết thúc chương trình, bộ phân loại chính xác nhất sẽ được sử dụng để xác định thư điện tử là thư rác hay không.