Phân tích thuật tốn

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số thuật toán lọc thư rác và ứng dụng trong lọc email nội bộ (Trang 39)

3.4.4.1Quá 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.4.4.2Quá 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 CHUNK_DETECTOR_NSA.

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:

- 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. 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.4.5. Đá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 PNSA 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ả

R FPR Acc

Trong [10] 98.09% 0% 98.82%

Apply PNSA for SPAM Filtering 99.45% 0% 99.67%

3.5. So sánh với các thuật tốn trên WEKA

3.5.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.

Input:

-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.5.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ử.

- 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 24. word_freq_money 25. word_freq_hp 26. word_freq_hpl 27. word_freq_george 28. word_freq_650 29. word_freq_lab 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 (!) 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.5.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:

Hinh 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

Hình 3.4 Giao diện Weka Explorer

- 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.

Hình 3.6 Phân loại dữ liệu

- Bước 4. Chọn hàm, luật,… phân loại tại mục Classify nhấn nút Choose. Thiết lập một số tùy chọn tại mục Test options, ở đây ta chọn sử dụng phương pháp Cross-validation.

- Bước 5. Nhấn nút Start để thực hiện, và theo dõi kết quả tại vùng Classifier output.

3.2.4. Thiết kế phần mềm

Việc thử nghiệm chương trình được thực hiện theo quy tắc: Tenfold cross validation, thực hiện như sau:

- Bước 1: Chia các email thường trong file nguồn (HAM.txt) ngẫu nhiên thành 10 phần và các email SPAM trong file nguồn (SPAM.txt) thành

10 phần tương ứng được 10 file email HAM và 10 file email SPAM. - Bước 2: Đọc số liệu trong 9 file email thường để huấn luyện.

- Bước 3: Tiến hành kiểm tra (testing), thực hiện với 1 file email thường cịn lại và tất cả các email SPAM. Số lượng các email HAM và email SPAM mà chương trình phát hiện được sẽ được tính tốn quy đổi ra 3 số liệu:

DR = TP/(TP + FN) FPR = FP/(TN + FP) Acc = (TP + TN) /(TP + TN + FP + FN)

Chương trình thực hiện lặp bước hai và ba mười lần, mỗi lần sẽ tính tốn và cho ra 3 số liệu trên. Sau đĩ lấy giá trị trung bình mười lần tính tốn.

3.2.5 Phân tích thuật tốn kết hợp chọn lọc tích cực và chọn lọc tiêu cực PNSA

3.2.5.1 Quá trình chia file nguồn (Split file)

Input: file chứa số liệu thống kê 58 thuộc tính của email HAM - HAM.txt Output: 10 file email HAM: HSub 1.txt, HSub 2.txt, …, HSub 10.txt Thuật tốn

Trong cơ sở dữ liệu Spambase Data Set sử dụng cĩ số liệu thống kê từng thuộc tính của 4601 email ghi trên từng dịng. Trong đĩ, cĩ 1813 email SPAM và 2788 email HAM, ta tạo 2 file HAM.txt chứa 2788 email HAM và SPAM.txt chứa 1813 email SPAM.

Sử dụng nút Open File HAM trên giao diện để tìm đường dẫn tới file HAM.txt

Quá trình chia như sau:

- Kiểm tra trong thư mục bin\Debug đã cĩ các file HSub i.txt và SSub i.txt (i=1,…,10) chưa, nếu chưa cĩ thì tạo các file này.

- Lần lượt đọc từng dịng trong file HAM.txt, sinh ngẫu nhiên một số nn[1,10] ghi dịng dữ liệu trên vào file: HSub nn.txt.

- Đĩng các file vừa tạo.

3.2.5.2 Quá trình huấn luyện – Tạo tập bộ dị (Training)

Input: Chọn 9 trong 10 file: HSub i.txt (i=1,…,10).

Output: Tập bộ dị lưu trong bảng băm kích thước: 2r.(ℓ-r+1). Thuật tốn

Quá trình huấn luyện như sau:

- Đọc lần lượt các dịng của 9 file đầu vào, từ đĩ tạo mảng chuỗi lưu trữ giá trị của 57 thuộc tính (trừ thuộc tính cuối).

- Thống kê lại các chuỗi thuộc tính sao cho khơng cịn các giá trị trùng nhau. - Chuyển đổi theo quy tắc các dãy thuộc tính sang dạng các dãy nhị

- Mỗi thuộc tính của từng email sẽ ứng với một dãy nhị phân, kết hợp các dãy nhị phân của 57 thuộc tính lại ta được một dãy nhị phân của từng email và giá trị của các dịng dữ liệu trong các file khi chuyển sang dạng nhị phân sẽ cĩ độ dài như nhau.

- Duyệt ℓ - r + 1 dãy con độ dài r của từng dãy nhị phân, áp dụng cách tính tốn của phương pháp tạo tập bộ dị bằng bảng băm để xây dựng bảng A.

3.2.5.3 Quá trình kiểm tra – phân biệt HAM/SPAM (testing)

Input: Bảng băm đã tạo; File email HAM cịn lại và file emailSPAM.txt Output: Các số liệu: Acc, DR, FPR.

Thuật tốn

Thiết lập các thơng số sau cĩ giá trị 0: TN, FP, TP, FN, Acc, DR, FPR. *) Kiểm tra khả năng phát hiện email HAM

- Đọc lần lượt từng dịng dữ liệu trong file email HAM cịn lại, ta dựng dãy nhị phân dựa vào mảng chứa các dãy nhị phân đã tạo được ở quá trình huấn luyện cho từng dịng dữ liệu. Từ đĩ ta cĩ được dãy nhị phân của từng email.

- Chuyển ℓ - r + 1 dãy nhị phân con độ dài r của từng email từ hệ nhị phân sang hệ cơ số 10 lưu bằng số nguyên k.

+ Nếu xuất hiện bất kì một trường hợp A[k, j]= 0 (các đoạn bit từ j đến bit thứ j + r - 1 với j=1,…, ℓ - r + 1) thì tăng giá trị FP thêm 1 (kết luận email đang kiểm tra là SPAM).

+ Nếu tồn bộ A[k, j]= 1 thì tăng giá trị TN thêm 1 (kết luận email đang kiểm tra là HAM).

*) Kiểm tra khả năng phát hiện email SPAM

- Đọc lần lượt từng dịng dữ liệu trong file thư SPAM: SPAM.txt, ta dựng dãy nhị phân dựa vào mảng chứa các dãy nhị phân đã tạo được ở quá trình huấn luyện cho từng dịng dữ liệu. Từ đĩ ta cĩ được dãy nhị phân của từng email.

- Chuyển ℓ - r + 1 dãy nhị phân con độ dài r của từng email từ hệ nhị phân sang hệ cơ số 10 lưu bằng số nguyên k.

+ Nếu xuất hiện bất kì một trường hợp A[k, j]= 0 (các đoạn bit từ j đến bit thứ j + r - 1 với j=1,…, ℓ - r + 1) thì tăng giá trị TP thêm 1 (kết luận email đang kiểm tra là SPAM).

+ Nếu tồn bộ A[k, j]= 1 thì tăng giá trị FN thêm 1 (kết luận email đang kiểm tra là HAM).

*) Sau 2 quá trình kiểm tra trên, tính tốn 3 thơng số: DR, FPR, Acc.

3.2.6 Giao diện chương trình và kết quả

Hình 3.7 Giao diện chương trình

- Hộp Select a value r: Đặt giá trị cho r. - Nút Test:

+ Tạo tập bộ dị từ các file email HAM.

+ Cho file email HAM cịn lại (khơng sử dụng để tạo bộ dị) và file email SPAM qua tập bộ dị thực hiện so khớp.

+ Tính tốn và kết luận về khả năng phát hiện của tập bộ dị, hiển thị kết quả tại vùng Results.

- Nút Exit: Thốt khỏi chương trình.

Sau đây là kết quả thử nghiệm trên các hàm, luật,… trong WEKA và chương trình sử dụng PNSA trên cơ sở dữ liệu Spambase.

Với 100% email HAM và email SPAM đưa vào quá trình phân loại. Với giá trị r = 8, chương trình sử dụng PNSA cho kết quả như sau:

Trong 2788 email HAM, chương trình sử dụng NSA cho kết quả: - Số lượng email HAM phân loại đúng là TN = 2668.

- Số lượng email phân loại sai thành email SPAM là FP = 120. Trong 1813 email SPAM, chương trình sử dụng PNSA cho kết quả:

- Số lượng email SPAM phân loại đúng là TP = 1499.

- Số lượng email phân loại sai thành email HAM là FN = 314. Và các kết quả:

- DR: 82.67% - FPR: 4.31% - Acc: 90.56%

Các phương pháp phân loại trong WEKA đều sử dụng tồn bộ 2788 email HAM và 1813 email SPAM vào quá trình kiểm tra (phát hiện, phân loại) nên trong chương trình PNSA cũng sẽ sử dụng tồn bộ các email HAM và email SPAM thay vì chỉ sử dụng file email HAM chưa dùng vào quá trình huấn luyện + email SPAM. (Đơn vị tính 3 thơng số DR, FPR, Acc: %).

Phương pháp TP TN FN FP DR FPR Acc BayessianLogisticRegression 1758 1986 55 802 96.97 28.77 81.37 NaiveBayesUpdateable 1725 1923 88 865 95.15 31.03 79.29 bayes.DMNBtext 1617 2662 196 126 89.19 4.52 93.00 functions.logistic 1607 2645 206 143 88.64 5.13 92.41 functions.RBFNetwork 1568 2143 245 645 86.49 23.13 80.66 funtions.Spegasos 1544 2661 269 127 85.16 4.56 91.39 lazy.TB1 1592 2585 221 203 87.81 7.28 90.78 misc.HyperPipes 163 2777 1650 11 8.99 0.39 63.90 rules.ComnunctiveRule 1276 2437 537 351 70.38 12.59 80.70 trees.RandomTree 1621 2563 192 225 89.41 8.07 90.94 PNSA 1499 2668 314 120 82.67 4.31 90.56

Dựa vào bảng trên ta thấy:

- Phương pháp PNSA cho kết quả chính xác hơn 90% nằm

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số thuật toán lọc thư rác và ứng dụng trong lọc email nội bộ (Trang 39)

Tải bản đầy đủ (PDF)

(58 trang)