Tải bản đầy đủ (.pptx) (17 trang)

slike thuyết trinh báo cáo đề tài phân loại thư rác dùng thuật toán nave bayes cải

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.45 KB, 17 trang )

Các thành viên:
Nguyễn Đình Dũng 20086079
Nguyễn Thành Lâm 20081487
Vũ Đông Lâm 20081496
Đoàn Ngọc Sơn 20082211
Trần Huy Hưng 20081307
“Đề tài: PHÂN LOẠI THƯ RÁC DÙNG THUẬT TOÁN NAÏVE
BAYES CẢI TIẾN của PAUL GRAHAM”

Thư rác:
- Chứa các quảng cáo sản phẩm, dịch vụ, đăng kí website trả phí,… được gửi với số lượng lớn và có
giá trị thấp
- Gây phiền toái, mất thời gian cho việc sắp xếp, tìm kiếm thư cá nhân
- Mất thông tin cá nhân, thông tin tài khoản, thông tin thẻ tín dụng,… và các hình thức lừa đảo qua
mạng
Thư rác – Tác hại thư rác

Tốc độ tăng trưởng của thư rác: chiếm tỉ lệ lớn trong tổng số thư được gửi đi trên phạm vi
toàn cầu  …
Thư rác – tác hại thư rác

Đối với các email cá nhân thì phương pháp lọc thư rác phổ biến hiện nay là “phân loại qua nội
dung của các email” bằng việc ứng dụng các phương pháp phân loại văn bản.

Phân loại email thực chất là phương pháp “phân loại văn bản hai lớp” dựa vào nội dung của
các email được gửi đến.

Trong đề tài này nhóm em xin trình bày một phương pháp phân loại văn bản khá phổ biến
“Naive Bayes”
Bài toán Phân loại thư rác


Cơ sở của phương pháp phân loại văn bản Naive Bayes là chủ yếu dựa trên các giả định của
Bayes.

Với mỗi văn bản D (document), người ta sẽ tính cho mỗi loại một xác suất mà tài liệu D có thể
thuộc vào lớp tài liệu đó bằng việc sử dụng luật Bayes:

Tài liệu D sẽ được gán cho lớp tài liệu nào có xác suất hậu nghiệm cao nhất tức là lớp Ci nào có
giá trị

P(C
i
| D) cao nhất trong tất cả các lớp Ci
Bài toán Phân loại văn bản

Do bài toán PLTR chính là bài toán PLVB với 2 lớp là SPAM và NON-SPAM (HAM) nên có thể
áp dụng thuật toán NB của PLVB sang PLTR.

Nguyên tắc tính các xác suất bằng thuật toán Bayes:

- Giả sử nội dung của mỗi thư điện tử là: content

- Lớp thư rác kí hiệu là: spam

- Lớp thư hợp lệ kí hiệu là: ham

- Word1, word2, word3…wordm là các từ đặc trưng xuất hiện trong content


cần tính: Xác suất để một thư điện tử là thư rác: P(spam|content)
Thuật toán Naïve Bayes trong PLTR


Trong đó total được xác định như sau:

Total = P(content | spam)*P(spam) + P(content | ham)*P(ham)

P(spam) = total spam / total messages

P(ham) = total ham / total messages


ĐẾM TẦN SỐ XUẤT

XUẤT HIỆN CỦA TỪ,

ĐẾM SỐ THƯ mỗi loại.
Thuật toán Naïve Bayes trong PLTR

Theo tác giả của bài viết Paul Graham, để giải quyết bài toán thư rác, ta vẫn
có thể sử dụng thuật toán Naïve Bayes với một vài thay đổi so với thuật toán
ban đầu.

Ý tưởng cơ bản của thuật toán cải tiến này là sử dụng xác suất kết hợp của
các từ xuất hiện trong mail.
Thuật toán Naïve Bayes của Paul Graham

Một người có chiều cao trên 1m9 thì xác suất anh ta có chơi bóng rổ là 60%.
Một người đang cầm 1 quả bóng rổ thì xác suất anh ta chơi bóng rổ lên đến
80%. Hỏi một người vừa cao trên 1m9, vừa cầm bóng rổ trên tay thì xác suất
anh ta chơi bóng rổ là bao nhiêu?


Bài toán trên cho ta một cách hiểu dễ dàng nhất về khái niệm xác suất kết
hợp. Nếu gọi a, b là hai xác suất đơn. Thì xác suất kết hợp của chúng sẽ được
tính bằng:

ab / (ab + (1-a)*(1-b))


Xác suất kết hợp = 0.6*0.8/(0.6*0.8 + 0.4*0.2) = 0.857
Xác suất kết hợp

Tổng quát hóa công thức xác suất kết hợp của các xác suất đơn p1, p2, …, pn:

p1*p2*…*pn / (p1*p2*…*pn +(1-p1)*(1-p2)*…*(1-pn))

Từ đó, có thể suy ra cách áp dụng xác suất kết hợp vào việc tính xác suất là thư rác của một email sẽ
bằng xác suất kết hợp của các từ trong email đó với giả thiết các từ độc lập xác suất với nhau. Dễ
thấy một mail các có nhiều từ có xác suất là thư rác cao thì giá trị
của xác suất kết hợp cũng sẽ cao
Xác suất kết hợp và thuật toán của PG

Từ tập dữ liệu mẫu là các ƒle text (mỗi ƒle chứa nội dung của một email) và một ƒle index lưu giữ
thông tin về nhãn đúng của từng email (dùng cho việc tối ưu tham số và tạo báo cáo), ta chia các ƒle
text (email) ra làm 2 tập: tập huấn luyện (Training Set) và tập kiểm tra (Test Set)

Đọc nội dung của các email trong Training Set, đọc ƒle index để tìm nhãn đúng của mỗi email. Nếu
một email là SPAM thì ghi thêm nội dung của mail này (không bao gồm tiêu đề và các thông tin khác)
vào ƒle SPAM.txt, ngược lại nội dung của mail sẽ được ghi thêm vào ƒle HAM.txt.

Sau khi tiến hành đọc này, ta thu được 2 ƒle có kích thước tương đối lớn. Mục đích của bước lưu tất
cả nội dung mail của mỗi nhóm (SPAM vs HAM) vào 1 ƒle lớn là để tiện cho việc đếm tần số và tính xác

suất. Đến đây, ta bắt đầu đếm số lần xuất hiện của một từ trong mỗi nhóm SPAM vs. HAM, từ đó tính
ra xác suất từ đó xuất hiện trong SPAM. Sau đó lưu các giá trị xác suất này vào một danh sách được sắp
xếp theo giá trị xác suất (kiểu SortedList) và gọi danh sách này là Bảng xác suất.
Thuật toán NB cải tiến – Training Phrase

Xác suất một từ xuất hiện trong thư rác được tính bởi công thức:

P (SPAM|w) = P(w|SPAM) / ((P(w|SPAM) + P(w|HAM)

Trong đó:

- P(w|SPAM) = số lần xuất hiện của w trong SPAM / số từ trong tập SPAM

- P(w|HAM) = số lần xuất hiện của w trong HAM / số từ trong tập HAM

Xác suất của toàn bộ email sẽ được tính dựa vào xác suất của 15 từ “đáng quan tâm” nhất trong
thư đó (15 most interesting words) chứ không phải của tất cả các từ trong thư. Trong đó, mức độ
đáng quan tâm của mỗi từ được tính dựa vào độ chênh lệch về xác suất P(SPAM|w) với giá trị
trung lập 0.5, tức là đây là 15 từ đặc trưng cho email này, các giá trị xác suất này rất gần giá trị xác
suất tuyệt đối 0 hoặc 1 và có ảnh hưởng lớn đến việc phân loại email đó. Con số 15 cũng được
Paul Graham lựa chọn, có thể thay đổi để đánh giá hiệu quả theo tham số này.
Thuật toán NB cải tiến – Training Phrase

Sau khi xong xác suất là thư rác của toàn bộ email,cần một giá trị ngưỡng để thực hiện điều này.
Lẽ ra việc chọn ngưỡng sẽ thuộc về pha tối ưu (Cross Validation) dựa vào việc đánh giá hiệu quả
của pha huấn luyện với các giá trị ngưỡng khác nhau (trong bài toán Học máy thì ngưỡng là một
tham số học – learning parameter - cần được xác định trong pha Tối ưu)

bỏ qua


Lấy giá trị ngưỡng được chọn = 0.9, nghĩa là xác suất một email là SPAM: P(SPAM|Mail) > 0.9
thì thư đó sẽ được phân loại là thư rác, trái lại nó sẽ là thư thường.
Thuật toán NB cải tiến – Training Phrase

Công việc: nạp tất cả các email trong tập Test vào bộ lọc thư rác, để bộ lọc phân loại và
trả về nhãn của mỗi email dựa trên kinh nghiệm của nó - những gì mà bộ lọc đã được
“học” từ các ví dụ trong tập huấn luyện - để đánh giá các email mới mà nó “chưa được
học”.

Cuối cùng là so sánh kết quả nhãn mà bộ lọc trả về với nhãn đúng của mỗi email được
lưu trong ƒle index để đưa ra đánh giá hiệu quả thuật toán phân loại bằng cách thống
kê và viết báo cáo
Thuật toán NB cải tiến – Test Phrase

-Áp dụng thuật toán NB cải tiến

-Công việc của nhóm: tìm tập mẫu khác, phân chia tập mẫu thành các tập Training Set
và Test Set có kích thước khác nhau để đánh giá và so sánh hiệu quả của thuật toán,
thiết kế thêm tính năng kiểm tra hàng loạt Test Batch và tự động so khớp kết quả nhãn
thu được để đưa ra các chỉ số đặc trưng về hiệu năng: Precision và Recall
Demo bộ lọc thư rác SpamFilterSample

Để chương trình có thể chạy thì cần có thư mục \Test Data chứa:

Tập dữ liệu mẫu: 6000 ƒle, mỗi ƒle lưu nội dung một email.

File index.txt: lưu nhãn đúng của mỗi email trong tập mẫu,

Các ƒle SPAM.txt, HAM.txt, SPAM2000.txt, HAM2000.txt: lưu các tập huấn luyện với kích thước tương ứng
4000 thư và 2000 thư đầu tiên trong tập mẫu.


File ProbList.txt lưu trữ Bảng xác suất, sinh ra khi thực hiện nạp dữ liệu huấn luyện.

File Result.txt lưu kết quả gán nhãn do bộ lọc thực hiện khi kiểm tra hàng loạt (Test Batch)
Hướng dẫn sử dụng chương trình:
Cảm ơn mọi người đã lắng nghe 
-The end-

×