Tải bản đầy đủ (.pdf) (20 trang)

Ứng dụng phân loại thư rác dùng NavieBayesClassifier

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 (992.47 KB, 20 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ





TIỂU LUẬN MÔN HỌC
MÁY HỌC



TÌM HIỂU
NAÏVE BAYES CLASSIFIER VÀ
ỨNG DỤNG TRONG PHÂN LOẠI
THƯ RÁC



Giảng viên:
TS. Đoàn Thanh Nghị

Nhóm thực hiện:
Võ Thị Hằng
Nguyễn Thị Bích Tuyền
Nguyễn Văn Vũ

An Giang, Năm 2014


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 1



Mục lục

I. Tìm hiểu thư rác và một số phương pháp lọc thư rác 3
1. Định nghĩa thư rác: 3
2. Phân loại thư rác: 3
3. Các phương pháp lọc thư rác: 3
II. Naïve Bayes classifier 5
1. Định lý Bayes 5
2. Naïve Bayes classifier 6
III. Ứng dụng trong bài toán phân loại thư rác 11
1. Biễu diễn bài toán 11
2. Các bước của thuật toán trong phân loại thư rác 11
3. Minh họa bằng ví dụ 12
IV. Cài đặt đoạn code 15
1. Các hàm chính 15
2. Các bước hực hiện huấn luyện và phân loại bằng đoạn code 16
3. Các file đươc tạo ra bởi đoạn code 16
V. Kết luận và hướng phát triển 18




Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 2

LỜI NÓI ĐẦU
Trong thời kỳ phát triển như hiện nay thì công nghệ internet đóng vai trò hết sức
quan trong cho sự thúc đẩy phát triển kinh tế, xã hội của tất cả các nước trên thế giới.
Công nghệ Internet đã mang lại sự tiện dụng trong việc trao đổi thông tin giữa con người

và con người trên toàn cầu. Sự ra đời của thư điện tử (Electronic Mail – Email) tại viện
Công nghệ Massachusetts vào năm 1965 đánh dấu sự ra đời của một trong những khái
niệm quan trọng nhất của tương lai. Trải qua 40 năm tồn tại và phát triển, Email đã có
nhiều bước thăng trầm, để trở thành công cụ giao tiếp phổ biến và rộng rãi nhất thế giới
ngày nay. Nhưng mặt trái của nó chính là môi trường thư rác (Spam) cũng phát triển
mạnh… Nó là một gánh nặng cho các server mail, làm giảm tốc độ đường truyền
internet, gây phiền toái cho tất cả những người nhận được nó, hay các thư mang nội
dung với mục đích tấn công ăn cắp thông tin hoặc phá hoại gây thiệt hại cho người dùng,
gây thiệt hại rất lớn về mặt kinh tế.
Sự hiện diện của Spam làm giảm sự tin tưởng của người dùng vào hệ thống mạng.
Do đó, chống thư rác hiện nay là mối quan tâm lớn của các nước, các tổ chức trên thế
giới nhằm đảm bảo an toàn, an ninh thông tin. Các nhà nghiên cứu đã đưa ra một số
phương pháp khác nhau để hổ trợ cho việc ngăn chặn và lọc thư rác. Trong đó, phương
pháp phân loại Naïve Bayes là một phương pháp được ứng dụng để lọc thư rác dựa theo
nội dung thư và đã đạt được hiệu quả rất cao.
Từ đó, dưới sự hướng dẫn tận tình của Thầy TS. Đoàn Thanh Nghị trong học
phần Máy học, sau khi kết thúc học phần, với một lượng kiến thức nhất định, nhóm
chúng tôi chọn chủ đề “Tìm hiểu Naïve Bayes classifier và ứng dụng trong phân loại
thư rác” nhằm mục đích tìm hiểu rõ hơn về phương pháp phân loại Naïve Bayes và cách
mà bộ phân loại Naïve Bayes học và thực hiện phân loại thư rác như thế nào, kết hợp
cài đặt một đoạn code để mô tả cách học và phân loại đó.



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 3

I. Tìm hiểu thư rác và một số phương pháp lọc thư rác
1. Định nghĩa thư rác:
Thư rác (spam) là thư điện tử, tin nhắn được gửi đến người nhận mà người nhận

đó không mong muốn hoặc không có trách nhiệm phải tiếp nhận theo quy định của pháp
luật. Thư rác bao gồm thư điện tử rác và tin nhắn rác.
2. Phân loại thư rác:
Có nhiều cách phân loại thư rác:
 Dựa trên kiểu phát tán thư rác: Tính tới thời điểm hiện tại, thư rác có thể bị
gửi thông qua thư điện tử, nhóm thảo luận (newsgroups), điện thoại di động (Short
Message Serveice – SMS) và các dịch vụ gửi tin nhắn trên mạng (như Yahoo
Messenger, Windows Messenger…).
 Dựa vào quan hệ với người gửi thư rác: bao gồm người lạ mặt, bạn bè, người
quen và các dịch vụ quyên góp giúp đỡ…
 Dựa vào nội dung của thư rác: các kiểu nội dung phổ biến như thư về thương
mại, thư về chính trị, thư về công nghệ, chuỗi thư (chain email) và các loại khác (như
thư phát tán virus…).
 Dựa trên động lực của người gửi: Thông thường, thư rác được gửi đi cho
những mục đích quảng bá thông tin. Ngoài ra còn có một số loại thư rác được gửi tới
một người nhận xác định nào đó nhằm mục đích phá vỡ và gây cản trở công việc của
người nhận hay mạng của nhà cung cấp dịch vụ thư điện tử (ESP) được gọi là “bom
thư”. Thư rác còn được cố ý gửi đi nhằm thông báo tin sai lệch, làm xáo trộn công việc
và cuộc sống của người nhận.
Sự phân loại thư rác rất quan trọng không chỉ trong lĩnh vực tạo những bộ lọc thư
rác có hiệu quả cao mà còn giúp cho việc ban hành các bộ luật chống thư rác phù hợp.
3. Các phương pháp lọc thư rác:
 Lọc thư rác thông qua việc đưa ra luật lệ nhằm hạn chế, ngăn chặn việc gửi
thư rác: Ban hành một số chỉ lệnh, đưa ra các quy phạm và chỉ dẫn đối với các vấn đề
thương mại điện tử, thông tin điện tử, bảo hộ dữ liệu.
 Lọc thư dựa trên địa chỉ IP: Dựa vào địa chỉ IP của người gửi để xác định thư
đó bị ngăn chặn hoặc cho qua. Có hai cách để thực hiện việc lọc thư: một là duy trì một


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị

Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 4

danh sách các địa chỉ IP bị chặn; thứ hai là sử dụng một danh sách các địa chỉ IP cho
phép qua.
 Lọc thư dựa trên chuỗi hỏi/đáp (Challenge/Response filters): Đặc trưng của
phương pháp này là khả năng tự động gửi thư hồi đáp cho người gửi để yêu cầu một số
hành động chắc chắn về việc gửi thư của họ.
 Phương pháp lọc dựa trên mạng xã hội: Các nghiên cứu gần đây đã bắt đầu
khai thác thông tin từ mạng xã hội cho việc xác định thư rác bằng cách xây dựng một
đồ thị (các đỉnh là địa chỉ email, cung được thêm vào giữa 2 node A và B nếu giữa A
và B có sự trao đổi thư qua lại). Người ta đã sử dụng một số tính chất đặc trưng của
mạng xã hội để xây dựng một công cụ lọc thư rác.
 Phương pháp lọc nội dung: Phương pháp này dựa vào nội dung và chủ đề bức
thư để phân biệt thư rác và thư hợp lệ. Phương pháp này có ưu điểm đó là chúng ta có
thể dễ dàng thay đổi bộ lọc để nó có thể lọc các loại thư rác cho phù hợp. Nhược điểm
của phương pháp này là: do biết được cách thức lọc nội dung nên các spammer luôn
luôn thay đổi hình thức nội dung của thư rác để có thể qua mặt các bộ lọc.
Phương pháp lọc nội dung để phân loại thư rác là phương pháp đã và đang được
quan tâm, nghiên cứu và ứng dụng nhiều nhất. Trong đó, Naïve Bayes classifier là một
trong những phương pháp phân loại được áp dụng nhiều và mang lại hiệu quả đáng kể.



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 5

II. Naïve Bayes classifier
1. Định lý Bayes
Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi
biết sự kiện liên quan B đã xảy ra. Xác suất này được ký hiệu là P(A|B), và đọc là “xác

suất của A nếu có B”. Đại lượng này được gọi xác suất có điều kiện hay xác suất hậu
nghiệm vì nó được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đó.
Theo định lí Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu tố:
 Xác suất xảy ra A của riêng nó, không quan tâm đến B. Kí hiệu là P(A) và
đọc là “xác suất của A”. Đây được gọi là xác suất biên duyên hay xác suất tiên nghiệm,
nó là “tiên nghiệm” theo nghĩa rằng nó không quan tâm đến bất kỳ thông tin nào về B.
 Xác suất xảy ra B của riêng nó, không quan tâm đến A. Kí hiệu là P(B) và
đọc là “xác suất của B”. Đại lượng này còn gọi là hằng số chuẩn hóa (normalising
constant), vì nó luôn giống nhau, không phụ thuộc vào sự kiện A đang muốn biết.
 Xác suất xảy ra B khi biết A xảy ra. Kí hiệu là P(B|A) và đọc là “xác suất của
B nếu có A”. Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A đã xảy ra.
Khi biết ba đại lượng này, xác suất của A khi biết B cho bởi công thức:
)(
)()|(
)|(
BP
APABP
BAP 

hay
)()|()()|( APABPBPBAP 

Định lý Bayes cũng thường được viết dưới dạng:
)()|()()|(),(),()(
CCC
APABPAPABPBAPBAPBP 

hay
)()|()()|(
)()|(

)|(
CC
APABPAPABP
APABP
BAP



Trong đó
C
A
là biến cố bù của biến cố A (thường được gọi là “không A”). Tổng
quát hơn với {A
i
} tạo thành một phân hoạch các biến cố, với mọi A
i
trong phân hoạch,
ta có:


j
jj
ii
i
APABP
APABP
BAP
)()|(
)()|(
)|(


Công thức này còn được biết dưới tên là công thức xác suất đầy đủ.


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 6

2. Naïve Bayes classifier
Phân loại là một vấn đề cơ bản trong lĩnh vực máy học và khai khoáng dữ liệu.
Mục đích của một thuật toán phân loại là xây dựng một bộ phân lớp từ một tập các ví
dụ huấn luyện đã được gán nhãn lớp. Thông thường, một mẫu ví dụ E được thể hiện bởi
một bộ các giá trị thuộc tính (x
1
, x
2
, …, x
n
), với x
i
là giá trị của thuộc tính A
i
và cho C
là một tập các nhãn lớp {c
1
, c
2
, …, c
m
}.
Naïve Bayes classifier là một trong những bộ phân loại trong thống kê Bayes dựa

trên Định lý Bayes. Nó có thể dự đoán được xác suất của các lớp bộ phận chẳng hạn như
nó có thể dự đoán được xác suất mà một ví dụ đã cho thuộc vào một lớp nào đó. Điểm
đặc biệt của Naïve Bayes là giả định rằng sự ảnh hưởng của một thuộc tính là độc lập
với giá trị của các thuộc tính khác trong một phân lớp đã cho. Giả thiết này được gọi là
độc lập về điều kiện, điều này đã làm cho việc tính toán trở nên dễ dàng hơn. Và cũng
chính vì vậy mà nó được xem là “Naïve” (ngây thơ).
Chúng ta có thể hình dung Naïve Bayes classifier hoạt động như sau:
(1) Cho T là tập các mẫu ví dụ huấn luyện đã được gán nhãn lớp và m lớp C
1
, C
2
,
…, Cm. Mỗi mẫu ví dụ được biểu diễn bởi một vectơ n chiều X = (x
1
, x
2
, …, x
n
) miểu
tả n giá trị được đo của n thuộc tính tương ứng X
1
, X
2
, …, X
n
.
(2) Cho một mẫu ví dụ X, bộ phân loại sẽ dự đoán X thuộc vào lớp mà có xác
suất hậu nghiệm cao nhất với điều kiện X. Tức là X được xác định thuộc vào lớp C
i
khi

và chỉ khi:
( | ) ( | )
ij
P C X P C X
với 1 ≤ i, j ≤ m và i ≠ j
Vậy chúng ta cần phải xác định với lớp C
i
sao cho P(C
i
|X) đạt giá trị cao nhất và
khi đó lớp C
i
này được gọi là giả thiết hậu nghiệm cao nhất. Theo định lý Bayes, ta có:
)(
)()|(
)|(
XP
CPCXP
XCP
ii
i


(3) Do P(X) là như nhau đối với tất cả các lớp nên ta chỉ cần P(X|C
i
)P(C
i
) đạt giá
trị cao nhất. Xác suất trước P(C
i

) của một lớp có thể được tính bằng công thức:

Nếu không thể xác định được xác suất trước P(C
i
), khi đó ta có thể giả sử chúng
là như nhau P(C
1
) = P(C
2
) = … = P(C
m
) và vì thế ta chỉ cần tìm P(X|C
i
) đạt cao nhất.
(4) Với tập dữ liệu có nhiều thuộc tính, chi phí cho việc tính xác suất P(X|C
i
) là
rất cao. Lúc này giả định ”Naïve” là rất cần thiết. Để giảm bớt tính toán trong việc đánh
||/),()( TTCfreqCP
ii



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 7

giá P(X|C
i
)P(C
i

), Naïve Bayes giả định là với một mẫu ví dụ đã được gán nhãn thì giá
trị của các thuộc tính là độc lập điều kiện với nhau. Khi đó ta có thể tính:
1
( | ) (x | )
n
i k i
k
P X C P C




Các xác suất P(x
1
|C
i
), P(x
2
|C
i
), …, P(x
n
|C
i
) có thể dễ dàng tính được từ tập huấn
luyện với x
k
là giá trị của thuộc tính A
k
trong mẫu ví dụ X.

(a) Nếu A
k
là các giá trị rõ ràng, khi đó P(x
k
|C
i
) là số lượng mẫu ví dụ thuộc
lớp C
i
trong tập huấn luyện T có x
k
là giá trị của thuộc tính X
k
chia cho số mẫu freq(C
i
,T)
của C
i
trong tập T.
(b) Nếu A
k
là các giá trị liên tục, khi đó ta thường giả sử những giá trị của nó
có một phân phối Guassian với một giá trị trung bình µ và độ lệch chuẩn σ được định
nghĩa bởi:
2
2
()
2
1
( , , ) exp

2
x
gx







Nên
( , ) ( , , )
ii
k i k C C
P x C g x



Chúng ta cần tính
i
C


i
C

, chúng là giá trị trung bình và độ lệch chuẩn của các
giá trị của thuộc tính A
k
đối với các mẫu ví dụ huấn luyện của lớp C

i
.
(5) Để dự đoán nhãn lớp của X, ta cần đánh giá P(X|C
i
)P(C
i
) cho mỗi lớp C
i
. Bộ
phân lớp sẽ dự đoán nhãn lớp của X là C
i
nếu và chỉ nếu nó là lớp mà có giá trị
P(X|C
i
)P(C
i
) là cao nhất.
Các bước thực hiện thuật toán Naïve Bayes:
Bước 1: Huấn luyện Naïve Bayes (dựa vào tập dữ liệu)
 Tính xác suất P(C
i
)
 Tính xác suất P(x
k
|C
i
)
Bước 2: X
new
được gán vào lớp có giá trị lớn nhất theo công thức:

1
argmax ( ) ( | )
i
n
i k i
CC
k
P C P x C







Để minh họa thuật toán Bayes một cách đơn giản, ta sử dụng bài toán phân chia
ngày thành phù hợp hay không phù hợp với việc chơi tennis theo điều kiện thời tiết được
đưa ra trong bảng dưới đây:


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 8

Ngày
Trời
Nhiệt độ
Độ ẩm
Gió
Chơi
Tennis

D1
Nắng
Nóng
Cao
Yếu
Không
D2
Nắng
Nóng
Cao
Mạnh
Không
D3
Nhiều mây
Nóng
Cao
Yếu

D4
Mưa
Trung bình
Cao
Yếu

D5
Mưa
Ấm áp
Bình thường
Yếu


D6
Mưa
Lạnh
Bình thường
Mạnh
Không
D7
Nhiều mây
Lạnh
Bình thường
Mạnh

D8
Nắng
Ấm áp
Cao
Yếu
Không
D9
Nắng
Lạnh
Bình thường
Yếu

D10
Mưa
Ấm áp
Bình thường
Yếu


D11
Nắng
Ấm áp
Bình thường
Mạnh

D12
Nhiều mây
Ấm áp
Cao
Mạnh

D13
Nhiều mây
Nóng
Bình thường
Yếu

D14
Mưa
Ấm áp
Cao
Mạnh
Không

Trong đó: có 9 mẫu tích cực (có chơiTennis) và 5 mẫu tiêu cực (Không chơi
Tennis):
- Độ ẩm = Cao có 3 tích cực và 4 tiêu cực.
- Độ ẩm = Bình thường có 6 tích cực và 1 tiêu cực
- Gió = Yếu có 6 tích cực và 2 tiêu cực

- Gió = Mạnh có 3 tích cực và 3 tiêu cực


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 9

- Nhiệt độ = Nóng có 2 tích cực và 2 tiêu cực
- Nhiệt độ = Trung bình có 1 tích cực và 0 tiêu cực
- Nhiệt độ = Ấm áp có 4 tích cực và 2 tiêu cực
- Nhiệt độ = Lạnh có 2 tích cực và 1 tiêu cực
- Trời = Nắng có 2 tích cực 3 tiêu cực
- Trời = Nhiều mây có 4 tích cực và 0 tiêu cực
- Trời = Mưa có 3 tích cực và 2 tiêu cực
Vậy từ các dữ liệu trên bạn hãy xác định xem với các điều kiện <Trời = nắng,
Nhiệt độ = Lạnh, Độ ẩm = cao, Gió = mạnh> thì người chơi có chơi Tennis không?
Trả lời:
Bước 1: Tính các giá trị xác suất
 Tính xác suất trước cho mỗi phân lớp:
- P(Chơi Tennis = Có) =
9
14

- P(Chơi Tennis = Không) =
5
14

 Tính xác suất của mỗi giá trị thuộc tính đối với các phân lớp:
- P (Trời | Chơi Tennis)
Chơi Tennis
Nắng

Nhiều mây
Mưa

2/9
4/9
3/9
Không
3/5
0/5 = 0
2/5

- P (Nhiệt độ | Chơi Tennis)
Chơi Tennis
Nóng
Trung bình
Ấm áp
Lạnh

2/9
1/9
4/9
2/9
Không
2/5
0/5 = 0
2/5
1/5

- P (Độ ẩm | Chơi Tennis)
Chơi Tennis

Cao
Bình thường

3/9
6/9
Không
4/5
1/5




Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 10

- P (Gió | Chơi Tennis)
Chơi Tennis
Mạnh
Yếu

3/9
6/9
Không
3/5
2/5

Bước 2: Xác định lớp có thể nhất
- P

= P(Có) x P(Trời = Nắng | Có ) x P(Nhiệt độ = Lạnh | Có) x P(Độ ẩm =

Cao | Có) x P(Gió = Mạnh | Có) = 9/14 x 2/9 x 2/9 x 3/9 x 3/9 = 0.004
- P
Không
= P(Không) x P(Trời = Nắng | Không ) x P(Nhiệt độ = Lạnh | Không)
x P(Độ ẩm = Cao | Không) x P(Gió = Mạnh | Không) = 5/14 x 3/5 x 1/5 x 4/5 x 3/5 =
0.021
 Vì P
Không
> P

nên kết luận lại là người chơi KHÔNG chơi Tennis khi có
điều kiện thời tiết như trên.



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 11

III. Ứng dụng trong bài toán phân loại thư rác
1. Biễu diễn bài toán
Với phương pháp phân loại Naïve Bayes, từ tập huấn luyện D (nội dung của từng
thư một) ta xác định một tập đặc trưng với n đặc trưng, mỗi đặc trưng có thể là một từ
hoặc một cụm từ và các từ hoặc cụm từ này phải là từng đôi một khác nhau.
Mỗi thư (phần nội dung) được biểu diễn bởi một vector n chiều
x
= (x
1
, x
2
, …,

x
n
), với x
i
là giá trị thể hiện sự xuất hiện của đặc trưng thứ i trong nội dung thư. Ta có
thể gán giá trị x
i
là 1 nếu trong nội dung thư có chứa đặc trưng thứ i hoặc ngược lại là 0
nếu trong nội dung thư không chứa đặc trưng thứ i. Mỗi thư được gán một nhãn phân
loại C có thể nhận một trong hai giá trị: C = 1 cho trường hợp thư rác và C = 0 cho
trường hợp thư bình thường.
Bài toán phân loại thư rác là một trường hợp đặc biệt của bài toán phân loại văn
bản với hai loại văn bản là thư rác và không phải thư rác. Và bài toán phân loại văn bản
là một bài toán điển hình áp dụng phương pháp phân loại Naïve Bayes và đạt được hiệu
quả rất cao.
2. Các bước của thuật toán trong phân loại thư rác
Bước 1:
 Tính xác suất P(C
i
):
P(C
i
) được xác định bởi số lượng thư là thư rác hoặc không là thư rác chia cho
tổng số thư trong tập huấn luyện:
||
()
||
i
C
i

D
PC
D


với
i
C
D
là tập các thư là thư rác hoặc các thư bình thường

 Tính xác suất P(C
i
|X)
Theo giả định Naïve, ta giả định rằng sự xuất hiện của một từ trong thư đều độc
lập với nhau nên P(C
i
|X) được tính bởi công thức:
1
(X | C ) (x | C )
n
i k i
k
PP




Trong đó, P(x
k

|C
i
) là xác suất mà đăc trưng x
k
xuất hiện đối với lớp C
i
, P(x
k
|C
i
)
được tính bởi công thức:
(x , )
(x | )
||
i
ki
ki
C
nC
PC
D




Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 12

với n(x

k
, C
i
) là số thư thuộc phân lớp C
i
có đặc trưng thứ k mang giá trị x
k
(hay
số thư thuộc phân lớp C
i
có xuất hiện đặc trưng thứ k)
Để tránh trường hợp giá trị xác suất là 0, khi cài đặt ta thường sử dụng kỹ thuật
Additive smoothing bằng cách cộng tử với 1 và cộng mẫu với 2 (số giá trị mà x
k
có thể
có, ở đây có ta có 2 giá trị là 1 hoặc 0). Khi đó P(x
k
|C
i
) có thể được tính bởi công thức:
(x , ) 1
(x | )
| | 2
i
ki
ki
C
nC
PC
D





Bước 2:
Xác định một thư mới X
new
là thư rác hay không là thư rác bởi công thức:
{0,1}
1
arg max ( ) ( | )
i
n
i k i
C
k
P C P x C







Ngoài ra, ta cũng có thể sử dụng hàm lôgarit cho các giá trị xác xuất:
{0,1}
1
arg max log ( ) ( | )
i
n

i k i
C
k
P C P x C










   
{0,1}
1
arg max log ( ) log ( | )
i
n
i k i
C
k
P C P x C









3. Minh họa bằng ví dụ
Cho tập huấn luyện gồm cái thư đã được gán nhãn là spam (thư rác) hoặc non-
spam (thư bình thường) sau:
STT
Nội dung thư
Nhãn
1
maybe not take him to dog park stupid
Spam
2
stop posting stupid worthless garbage
Spam
3
quit buying worthless dog food stupid
Spam
4
my dog has flea problems help please
Non-spam
5
my dalmation is so cute I love him
Non-spam
6
mr licks ate my steak how to stop him
Non-spam



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị

Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 13

Từ phần nội dung của mỗi thư trong toàn tập huấn luyện, ta xác định được tập
đặc trưng gồm 26 từ đơn và các từ đơn này đôi một khác nhau:
V = {cute, love, posting, garbage, food, park, stop, flea, dalmation, licks, not,
him, buying, help, quit, worthless, ate, has, maybe, please, dog, how, stupid, take,
problems, steak}
Biễu diễn mỗi thư trong tập huấn luyện bởi một vectơ 26 chiều (một bộ gồm 26
phần tử mà phần tử thứ i mang giá trị 1 nếu trong thư đó có chứa đăc trưng thứ i, và
ngược lại là 0 nếu trong thư không chứa đặc trưng thứ i):
STT
Vectơ đặc trưng
Spam=1/Non-Spam=0
1
0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,0,0
1
2
0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,0,0
1
3
0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0
1
4
0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0
0
5
0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1
0
6
1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0

0

Bước 1:
 Tính P(C
i
):
P
S
= P(C=1) =
3
6
= 0.5
P
H
= P(C=0) =
3
6
= 0.5
 Tính xác suất mà mỗi đặc trưng xuất hiện trong spam hoặc non-spam:
- Đối với phân lớp Spam:
Cộng lần từng vectơ đặc trưng của các spam mail, ta được:
iS
i
vD
v


= (0,0,1,1,1,1,1,0,0,0,1,1,1,0,1,2,0,0,1,0,2,0,3,1,0,0)
Với phần tử thứ i là số xuất hiện của đặc trưng thứ i trong spam mail, khi
đó ta có xác suất mà mỗi đặc trưng xuất hiện trong spam mail được tính:



Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 14

P
XS
=
1
| | 2
iS
i
vD
S
v
D




= (0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2, 0.4, 0.4,
0.4, 0.2, 0.4, 0.6, 0.2, 0.2, 0.4, 0.2, 0.6, 0.2, 0.8, 0.4, 0.2, 0.2)
Với phần tử ở vị trí thứ i là xác suất mà đặc trưng thứ i xuất hiện trong
spam mail.
- Đối với phân lớp Non-spam:
Cộng lần từng vectơ đặc trưng của các non-spam mail, ta được:
iH
i
vD
v



= (1,1,0,0,0,0,1,1,1,1,0,2,0,1,0,0,1,1,0,0,1,1,0,0,1,1)
Với phần tử thứ i là số xuất hiện của đặc trưng thứ i trong non-spam mail,
khi đó ta có xác suất mà mỗi đặc trưng xuất hiện trong non-spam mail
được tính:
P
XH
=
1
| | 2
iS
i
vD
S
v
D




= (0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.2, 0.6, 0.2,
0.4, 0.2, 0.2, 0.4, 0.4, 0.2, 0.4, 0.4, 0.4, 0.2, 0.2, 0.4, 0.4)
Với phần tử ở vị trí thứ i là xác suất mà đặc trưng thứ i xuất hiện trong
non-spam mail.
Bước 2:
Xét một thư mới E
new
có nội dung như sau:
E

new
= “stupid worthless garbage”
Vectơ đặc trưng của thư E
new
sẽ được biểu diễn:
new
E
v
= (0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0)
Tính xác suất mà thư E
new
có thể là:
- Spam:
P
SE
= 0.5 x 0.4 x 0.4 x 0.4 = 0.032
- Non-spam:
P
HE
= 0.5 x 0.2 x 0.2 x 0.2 = 0.004
 Do P
SE
> P
HE
nên ta có thể dự đoán được thư mới E
new
là spam mail (thư rác).




Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 15

IV. Cài đặt đoạn code
1. Các hàm chính
 createVocabFile(spamDir, hamDir, vocabFile)
Hàm tạo file từ điển hay tập đặc trưng, mỗi đặc trưng là một từ đơn được
phân cách bởi một dấu phẩy “, “, trong đó:
- spamDir: đường dẫn đến thư mục chứa các file thư rác
- hamDir: đường dẫn đến thư mục chứa các file thư bình thường
- vocabFile: đường dẫn đến file từ điển cần tạo
 setOfWords2Vec(vocabList, message)
Hàm biểu diễn nội dung một thư bởi một vectơ đặc trưng, trong đó:
- vocabList: danh sách các từ trong tập đặc trưng
- message: nội dung thư cần cần biểu diễn
 createDataSetFile(spamDir, hamDir, vocabFile, dsFile)
Hàm tạo file dataset, file chứa các vectơ đặc trưng được của từng thư trong
tập huấn luyện. Mỗi dòng là một vectơ, phần tử cuối cùng của vectơ cho biết thư tương
ứng là thư rác (mang giá trị 1) hay không phải thư rác (mang giá trị 0). Trong đó:
- spamDir : đường dẫn đến thư mục chứa các file thư rác
- hamDir: đường dẫn đến thư mục chứa các file thư bình thường
- vocabFile: đường dẫn đến file từ điển
- dsFile: đường dẫn đến file dataset cần tạo
 trainningNB(vocabFile, dsFile, trainFile)
Hàm thực hiện việc huấn luyện và lưu kết quả huấn luyện vào trainfile, với:
- vocabFile: đường dẫn đến file từ điển
- dsFile: đường dẫn đến file dataset
- trainFile: đường dẫn đến file kết quả huấn luyện cần tạo
 classifyNB(inputVec, pHVec, pSVec, pS)
Hàm thực hiện phân loại, trong đó:

- inputVec: biễu diễn vectơ của nội dung thư cần phân loại
- pHVec: tập các xác suất xuất hiện của từng đặc trưng đối với thư bình
thường
- pSVec: tập các xác suất xuất hiện của từng đặc trưng đối với thư rác
- pS: xác xuất trước của thư rác trong tập huấn luyện


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 16

 testClassifyNB(msgfile, trainfile)
Hàm kiểm tra một thư có phải là thư rác hay không từ kết quả huấn luyện.
Nếu là thư rác hàm trả về giá trị 1, ngược lại hàm trả về giá trị 0, trong đó:
- msgFile: đường dẫn file thư cần kiểm tra
- trainFile: đường dẫn file kết quả huấn luyện
2. Các bước hực hiện huấn luyện và phân loại bằng đoạn code
 Bước 1: Tạo file từ diển từ điển (createVocabFile)
 Bước 2: Tạo file dataset (createDataSetFile)
 Bước 3: Thực hiện huấn luyện (trainningNB)
 Bước 4: Kiểm tra một thư mới có phải là thư rác hay không (testClassifyNB)
3. Các file đươc tạo ra bởi đoạn code
Khi thực hiện huấn luyện và phân loại bằng đoạn code áp dụng với ví dụ minh
họa trên, nội dung các file được tạo ra có dạng sau:
 File từ điển (tập đặc trưng)
cute, love, posting, garbage, food, park, stop, flea,
dalmation, licks, not, him, buying, help, quit, worthless, ate,
has, maybe, please, dog, how, stupid, take, problems, steak
 File dataset
0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,1,1,0,0,1
0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,0,0,1

0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1
0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,0,0,0,1,0,0
0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0
1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 File kết quả huấn luyện
{
"vocab_list": [
"cute", "love", "posting", "garbage", "food",
"park", "stop", "flea", "dalmation", "licks", "not", "him",
"buying", "help", "quit", "worthless", "ate", "has",
"maybe", "please", "dog", "how", "stupid", "take",
"problems", "steak"
],


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 17

"p_x_h": [
0.4, 0.4, 0.2, 0.2, 0.2, 0.2, 0.4, 0.4, 0.4, 0.4,
0.2, 0.6, 0.2, 0.4, 0.2, 0.2, 0.4, 0.4, 0.2, 0.4, 0.4, 0.4,
0.2, 0.2, 0.4, 0.4
],
"p_x_s": [
0.2, 0.2, 0.4, 0.4, 0.4, 0.4, 0.4, 0.2, 0.2, 0.2,
0.4, 0.4, 0.4, 0.2, 0.4, 0.6, 0.2, 0.2, 0.4, 0.2, 0.6, 0.2,
0.8, 0.4, 0.2, 0.2
],
"p_s": 0.5
}




Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 18

V. Kết luận và hướng phát triển
Navie Bayes classifier là một phương pháp phân loại đơn giản, dễ thực hiện nhờ
dựa vào giả định độc lập điều kiện. Tuy giả định này sai trong hầu hết các trường hợp
thực tế (các thuộc tính trong các đối tượng thường phụ thuộc lẫn nhau) nhưng hiệu quả
của nó mang lại khiến ta không thể phủ nhận đây là một phương pháp tốt đối với nhiều
bài toán, điển hình là bài toán phân loại văn bản, lọc spam, Phương pháp này thể hiện
tốt về tốc độ và tính chính xác khi áp dụng với kho dữ liệu lớn.
Bằng phương pháp phân loại Navie Bayes ta có thể xây dựng một bộ lọc thư rác
hoàn chỉnh được tích hợp vào các mail client hoặc được sử dụng tại mail server. Mỗi
một mail mới sau khi xác định được là thư rác hay không thì sẽ được bổ sung vào tập
huấn luyện và bộ lọc sẽ được huấn luyện lại từ tập huấn luyện mới vào những thời điểm
thích hợp. Khi tập huấn luyện ngày càng phong phú thì tính chính xác của bộ lọc cũng
sẽ được nâng cao.
Bên cạnh đó, ta cũng cần xây dựng tập đặc trưng sao cho gọn nhẹ, chính xác, ít
dư thừa, giảm bớt thời gian và tài nguyên cho việc huấn luyện cũng như khi phân loại
một thư mới nhằm nâng cao tốc độ và tính chính xác của bộ lọc.


Tiểu luận môn học GV: TS. Đoàn Thanh Nghị
Tìm hiểu Navie Bayes classifier và ứng dụng trong phân loại thư rác 19

Tài liệu tham khảo

Pattern Recognition and Machine Learning, by Christopher M. Bishop, 2006

Machine Learning, by Tom Mitchell Mcgraw Hill, 1997





×