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.