Phân loại thư rác tự động là một lĩnh vực được chú ý nhất trong những năm gần đây. Để phân loại người ta sử dụng nhiều cách tiếp cận khác nhau như dựa trên từ khĩa, dựa trên ngữ nghĩa các từ cĩ tần số xuất hiện cao, mơ hình Maximum Entropy, tập thơ ... Một số lượng lớn các phương pháp phân loại đã được áp dụng như: mơ hình hồi quy [Fuhr et al,1991], phân loại dựa trên láng giềng gần nhất (k-nearest neighbors) [Dasarathy, 1991], phương pháp dựa trên xác suất Nạve Bayes [Joachims, 1997], cây quyết định [Fuhr et al,1991], học luật quy nạp [William & Yoram, 1996], mạng nơron (neural network) [Wiener et al, 1995], học trực tuyến [William & Yoram, 1996], và máy vector hỗ trợ (SVM-support vector machine) [Vapnik, 1995]. Hiệu quả của các phương pháp này rất khác nhau ngay cả khi áp dụng cho tiếng Anh.
Cách tiếp cận dùng hệ miễn dịch nhân tạo cho lọc thư rác được đề xuất đầu tiên bởi Terri Oda [11] cho phép hệ thống lọc thư rác cĩ khả năng học trong mơi trường động với nội dung thay đổi liên tục theo thời gian thực. Tuy nhiên, kỹ thuật áp dụng cịn đơn giản nên tốc độ chậm và độ chính xác cịn hạn chế.
Sau đĩ Tarek M Mahmoud và Ahmed M Mahfouz đã áp dụng AIS để lọc thư rác SMS. SMS là dạng tin nhắn văn bản được gửi giữa các điện thoại, thơng thường các tin nhắn này khơng cĩ tệp tin đính kèm nên dung lượng nhỏ vì vậy quá trình huấn luyện dễ dàng hơn, tuy nhiên việc huấn luyện và so
khớp phải diễn ra trong khoảng thời gian ngắn vì SMS là dạng tin nhắn được diễn ra trong thời gian thực [Tarek M Mahmoud, 2012].
Chƣơng 3
CÀI ĐẶT THỬ NGHIỆM
Trong chương này, tác giả tiến hành thử nghiệm áp dụng thuật tốn chọn lọc tiêu cực trong hệ miễn dịch nhân tạo cho lọc thư rác trên các bộ cơ sở dữ liệu chuẩn như TREC'07 và SpamBase. Đồng thời, tác giả cũng sử dụng các đánh giá độ chính xác cho phương pháp được đề xuất và so sánh với một số phương pháp lọc thư rác hiện nay. Những phương pháp đánh giá và kết quả trong chương này cĩ thể tìm thấy trong [9], [10] và cơng trình đã cơng bố của nhĩm tác giả.
3.1. Ứng dụng hệ miễn dịch nhân tạo trong lọc thƣ rác
Cuộc đối đầu giữa những kẻ gửi thư rác và các bộ lọc thư rác dường như là khơng thể chấm dứt. Những người phát triển phần mềm lọc thư rác thì cố gắng tìm hiểu một đặc điểm riêng nào đĩ của thư rác và dựa trên những đặc điểm này để lọc thư rác. Nhưng những kẻ phát tán thư rác (spammers) thích nghi rất nhanh với các biện pháp ngăn ngừa thư rác, chỉ một thời gian khơng lâu sau những kẻ gửi thư rác này lại tìm ra được cách khắc phục những đặc điểm đĩ. Như vậy, nĩ sẽ trở thành một vịng luẩn quẩn. Một bộ lọc tốt phải là một bộ lọc kết hợp được các phương pháp lọc để cĩ thể phát huy thế mạnh của mình và khắc phục những nhược điểm của các phương pháp khác.
Xu hướng của một cơng cụ lọc thư rác hiệu quả phải đảm bảo yêu cầu tối thiểu như bộ lọc cĩ thể lọc được nhiều loại thư rác với độ chính xác cao.
3.1.1. Phát biểu bài tốn
Từ bộ CSDL gồm các email SPAM và email HAM, tác giả sử dụng thuật tốn hệ miễn dịch nhân tạo để thiết kế một hệ thống lọc thư rác cĩ khả năng học tốt và hiệu suất cao. Hệ thống gồm hai quá trình sau:
- Quá trình huấn luyện
Input: 5.000 email HAM được chọn ngẫu nhiên từ CSDL TREC'07 để huấn luyện, ℓ và r.
Output: bảng băm A biểu diễn tập bộ dị dạng r-chunk
- Quá trình phân biệt self/nonself (HAM/SPAM)
Input: 9 bộ test với mỗi bộ test gồm 1.000 email ngẫu nhiên được thay đổi tỷ lệ HAM/SPAM tương ứng từ 10% đến 90%
Output: Các giá trị TP, TN, FP, FN tương ứng với mỗi bộ test và ba giá trị trung bình DR (Detection Rate), FPR (False Positive Rate), Acc (Accuracy). Trong đĩ
+ TP: Số lượng email SPAM kết luận đúng + TN: Số lượng email HAM kết luận đúng
+ FP: Số lượng email HAM kết luận sai thành SPAM + FN: Số lượng email SPAM kết luận sai thành HAM và các giá trị trung bình được tính như sau:
DR = TP/(TP + FN) FPR = FP/(TN + FP)
Acc = (TP + TN) / (TP + TN + FP + FN)
3.1.2. Cơ sở dữ liệu TREC'07
Những số liệu về thư rác đã được các chuyên gia, tổ chức hoạt động một cách tích cực bằng các phương pháp khác nhau đã thống kê, xây dựng các cơ sở dữ liệu về thư rác nhằm mục đích cung cấp thơng tin, tạo nguồn dữ liệu thử nghiệm cho việc thiết kế các bộ lọc thư rác thơng qua các kĩ thuật phát hiện và ngăn chặn thư rác.
Bộ dữ liệu TREC'07 lưu trữ 75,419 thư điện tử trong đĩ cĩ 50,199 SPAM và 25,220 HAM. TREC'07 là một trong những bộ dữ liệu về thư điện tử lớn và uy tín nhất hiện nay, rất nhiều nhà khoa học trên thế giới đã và đang sử dụng bộ dữ liệu này để đánh giá các phương pháp lọc thư rác của mình. Chính vì vậy, tác giả đã chọn bộ dữ liệu TREC'07 để thử nghiệm trên hệ thống và đánh giá kết quả với một số phương pháp học máy khác.
3.1.3. Thiết kế phần mềm
Phương pháp lọc thư rác được sử dụng phổ biến trong hầu hết các máy chủ email hiện nay đĩ là phương pháp dựa trên việc thiết lập các quy tắc SpamAssassin và phương pháp thống kê Bayesian. Tuy vậy, các phương pháp này thường chiếm một lượng tài nguyên lớn của máy chủ khi thực hiện quá trình xác minh các thư điện tử gửi đến là email SPAM và email HAM, đặc biệt là đối với những máy chủ cĩ nhiều người dùng và lượng thư điện tử trao đổi là lớn. Phần này trình bày một phương pháp lọc thư rác khá hiệu quả và cĩ thể giảm tải việc tính tốn cho máy chủ email rất nhiều. Đĩ là phương pháp lọc thư rác dựa trên hệ miễn dịch nhân tạo. Đây là một hướng tiếp cận mới và đang được các nhà khoa học trên thế giới quan tâm phát triển.
Ý tưởng của phương pháp là tìm cách xây dựng chương trình lọc thư rác dựa trên thuật tốn AIS cĩ khả năng phát hiện cao. Quá trình thiết kế phần mềm được thực hiện như sau:
Bước 1: Đọc 5.000 email HAM và 5.000 email SPAM ngẫu nhiên từ TREC'07.
Bước 2: Tiền xử lý dữ liệu cho tập các email.
Bước 3: Đọc nội dung 5.000 email HAM sau khi xử lý dưới dạng nhị phân độ dài ℓ.
Bước 5: Tiến hành kiểm thử với bộ dữ liệu test là 1.000 email được lấy ngẫu nhiên từ 10.000 email ban đầu và tính tốn các tham số DR, FPR, Acc.
3.1.4.Phân tích thuật tốn
3.1.4.1. Quá trình tiền xử lý dữ liệu
Trước khi huấn luyện các email được đưa qua bước tiền xử lý như sau: + Loại bỏ các thẻ định dạng HTML trong email
+ Loại bỏ các từ nối câu và các từ khơng cĩ ý nghĩa trong email. + Các ký tự số vì khơng nĩi lên được ý nghĩa của email.
+ Chuyển tồn bộ nội dung email sang dạng nhị phân
3.1.4.2. Quá trình huấn luyện
Input: 5.000 email HAM đã được xử lý.
Output: Tập bộ dị r-chunk
Thuật tốn:
Đọc lần lượt từng email dưới dạng nhị phân độ dài ℓ, với mỗi dãy nhị phân chia thành ℓ-r+1 dãy con với độ dài r để tiến hành xây dựng bảng băm A.
Sau khi xây dựng xong bảng băm, tiến hành đọc các giá trị 0 trên bảng băm, với mỗi vị trí 0 sẽ xây dựng được một bộ dị r-chunk tương ứng bằng cách chuyển giá trị hàng sang dạng nhị phân độ dài r và giá trị cột chính là vị trí cần so khớp.
Kết thúc quá trình huấn luyện ta được tập bộ dị r-chunk và lưu lại thành file r_chunk.txt
Quá trình này được áp dụng theo thuật tốn
3.1.4.3. Quá trình phân biệt self/non-self:
Input: Tập bộ dị r-chunk, tập email test gồm m email HAM và n email SPAM (m + n = 1000 email)
Output: Các đánh giá DR, FPR và Acc.
Thuật tốn:
- Đọc tệp tin r_chunk.txt để lấy ra tồn bộ tập bộ dị - Sử dụng các độ đo sau: TP, TN, FP, FN
- Kiểm tra các email HAM
+ Đọc lần lượt từng email trong m email HAM dưới dạng nhị phân độ dài ℓ.
+ Tồn tại một xâu con cĩ độ dài r trong ℓ-r+1 xâu mà khớp với một bộ dị trong tập bộ dị r-chunk thì tăng giá FP lên một đơn vị (tương ứng với việc kết luận nhầm email đĩ thành SPAM) ngược lại tăng giá trị TN lên một đơn vị (tương ứng với việc kết luận đúng email đĩ là HAM).
- Kiểm tra các email SPAM
+ Đọc lần lượt từng email trong n email SPAM dưới dạng nhị phân độ dài ℓ.
+ Tồn tại một xâu con cĩ độ dài r trong ℓ-r+1 xâu mà khớp với một bộ dị trong tập bộ dị r-chunk thì tăng giá TP lên một đơn vị (tương ứng với việc kết luận đúng email đĩ là SPAM) ngược lại tăng giá trị FN lên một đơn vị (tương ứng với việc kết luận nhầm email đĩ là HAM).
- Các cách đánh giá DR, FPR, Acc được tính theo cơng thức ở trên.
3.1.5. Giao diện chương trình và kết quả
Giao diện chính của chương trình với 5 nút lệnh:
- Random Test: sinh bộ test ngẫu nhiên cho email - Self: Tiến hành đọc các email dùng để huấn luyện - Make Detector: dùng để tạo bộ dị
- Scan: Dùng để quét phân loại các email HAM/SPAM
Hình 3.1. Giao diện chƣơng trình lọc spam trên bộ CSDL TREC'07
Hình dưới mơ tả quá trình huấn luyện và quá trình phân loại 1.000 email bao gồm 500 email HAM và 500 email SPAM.
Hình 3.2. Kết quả quá trình test
Kết quả của 9 bộ test đạt được như trong bảng sau:
Bảng 3.1. Kết quả khi chạy chƣơng trình với 9 bộ test
HAM SPAM TP FP FN TN DR FPR Acc
100 900 894 0 6 100 99.33% 0% 99.40% 200 800 793 0 7 200 99.13% 0% 99.30% 300 700 695 0 5 300 99.29% 0% 99.50% 400 600 596 0 4 400 99.33% 0% 99.60% 500 500 496 0 4 500 99.20% 0% 99.60% 600 400 399 0 1 600 99.75% 0% 99.90% 700 300 297 0 3 700 99.00% 0% 99.70% 800 200 200 0 0 800 100.00% 0% 100.00% 900 100 100 0 0 900 100.00% 0% 100.00%
Average 99.45% 0% 99.67%
3.1.6. Đánh giá
- Về độ chính xác: Chương trình đã đạt được độ chính xác xấp xỉ 100% và phát hiện đúng tuyệt đối một email là HAM.
- Về mặt thời gian chạy: Chương trình Apply NSA for SPAM Filtering chỉ mất trung bình 29 giây để huấn luyện dữ liệu gồm 5.000 email và 10 giây để phân biệt 1.000 email là HAM hoặc SPAM. Chương trình được viết bằng ngơn ngữ C# trong bộ Visual Studio 2013, trên nền .Netframework 4.5 với hệ điều hành Windows 8.1 Pro, Chip Core i5 3210M 2.5GHz, RAM DDR3 2GB.
Bảng 3.2. So sánh kết quả
DR FPR Acc
Trong [10] 98.09% 0% 98.82%
Apply NSA for SPAM Filtering 99.45% 0% 99.67%
- Kết quả này đã được cơng bố trên tạp chí Khoa học cơng nghệ của Đại học Thái Nguyên tập (số 135 (05), 2015, trang 185).
3.2. So sánh với các thuật tốn trên WEKA
3.2.1. Phát biểu bài tốn
ng dụng hệ miễn dịch nhân tạo trong lọc thư rác đã tỏ ra khá hiệu quả trên bộ dữ liệu chứa nội dung các email như TREC'07, cịn đối với bộ dữ liệu chứa các thống kê về email thì kết quả liệu cĩ tốt khơng? Để làm rõ vấn đề này, tác giả đã thiết kế chương trình lọc thư rác với bộ dữ liệu được đưa vào để thử nghiệm là SpamBase, đồng thời cũng so sánh kết quả đạt được với một số phương pháp học máy khác hiện đang được áp dụng trên phần mềm WEKA.
-Số nguyên dương r [7,10], ℓ.
- Cơ sở dữ liệu Spambase Data Set (lưu trong file *.txt)
Output: Kết quả về sự phát hiện email SPAM hay email HAM thể hiện qua 10 lần thử nghiệm với 3 số liệu thống kê trung bình: DR (Detection Rate), FPR (False Positive Rate), Acc (Accuracy).
Chương trình lấy giá trị ℓ chính là độ dài các xâu nhị phân được chuyển đổi từ các số liệu thống kê 57 thuộc tính của từng email (trừ thuộc tính cuối cùng phân biệt email SPAM và email HAM).
Giá trị của r được thử nghiệm lần lượt với các giá trị trong đoạn [7,10].
3.2.2. Cơ sở dữ liệu SpamBase
Cơ sở dữ liệu này bao gồm các số liệu thống kê về cả email HAM và email SPAM. Spambase Data Set chứa kết quả của một cuộc tổng hợp của các chuyên gia về các thư rác từ bưu điện và cá nhân nhận được thư rác. Spambase Data Set cĩ chứa các số liệu thống kê về 58 thuộc tính của 4601 thư điện tử.
Trong 58 thuộc tính của cơ sở dữ liệu này:
- Cĩ 48 thuộc tính đầu “word_freq_” nĩi về tỉ lệ phần trăm các từ trong thư phù hợp với nội dung của thuộc tính nhắc đến.
Ví dụ: word_freq_address là tỉ lệ phần trăm các từ trong thư phù hợp với địa chỉ gửi.
- 6 thuộc tính tiếp theo “char_freq_” là tỉ lệ phần trăm các kí tự trong thư phù hợp với kí tự nhắc đến trong thuộc tính.
Ví dụ: char_freq_! : chỉ tỉ lệ phần trăm kí tự „!‟ cĩ trong thư điện tử. - 3 thuộc tính tiếp theo:
+ Capital_run_length_average: Chiều dài trung bình khơng bị gián đoạn của chuỗi chữ viết hoa.
+ Capital_run_length_longest: Chiều dài lớn nhất khơng bị gián đoạn của chuỗi chữ viết hoa.
+ Capital_run_length_total: Tổng số lượng chữ in hoa trong email. - Thuộc tính cuối cùng là thuộc tính class (phân lớp) nhận giá trị 0 hoặc 1 tương ứng với một email là email HAM hoặc email SPAM.
Danh sách 58 thuộc tính trong cơ sở dữ liệu: 1. word_freq_make 2. word_freq_address 3. word_freq_all 4. word_freq_3d 5. word_freq_our 6. word_freq_over 7. word_freq_remove 8. word_freq_internet 9. word_freq_order 10. word_freq_mail 11. word_freq_receive 12. word_freq_will 13. word_freq_people 14. word_freq_report 15. word_freq_addresses 16. word_freq_free 17. word_freq_business 18. word_freq_email 19. word_freq_you 20. word_freq_credit 21. word_freq_your 22. word_freq_font 23. word_freq_000 30. word_freq_labs 31. word_freq_telnet 32. word_freq_857 33. word_freq_data 34. word_freq_415 35. word_freq_85 36. word_freq_technology 37. word_freq_1999 38. word_freq_parts 39. word_freq_pm 40. word_freq_direct 41. word_freq_cs 42. word_freq_meeting 43. word_freq_original 44. word_freq_project 45. word_freq_re 46. word_freq_edu 47. word_freq_table 48. word_freq_conference 49. char_freq_semicolon 50. char_freq_left_paren 51. char_freq_left_bracket 52. char_freq_exclamation (!)
24. word_freq_money 25. word_freq_hp 26. word_freq_hpl 27. word_freq_george 28. word_freq_650 29. word_freq_lab 53. char_freq_dollar 54. char_freq_pound 55. capital_run_length_average 56. capital_run_length_longest 57. capital_run_length_total 58. class (is SPAM or no
SPAM)
Để đánh giá kết quả của chương trình, tác giả sử dụng phần mềm WEKA, đối chiếu kết quả của thuật tốn so với một số thuật tốn cĩ trong WEKA.
3.2.3. Phần mềm WEKA
WEKA (Waikato Environment for Knowledge Analysis) là phần mềm khai thác dữ liệu thuộc dự án của trường đại học Waikato, New Zealand lần đầu tiên năm 1993. Mục tiêu để xây dựng cơng cụ hiện đại nhằm phát triển các kĩ thuật máy học và áp dụng chúng vào các bài tốn khai thác dữ liệu trong thực tế, sử dụng trong các bài giảng về các thuật giải Machine Learning ở nhiều trường đại học lớn trên thế giới.
WEKA được viết bằng ngơn ngữ Java JDK, cấu trúc gồm hơn 600 lớp tổ chức thành 10 packages.
Với các chức năng chính:
- Khảo sát dữ liệu: Tiền xử lí dữ liệu, phân lớp, gom nhĩm dữ liệu, khai thác luật kết hợp.
- Thực nghiệm mơ hình: cung cấp phương tiện để kiểm chứng đánh giá các mơ hình học.
- Biểu diễn trực quan dữ liệu bằng nhiều dạng đồ thị…
Trong luận văn, chủ yếu sử dụng phần mềm này để khảo sát dữ liệu nhằm so sánh với chương trình đã xây dựng.
Giao diện của phần mềm WEKA:
Hình 3.3. Giao diện phần mềm Weka
Từ giao diện chính của WEKA thực hiện các bước:
- Bước 1. Chọn nút tác vụ Explorer, giao diện Weka Explorer xuất hiện.
- Bước 2. Tại thẻ Preprocess chọn nút Open file… để nạp tệp cơ sở dữ liệu. Thơng thường cơ sở dữ liệu lưu dạng *.arff hoặc *.csv
Hình 3.5. Giao diện Weka Explorer sau khi chọn CSDL Spambase
WEKA sẽ thống kê và đưa ra các thuộc tính cĩ trong cơ sở dữ liệu hiển thị trên giao diện, tại hộp Attributes nhấn nút All để chọn tất cả các thuộc tính.
- Bước 3. Chọn thẻ Classify để chọn sử dụng các phương pháp phân