Tải bản đầy đủ (.docx) (34 trang)

[Báo cáo + slide] Thuật toán Bayes và ứng dụng thuật toán trong việc lọc thư rác

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 (563.01 KB, 34 trang )

Thuật toán Bayes và ứng dụng

NHẬN XÉT VÀ ĐÁNH GIÁ
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
…………………………………………………………………………………...
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................
.....................................................................................................


..........................................

1|Page


Thuật toán Bayes và ứng dụng

MỤC LỤC

2|Page


Thuật toán Bayes và ứng dụng

LỜI MỞ ĐẦU
Trong xu thế phát triển hiện nay trên thế giới khoa học và công
nghệ luôn có những thay đổi mạnh mẽ. Sự phát triển như vũ bão của
CNTT đã tác động mạnh mẽ và to lớn đến mọi mặt đời sống kinh tế
xã hội. Ngày nay, CNTT đã trở thành một trong những động lực quan
trọng nhất của sự phát triển. Với khả năng số hoá mọi loại thông tin
(số, đồ thị, văn bản, hình ảnh, tiếng nói, âm thanh.), máy tính trở
thành phương tiện xử lý thông tin thống nhất và đa năng, thực hiện
được nhiều chức năng khác nhau trên mọi dạng thông tin thuộc mọi
lĩnh vực: nghiên cứu, quản lý, kinh doanh,...
Với vốn kiến thức được học tại trường và nhu cầu cấp thiết của xã
hội cộng thêm gợi ý của giảng viên bộ môn – cô Đoàn Thị Thanh
Hằng, nhóm em đã chọn đề tài “Thuật toán Bayes và ứng dụng”
với mong muốn giúp cho việc xây dựng, lựa chọn các quyết định
được thực hiện một cách dễ dàng hơn, thuận tiện và giảm thiểu
được các sai xót.

Trong quá trình góp nhặt những kiến thức quý báu , nhờ sự
quan tâm hướng dẫn của cô Đoàn Thị Thanh Hằng, chúng em đã
từng bước nghiên cứu và vận dụng các kiến thức đã được học để tìm
hiểu, phân tích. Tuy nhiên, do sự hiểu biết của chúng em về lĩnh vực
này còn hạn chế, đề tài còn nhiều thiếu sót, nên chưa được hoàn
thiện. Vì vậy chúng em rất mong được sự đóng góp nhiệt tình của cô
và các bạn để đề tài của nhóm được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!

3|Page


Thuật toán Bayes và ứng dụng

TÀI LIỆU THAM KHẢO
1.
2.
3.

4.
5.
6.

7.

Nguyễn Quốc Đại, Lý Thuyết Bayes, mạng Bayes. (2009)
Nguyễn Thanh Sơn, Lê Khánh Luận; Lý thuyết xác suất và
thống kê toán; Nxb Thống kê (2008)
Nguyễn Duy Tiến, Trần Minh Ngọc Đại học Khoa Học Tự
Nhiên, ĐHQGHN, Bài giảng của Viện Thống Kê Thế Giới IMS

tại Malaysia
Azam. N, Dar. H. A, Marwat. S; Comparative study on Feature
Space Reduction for Spam Detection
Paul Graham, A plan for spam – 2002.
Xem tại địa chỉ: />Bayesian Spam Filtering (Wikipedia);
Xem
tại
địa
chỉ:
/>Sequential Bayesian Filtering (Wikipedia);
Xem
tại
địa
chỉ:
/>
4|Page


Thuật toán Bayes và ứng dụng

NỘI DUNG
I.

GIỚI THIỆU
1. Tổng quan
Khoa học thống kê là khoa học về thu thập, phân
tích, diễn giải và trình bày các dữ liệu để từ đó tìm ra bản
chất và tính quy luật của các hiện tượng kinh tế, xã hội tự nhiên. Khoa học thống kê dựa vào lý thuyết thống kê một loại toán học ứng dụng. Trong lý thuyết thống kê,
tính chất ngẫu nhiên và sự không chắc chắn có thể làm
mô hình dựa vào lý thuyết xác suất. Vì mục đích của khoa

học thống kê là để tạo ra thông tin "đúng nhất" theo dữ
liệu có sẵn, có nhiều học giả nhìn khoa thống kê như một
loại lý thuyết quyết định.
Khoa học thống kê đóng đóng một vai trò cực kỳ
quan trọng, một vai trò không thể thiếu được trong bất cứ
công trình nghiên cứu khoa học, nhất là các khoa học
thực nghiệm như y khoa, sinh học, nông nghiệp, hóa học,
và cả xã hội học. Các thí nghiệm dựa vào các phương
pháp thống kê học có thể cung cấp cho khoa học những
câu trả lời khách quan nhất cho những vấn đề khó khăn
nhất.
Thống kê là một trong những công cụ quản lý vĩ mô
quan trọng, cung cấp các thông tin thống kê trung thực,
khách quan, chính xác, đầy đủ, kịp thời trong việc đánh
giá, dự báo tình hình, hoạch định chiến lược, chính sách,
xây dựng kế hoạch phát triển kinh tế - xã hội và đáp ứng
nhu cầu thông tin thống kê của các tổ chức, cá nhân.
Trong số những vai trò quan trọng thì dự báo tình hình là
một trong những vai trò mang nhiều ý nghĩa, nó có cả
một quá trình huấn luyện bên trong và có tính xử lý tự
động khi đã được huấn luyện. Hay nói khác hơn là khi đã
có tri thức lấy từ các dữ liệu thống kê hay kinh nghiệm
của người dùng kết hợp với một phương pháp học (huấn
luyện) dựa trên lý thuyết thống kê ta sẽ có được một cỗ
máy có tri thức để tự nó có thể đưa ra được những quyết
định với độ chính xác khá cao.
Phân tích thống kê là một khâu quan trọng không
thể thiếu được trong các công trình nghiên cứu khoa học,
nhất là khoa học thực nghiệm. Một công trình nghiên cứu
khoa học, cho dù có tốn kém và quan trọng cỡ nào, nếu

không được phân tích đúng phương pháp sẽ không bao
giờ có cơ hội được xuất hiện trong các tập san khoa học.
Ngày nay, chỉ cần nhìn qua tất cả các tập san nghiên cứu
5|Page


Thuật toán Bayes và ứng dụng
khoa học trên thế giới, hầu như bất cứ bài báo y học nào
cũng có phần “Statistical Analysis” (Phân tích thống kê),
nơi mà tác giả phải mô tả cẩn thận phương pháp phân
tích, tính toán như thế nào, và giải thích ngắn gọn tại sao
sử dụng những phương pháp đó để hàm ý “bảo kê” hay
tăng trọng lượng khoa học cho những phát biểu trong bài
báo. Các tập san y học có uy tín càng cao yêu cầu về
phân tích thống kê càng nặng. Không có phần phân tích
thống kê, bài báo không thể xem là một “bài báo khoa
học”. Không có phân tích thống kê, công trình nghiên cứu
chưa được xem là hoàn tất.
Trong khoa học thống kê, có hai trường phái “cạnh
tranh” song song với nhau:
• Trường phái tần số (Frequentist school)
• Trường phái Bayes (Bayesian school)
Phần lớn các phương pháp thống kê đang sử dụng
ngày nay được phát triển từ trường phái tần số, nhưng
hiện nay, trường phái Bayes đang trên đà “chinh phục”
khoa học bằng một suy nghĩ “mới” về khoa học và suy
luận khoa học. Phương pháp thống kê thuộc trường phái
tần số thường đơn giản hơn các phương pháp thuộc
trường phái Bayes.
2.


Ví dụ dẫn dắt

Để hiểu sự khác biệt cơ bản giữa hai trường phái
này, có lẽ cần phải nói đôi qua vài dòng về triết lý khoa
học thống kê bằng một ví dụ về nghiên cứu y khoa.
Để biết hai thuật điều trị có hiệu quả giống nhau
hay không, nhà nghiên cứu phải thu thập dữ liệu trong
hai nhóm bệnh nhân (một nhóm được điều trị bằng
phương pháp A và một nhóm được điều trị bằng phương
pháp B).
Với trường phái tần số, câu hỏi được đưa ra là: “Nếu hai
thuật điều trị có hiệu quả như nhau, xác suất mà dữ liệu
quan sát là bao nhiêu?”, nhưng với trường phái Bayes câu
hỏi được đưa ra sẽ là: “Với dữ liệu quan sát được, xác
suất mà thuật điều trị A có hiệu quả cao hơn thuật điều
trị B là bao nhiêu?”.
Tuy hai cách hỏi thoạt đầu mới đọc qua thì chẳng có gì
khác nhau, nhưng suy nghĩ kỹ chúng ta sẽ thấy đó là sự
khác biệt mang tính triết lý khoa học và ý nghĩa của nó
rất quan trọng.
Đối với người bác sĩ (hay nhà khoa học nói chung), suy
luận theo trường phái Bayes là rất tự nhiên, rất hợp với
thực tế. Trong y khoa lâm sàng, người bác sĩ phải sử dụng
6|Page


Thuật toán Bayes và ứng dụng
kết quả xét nghiệm để phán đoán bệnh nhân mắc hay
không mắc ung thư (cũng giống như trong nghiên cứu

khoa học, chúng ta phải sử dụng số liệu để suy luận về
khả năng của một giả thiết).

7|Page


Thuật toán Bayes và ứng dụng
II.

CƠ SỞ LÝ THUYẾT
1. Phát biểu đị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. Chú ý không nhầm lẫn giữa khả
năng xảy ra B khi biết A và xác suất xảy ra A khi
biết B.
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 :

Từ đó dẫn tới:
P(A|B)P(B)=P(A∩B)=P(B|A)P(A)
2.

Mô tả thuật toán
Cho đến giờ chúng ta vẫn chưa giả định đặc trưng
của phân phối mẫu cho likelihoods. Tuy nhiên, mô hình
chuẩn tắc là một giả định hợp lý. Mô hình chuẩn tắc có
liên quan đến định lý giới hạn trung tâm nổi tiếng, theo
định lý này thì tổng của một lượng lớn các biến ngẫu
nhiên độc lập và phân phối đồng nhất sẽ có phân phối hội
tụ về luật chuẩn. Thực tế ta có được một xấp xỉ đến luật
chuẩn tắc, thậm chí với cả một số lượng tương đối nhỏ
được thêm vào các biến ngẫu nhiên. Đối với các đặc
8|Page


Thuật toán Bayes và ứng dụng
trưng có thể được coi là kết quả của việc bổ sung các
biến độc lập, thường thì giả định là có thể chấp nhận.
Likelihood chuẩn tắc của lớp ωi được biểu diễn bởi
hàm mật độ xác suất:

,
(1-10)

mean vector for class
(1-10a)
convariance for class (1-10b)
i và ∑i là các tham số phân phối, đến giờ thì ta đã sử
dụng các ước lượng mẫu mi và Ci.
Cho một tập huấn luyện có n mẫu T={x 1, x2, … xn}
được mô tả bởi một phân phối với hàm mật độ xác suất là
p(T | θ), θ là một vec tơ tham số của phân phối (chẳng
hạn như vec tơ trung bình của phân phối chuẩn). Một
cách đáng chú ý tính được ước lượng mẫu của vectơ tham
biến là cực đại hóa hàm mật độ xác suất p(T | θ), có thể
coi dây là một hàm của θ gọi là likelihood of θ cho tập
huấn luyện. Giả sử rằng mỗi mẫu là đưa vào độc lập từ
một tập vô hạn, chúng ta có thể biểu thị likelihood như
sau:
p(T | )=
Khi sử dụng ước lượng hợp lý cực đại (maximum
likelihood estimation) của các biến phân phối thì nó
thường dễ dàng hơn là tính cưc đại của ln[p(T|θ)], điều
này là tương đương nhau. Với phân phối Gauss ước lượng
mẫu được cho bởi các công thức (1-10a) và (1-10b) chính

là ước lượng hợp lý cực đại và nó sẽ hội tụ về một giá trị
thực.
Hình 7: Minh họa phân phối chuẩn trong trường hợp có
hai chiều


9|Page


Thuật toán Bayes và ứng dụng
Như có thể nhìn thấy từ (1-10), các bề mặt của mật
độ xác suất đồng nhất với hợp lý chuẩn (normal
likelihood) thỏa mãn Mahalanobis metric:
Bây giờ chúng ta tiếp tục tính hàm quyết định cho
các đặc trưng của phân phối chuẩn
gi(x) = P(ωi | x) = P(ωi) p(x | ωi) (1-11)
biến đổi logarit ta được:
(1-11a)
(1-11b)
Bằng cách sử dụng những hàm quyết định, rõ ràng
phụ thuộc Mahalanobis metric, ta có thể xây dựng phân
lớp Bayes với rủi ro nhỏ nhất, đây là phân lớp tối ưu. Chú
ý rằng công thức (1-11b) sử dụng giá trị thật của khoảng
cách Mahalanobis, trong khi mà trước đó chúng ta sử
dụng ước lượng của khoảng cách này.
Với trường hợp covariance đồng nhất cho tất cả các
lớp (∑i=∑) và bỏ qua các hằng số ta được:
(1-11c)
Với bài toán 2 lớp, biệt số d(x) =h 1(x)-h2(x) là dễ đàng
tính toán:
Và:
(1-12a)
Qua đó ta có được hàm quyết định tuyến tính:

Hai lớp phân biệt với phân phối chuẩn, xác suất tiên
nghiệm đồng nhất và covariance và vẫn còn có một công

thức rất đơn giản cho xác suất của lỗi của phân lớp:

(1-13a)
(1-13b)

10 | P a g e


Thuật toán Bayes và ứng dụng
bình phương của khoảng cách Bhattacharyya, một
khoảng cách Mahalanobis của sai phân trung bình, thể
hiện tính dễ tách lớp.
Hình 8 thể hiện dáng điệu của Pe với sự tăng dần
của bình phương khảng cách Bhattacharyya. Hàm này
giảm dần theo cấp số mũ và nó hội tụ tiệm cận tới 0. Vì
vậy thật khó để giảm sai số phân lớp khi giá trị này là
nhỏ.
Lưu ý rằng ngay cả khi các phân phối mẫu không
phải là phân phối chuẩn, miễn là chúng đối xứng và phải
tuân theo Mahalanobis metric, thì chúng ta sẽ thu được
mặt phân lớp quyết định tương tự như phân lớp chuẩn,
cho dù có sự khác biệt về đánh giá sai số và xác suất hậu

nghiệm. Để minh họa ta hãy xét hai lớp có xác suất tiên
nghiệm đồng nhất và có ba loại phân phối đối xứng, với
cùng độ lệch tiêu chuẩn và trung bình 0 và 2.3 như hình
9.
Normal distribution :
Cauchy distribution :
Logistic distribution :

Phân lớp tối ưu cho 3 trường hợp sử dụng cùng một
ngưỡng quyết định có giá trị 1.15, tuy nhiên các sai số
phân lớp là khác nhau:
 Nomal:
Pe = 1 – erf(2.3/2) = 12.5%
 Cauchy:
Pe = 22.7%
 Logistic:
Pe = 24.0%

11 | P a g e


Thuật toán Bayes và ứng dụng
Kết quả thực nghiệm cho thấy, khi ma trận
covariance đưa ra độ lệch giới hạn, thì sự phân lớp có thể
thực hiện một cách tương tự với phương pháp tối ưu với
điều kiện các covariance là đồng nhất. điều này là hợp lý
vì khi các covariance không khác biệt nhau nhiều thì sự
khác biệt giữa các giải pháp bậc hai và tuyến tính chỉ

đáng kể khi các mẫu cách xa nguyên mẫu như ở hình 10.
Chúng ta sẽ minh họa bằng cách sử dụng bộ dữ liệu
Norm2c2d. Sai số lý thuyết đối với trường hợp hai lớp, hai
chiều và bộ dữ liệu trên là:

12 | P a g e


Ước lượng sai số của bộ dữ liệu huấn luyện cho tập

dữ liệu này là 5%. Bằng cách đưa vào sai số ±0.1 vào các
giá trị của ma trận ánh xạ A cho bộ dữ liệu, với độ lệch
nằm giữa 15% và 42% giá rị của covariance, ta được sai

số tập huấn luyện là 6%.
Trở lại với dữ liệu các nút chai, ta có bài toán phân
lớp sử dụng 2 đặc trưng N và PRT với xác suất tiên
nghiệm đồng nhất. Lưu ý phân lớp thống kê ngoài tính
toán số nó không làm thay đổi các phép toán, vì thế mà
các kết quả đạt được là giống nhau nếu như sử dụng PRT
hay PRT10.
Một danh sách riêng các xác suất hậu nghiệm hữu
ích trong tính toán các sai số phân lớp, xem hình 11.
Cho các ma trận covariances ở trong bảng 1. Độ
lệch của các phần tử trong ma trận covariance so với giá
trị trung tâm nằm trong khoảng từ 5% đến 30%. Hình
dáng của các cụm là tương tự nhau, đây là bằng chứng
để tin rằng việc phân lớp là gần với tối ưu.

Bằng cách sử dụng hàm quyết định dựa trên các ma
trận covariance riêng lẻ, thay vì chỉ một ma trận tổng
covariance, ta sẽ xây dựng được đường biên quyết định
bâc hai. Tuy nhiên phân lớp bằng đường bậc hai khó tính
độ lệch hơn so với phân lớp tuyến tính, đặc biệt là trong
13 | P a g e


không gian nhiều chiều, và ta cần phải có một lượng lớn
tập dữ liệu huấn luyện (xem ví dụ của Fukunaga and
Hayes, 1989).


14 | P a g e


III.

PHÂN LỚP
1. Định nghĩa
Phân lớp Naïve Bayes giả định rằng sự hiện diện
hoặc vắng mặt của một đặc tính là độc lập với sự hiện
diện và vắng mặt của các đặc tính khác, mà được quy
định bởi các tham số phân lớp, ví dụ: một loại trái cây
được phân lớp là trái táo nếu nó màu đỏ, tròn, có đường
kính 3 decimet. Một phân lớp Naïve Bayes xem xét các
đặc tính này tham gia một cách độc lập để xác định xác
suất mà loại trái cây này là quả táo, bất kể sự hiện diện
hay vắng mặt của các đặc tính khác.
Đối với một số mô hình xác suất, phân lớp Naïve
Bayes có thể được huân luyện một cách hiệu quả trong
môi trường học có giám sát. Trong nhiều ứng dụng thực
tế, ước lượng thâm số cho mô hình Naïve Bayes sử dụng
phương pháp hợp lý cực đại, nghĩa là khi sử dụng mô hình
Naïve Bayes ta phải chấp nhận xác suất Bayes. Mặc dù
sử dụng các giả định tương đối đơn giản, nhưng phân lớp
Naïve Bayes có thể áp dụng rất tốt trong nhiều trường
hợp phức tạp trong thế giới thực.
Một ưu điểm của mô hình Naïve Bayes là chỉ cần sử
dụng khối lượng nhỏ dữ liệu huấn luyện để ước lượng các
tham số cần thiết để phân lớp. Bởi vì các biến độc lập
được giả định, chỉ có sự thay đổi các biến cho mỗi lớp cần

được xác định chứ không phải trên toàn bộ hiệp phương
sai.
2.

Các mô hình xác suất Naive Bayes

Tóm lại, các mô hình xác suất cho một classifier là
một mô hình có điều kiện đối với một biến lớp phụ thuộc
C với một số lượng nhỏ của các kết quả hay các lớp học,
phụ thuộc vài biến đặc trưng cho tới .
Vấn đề là nếu số các đặc trưng n là lớn hay khi một
đặc trưng có thể chiếm một số lượng lớn các giá trị, sau
đó dựa vào một mô hình trên các bảng xác suất là không
thể làm được. Do vậy, chúng ta công thức hóa lại các mô
hình để dễ xử lý:
Trong thực tế ta chỉ cần quan tâm tới tử số, vì mẫu
số không phụ thuộc vào C và các giá trị của đặc tính F. Tử
số tương đương với mô hình xác suất có thể được viết lại
như sau, sử dụng định nghĩa của xác suất có điều kiện:

15 | P a g e


Bây giờ giả định "naive" giả định có điều kiện độc
lập đưa vào: giả định rằng mỗi đặc trưng Fi có điều kiện
độc lập với tất cả các đặc trưng Fj cho j # i.
Điều này có nghĩa là dưới sự độc lập giả định ở trên,
các điều kiện phân phối trên các lớp học biến C có thể

được thể hiện như sau:

Điều này nghĩa là theo các giả định độc lập ở trên,
phân phối có điều kiện thông qua biến phân lớp C có thể
được thể hiện như sau:
Ở đây Z là một nhân tố xác định tỷ xích phụ thuộc

vào F1, F2, .., Fn, chẳng hạn một hằng số nếu các giá trị
của các biến đặc trưng đều được biết. Sự phân lớp tương
ứng với mô hình này là một hàm phân lớp được định
nghĩa như sau:

3.

Xây dựng một classifier từ mô hình xác suất

Các thảo luận cho đến nay đã bắt nguồn những mô
hình đặc trưng độc lập, có nghĩa là, mô hình xác suất
naive Bayes. Naive Bayes classifier kết hợp mô hình này
với một luật quyết định. Là một luật chung để chọn nhiều
nhất các giả thuyết có khả năng xảy ra, điều này được
biết đến như là maximum a posteriori hay luật quyết định
MAP.
Một chú ý rằng giả định độc lập có thể dẫn đến một
số kết quả không mong muốn trong tính toán sau xác
suất. Trong một số trường hợp khi có một phụ thuộc giữa
sự quan sát, xác suất kể trên có thể mâu thuẫn với xác
suất tiền đề thứ hai do mọi xác suất luôn nhỏ hơn hoặc
bằng một.
Mặc dù rằng sự thật có thể áp dụng rộng rãi, giả
định độc lập thường không chính xác, các naive Bayes
classifier có vài thuộc tính làm cho nó hữu ích trong thực

16 | P a g e


hành. Đặc biệt thực hành, sự tách riêng của lớp có điều
kiện phân loại đặc trưng có nghĩa là mỗi phân loại có thể
được ước tính độc lập như là một phân phối một chiều.
Toàn bộ classifier là mạnh đủ để bỏ qua các thiếu sót
nghiêm trọng của nó trong những mô hình xác suất
naive.
4.

Thuật toán phân loại văn bản Naive Bayes

Định nghĩa: Là 1 phương pháp phân loại có giám
sát. Dù rất dễ hiểu và dễ cài đặt, nhưng kết quả thu được
lại rất tốt. Gần đây, máy phân loại này còn được ứng
dụng thành công vào phần mềm lọc spam tự động.
Lý thuyết về định lý Bayes và máy phân loại Bayes
đã được nhắc đến trong phần Định lý Bayes. Bài viết này
sẽ nói kĩ và sâu hơn về việc ứng dụng phân loại Bayes
cho phân loại văn bản. Cuối cùng sẽ có 1 ví dụ về ứng
dụng máy phân loại Bayes trong bộ lọc spam.
a. Bài toán phân loại văn bản

Vector đặc trưng x biểu diễn số lần xuất hiện
các từ trong văn bản, y là các catalog (nhãn) mà
văn bản thuộc về (ví dụ như thể thao, kinh tế, giải
trí, …).
Cho 1 tập dữ liệu huấn luyện đã được gán
nhãn D={(x(i),y(i))} với i=1~N.

Ở đây x(i) là vector đặc trưng thứ i trong tập
huấn luyện, y(i) thuộc {1,2,…,C} là các nhãn tương
ứng với vector đó. x(i)=( x(i)1,x(i)2,x(i)D) x(i)d là số
lần xuất hiện của từ thứ d trong từ điển (từ giờ sẽ
gắn số thứ tự với từ, nên sẽ gọi là từ d).
Áp dụng công thứ Bayes, ta tính giá trị của
p(y|x), nếu giá trị này lớn hơn 1 giá trị t cho trước,
ta kết luận nhãn của vector x là y.
Yêu cầu đặt ra là ngăn chặn spam bằng cách
phân loại một email gửi đến là spam hay non-spam.
Cần đạt được hiệu quả phân loại email thật khả
quan. Tuy nhiên cần tuyệt đối tránh lỗi sai cho rằng
email non-spam là spam vì có thể gây hậu quả
nghiêm trọng hơn là khả năng lọc spam thấp. Do đó
yêu cầu đối với hệ thống là phải nhận ra được email
spam càng nhiều càng tốt và giảm thiểu lỗi nhận sai
email non-spam là email spam.
Ý tưởng của phương pháp là tìm cách xây
dựng một bộ phân loại nhằm phân loại cho một mẫu
17 | P a g e


mới bằng cách huấn luyện từ những mẫu có sẵn. Ở
đây mỗi mẫu mà ta xét đến chính là mỗi một email,
tập các lớp mà mỗi email có thể thuộc về là
y={spam, non-spam}.
Khi ta nhận được 1 email mới gửi đến, khi đó
ta dựa vào một số đặc điểm hay thuộc tính nào đó
của email để tăng khả năng phân loại chính xác
email đó. Các đặc điểm của 1 email như: tiêu đề, nội

dung, có tập tin đính kèm hay không… Càng nhiều
những thông tin như vậy xác suất phân loại đúng
càng lớn, tất nhiên còn phụ thuộc vào kích thước
của tập mẫu huấn luyện.
Việc tính toán xác suất sẽ dựa vào công thức
Naïve Bayes, từ xác suất thu được ta đem so sánh
với một giá trị ngưỡng t nào đó mà ta xem là
ngưỡng để phân loại email spam hay non-spam.
Nếu lớn hơn t thì email đó là spam, ngược lại là nonspam. Như ta đã biết khi phân loại email có hai lỗi :
lỗi nhận 1 email non-spam thành spam và lỗi cho
qua một email spam. Loại lỗi thứ nhất nghiêm trọng
hơn, vì vậy ta xem mỗi một email non-spam như là
λ email non-spam. Như vậy khi lỗi nhận 1 email
non-spam thành spam xảy ra ta xem như là λ lỗi, và
khi phân loại đúng xem như λ lần thành công.
Ngưỡng để phân loại t sẽ phụ thuộc và chỉ số λ này.
b. Cơ sở lý thuyết

Công thức xác suất có điều kiện
Xác suất điều kiện của biến cố A với điều kiện biến
cố B đã xảy ra là một số không âm, ký hiệu là P( A/B
) nó biểu thị khả năng xảy ra biến cố A trong tình
huống biến cố B đã xảy ra.
P( A/B ) = (P( AB ))/(P( B ))
Suy ra:
P( A/B ) . P( B ) = P( B/A ) . P( A ) = P( AB )
Công thức xác suất đầy đủ
Giả sử B1, B2, … Bn là 1 nhóm đầy đủ các biến cố.
Xét biến cố A sao cho A xảy ra chỉ khi một trong các
biến cố B1, B2, … Bn xảy ra.

Khi đó:
P(A) = ∑ P(Bi) . P(A/Bi)
Công thức xác suất Bayes
Từ các công thức ở trên ta có công thức xác suất
Bayes:
18 | P a g e


P(Bk/A) = (P(ABk) )/(P(A) ) = (P(Bk) .P(A/Bk) )/(ΣP(Bi)
.P(A/Bi))
 PHƯƠNG PHÁP PHÂN LOẠI NATIVE BAYES

Phân loại Bayesian là phương pháp phân loại sử
dụng tri thức các xác suất đã qua huấn luyện.
Phương pháp này thích hợp với những lớp bài toán
đòi hỏi phải dự đoán chính xác lớp của mẫu cần
kiểm tra dựa trên những thông tin từ tập huấn luyện
ban đầu.
Giả thiết mỗi một email được đại diện bởi một
vector thuộc tính đặc trưng là x = (x1, x2,…,xn) với
x1, x2, …, xn là giá trị của các thuộc tính X1, X2,
…,Xn tương ứng trong không gian vector đặc trưng
X.
Dựa vào công thức xác suất Bayes và công thức xác
suất đầy đủ ta có được xác suất 1 email với vector
đặc trưng x thuộc về loại c là:
P(C=c | X=x) = (P(C=c) .P(X=x | C=c) )/(∑P(C=k).P(X=x |
C=k))
với C là email được xét , c € {spam, non-spam}.
Xác suất P(C=c) được tính dễ dàng từ tập huấn

luyện. Thực tế rất khó để tính được xác suất P(X=x |
C=c) . Giả thiết rằng tất cả các biến cố X1, X2…Xn
là độc lập với nhau do đó chúng ta có thể tính được
xác suất P(X=x | C=c) dựa theo công thức:
P(X=x | C=c) = ∏ P(Xi=xi | C=c)
Như vậy công thức tính xác suất 1 email là spam sẽ
được viết thành:
P(C=c | X=x) = (P(C=c). ∏ P(Xi=xi | C=c) )/(∑ P(C=k) .∏ P(Xi=xi |
C=k))
Từ xác suất này ta so sánh với một giá trị ngưỡng t
là ngưỡng để phân loại email là spam hay không,
nếu xác suất này lớn hơn t, ta cho email đó là spam,
ngược lại email đó là non-spam.
Trong phân loại email có 2 loại sai lầm, một là sai
lầm nhận 1 email spam thành non-spam và sai lầm
thứ 2 là nhận 1 email non-spam thành spam. Rõ
ràng sai lầm thứ 2 là nghiêm trọng hơn vì người
dùng có thể chấp nhận một email spam vượt qua bộ
lọc nhưng không thể chấp nhận một email hợp lệ
quan trọng lại bị bộ lọc chặn lại.
19 | P a g e


Giả sử ta gọi S->N và N->S tương ứng với 2 loại lỗi ở
trên. Để hạn chế loại lỗi thứ 2 ta giả sử rằng lỗi N>S có chi phí gấp λ lỗi S->N nghĩa là ta phân loại 1
email là spam dựa theo:
(P(C=spam | X=x) )/(P(C=non-spam | X=x)) > λ
Mặt khác:
P(C=spam | X=x) = 1 – P(C=non-spam | X=x) và
P(C=spam | X=x) > t

Như vậy ta giá trị ngưỡng t phụ thuộc vào λ, cụ thể :
t = λ / (λ + 1)
 PHƯƠNG PHÁP THỰC HIỆN

Để đánh giá 1 email ta phải chuyển mỗi một
email sang một vector x = (x1,x2,…xn) với
x1,x2,..xn là giá trị các thuộc tính X1,X2…Xn trong
không gian vector đặc trưng X. Mỗi thuộc tính được
thể hiện bởi một token đơn. Theo phương pháp đơn
giản nhất ta có thể lập ra một từ điển chứa các
token. Sau đó với mỗi token trong email nếu nó xuất
hiện trong từ điển thì giá trị thuộc tính sẽ là 1,
ngược lại thì là 0. Tuy nhiên trên thực tế, tập huấn
luyện của ta không thường là một bộ từ điển như
vậy. Thay vào đó tập huấn luyện lúc này sẽ gồm có
2 kho ngữ liệu. Kho ngữ liệu Spam sẽ chứa một list
các email đã được xác định là spam trước đó, và
tương tự với kho ngữ liệu Non-spam sẽ chứa các
email hợp lệ.
Như vậy nếu ta vẫn để giá trị các thuộc tính là
0 hoặc 1 thì sẽ rất khó đánh giá được 1 email là
spam hay không. Đặc biệt nếu email nhận được là
dài, khi đó nếu ta vẫn sử dụng giá trị thuộc tính là 0
hoặc 1 thì sự xuất hiện của 1 token 100 lần cũng
tương đương với việc xuất hiện chỉ 1 lần.
Để khắc phục vấn đề này giá trị thuộc tính bây giờ
ta sẽ thay bằng xác suất spam của token đó. Xác
suất này tương đương với xác suất spam của 1
email chỉ chứa token đó và là email spam. Việc tính
xác suất này thì có nhiều phương pháp. Ta có thể

tính dựa trên số lần xuất hiện của token này trong
mỗi kho ngữ liệu học ban đầu. Ví dụ một token w có
số lần xuất hiện trong kho ngữ liệu spam là s và
non-spam là n, số email tổng cộng ở kho spam và
non-spam tương ứng là Ns và Nn thì xác suất spam
của token w này sẽ là:
20 | P a g e


P(X=w | C=spam) = (s/Ns)/(s/Ns+n/Nn)
Tuy nhiên nhược điểm của phương pháp này
khả năng spam của một token xuất hiện 100 lần ở
100 email khác nhau là bằng với khả năng spam
của một token xuất hiện 100 lần chỉ ở trong 1 email.
Thay vào việc tính xác suất này dựa theo số
lần xuất hiện của token trong từng kho ngữ liệu ta
có thể dựa vào số email chứa token trong từng kho
ngữ liệu. Ví dụ một token w có số email chứa nó
trong kho ngữ liệu spam và non-spam là ns và nn
thì xác suất spam của token w này sẽ là :
P(X=w | C=spam) = (s/Ns)/(ns/Ns+nn/Nn)
Nhược điểm của phương pháp này là khả năng
spam của một token xuất hiện 1 lần trong 1 email là
bằng với khả năng spam của một token xuất hiện
100 lần trong 1 email.
Vì vậy chúng ta sử dụng cách thứ ba là tổng
hợp của hai cách trên:
P(X=w | C=spam) = ((s*ns)/Ns)/((ns*s)/Ns+
(nn*n)/Nn))
Còn đối với các token chỉ xuất hiện trong kho

ngữ liệu này mà không xuất hiện trong kho ngữ liệu
kia thì không thể kết luận một token chỉ xuât hiện ở
kho ngữ liệu spam thì không bao giờ xuất hiện trong
kho ngữ liệu non-spam và ngược lại. Cách thích hợp
thì ta sẽ gán cho chúng một giá trị phù hợp. Với
những token chỉ xuất hiện trong kho ngữ liệu spam
thì ta gán xác suất spam cho nó là giá trị N gần với
1 ( chẳng hạn 0,9999) và ngược lại thì gán xác suất
spam là giá trị M gần với 0 ( chẳng hạn 0,0001).
Như vậy ta có công thức tính xác suất spam
của token dựa trên số lần xuất hiện và số email
chứa nó là :
P = Max ( M, Min ( N, ((ns*s)/Ns)/((ns*s)/Ns+
(nn*n)/Nn) ) )
ns : số email chứa token trong kho spam
nn : số email chứa token trong kho non-spam
s : số lần token xuất hiện trong kho spam
n : số lần token xuất hiện trong kho non-spam
Ns : tổng số email trong kho spam
Nn : tổng số email trong kho non-spam

21 | P a g e


IV.

ỨNG DỤNG
1. Đặt vấn đề
Thư rác bắt đầu được gọi là "spam" sau chương
trình truyền hình có tên "Monty Python’s Flying Circus".

Trong show truyền hình này, một nhóm cướp biển Vikings
đã vào ăn trong một nhà hàng chuyên phục vụ đồ hộp
(spam), rồi hát toáng lên một ca khúc lặp đi lặp lại 2 chữ
"quảng cáo". Ý nghĩa ban đầu của thư rác rất rõ ràng: Một
thứ lặp đi lặp lại và gây ra sự bực tức, khó chịu cho những
người xung quanh. Đó chỉ là trong một phạm vi hẹp còn
trong môi trường internet khi không còn khoảng cách về
địa lý nữa thì sẽ có rất nhiều người phải chịu sự bực tức,
cảnh nhàm chán gây ức chế tâm lý và cực kỳ mất thời
gian vào nó.
Phần lớn các thư không mời mà đến, các thư chào
hàng quảng cáo bị cho là thư rác theo nhận xét của số
đông người dùng thư điện tử. Đây là vấn đề nan giải mà
các hệ thống, hòm mail, các nhà quản trị mạng đang phải
đối mặt trong thời điểm hiện nay khi mà xã hội thông tin
ngày càng phát triển với tốc độ chóng mặt. Để lọc và
phát hiện thư rác, cần có giải pháp lâu dài như các biện
pháp kĩ thuật, quy ước xã hội và có thể dùng đến pháp
luật. Nhưng khi các giải pháp này được thi hành thì chỉ
trong một khoảng thời gian ngắn chúng đã bị phá vỡ bởi
các spammer, nguyên nhân chính là họ luôn nghĩ ra
những cái bẫy đánh lừa người dùng hay lách luật mà các
tổ chức chống thư rác quy ước.
Như vậy giải pháp ngăn chặn thư rác nào hiệu quả
và dùng được lâu dài? Một phương pháp tốt nhất đó là để
chính người dùng thư điện tử ngăn chặn thư rác, bởi họ
hiểu vấn đề một cách tường minh nhất. Chúng ta sẽ dùng
cảm nhận về thư rác của mỗi người để huấn luyện cho
các bộ lọc thư rác của chính họ. Mỗi bộ lọc sẽ xử lý thư
rác tùy theo phong cách của từng người dùng thư điện tử.

Và mô hình thống kê Bayes được áp dụng để thực thi ý
tưởng này.
Từ những đặc điểm trên, ta thấy rằng việc xây dựng
được một bộ lọc thư rác thông minh có thể loại bỏ một
cách chính xác hiện nay là một nhiệm vụ còn nhiều thách
thức.
2.

Bài toán

Thư điện tử là một trong những phương tiện để giao
tiếp đáng tin cậy và hầu như không tốn kém chi phí sử
22 | P a g e


dụng. Phạm vi sử dụng của nó rộng khắp trên toàn thế
giới và có thể dễ dàng truy cập bằng hầu hết các phương
tiện truyền thông đã biến nó thành nạn nhân của những
kẻ spam. Hậu quả đơn giản nhất là làm tốn băng thông
mạng và nghiêm trọng hơn là làm mất thời gian của
người dùng thư điện tử, làm lan truyền vi rút máy tính. Có
thời điểm người ta thống kê được rằng có đến 60% thư
điện tử là thư rác và mỗi ngày một người dung thư điện tử
phải nhận ít nhất là 6 cú spam.
Chúng ta không thể đổi địa chỉ hòm thư mỗi lần bị
spam bởi điều này không những không hạn chế được thư
rác mà có khi còn làm cho nó gia tăng. Vậy cần phải tìm
ra một giải pháp chống thư rác sử dụng bộ lọc được gắn
thuật toán phân loại với tính năng hiệu quả và kĩ thuật
đơn giản dễ cài đặt. Và một yêu cầu không thể thiếu là có

làm sao với thuật toán đó những kẻ spam hiểu rằng việc
chúng cố tình spam là vô dụng.
a. Tiền xử lý mỗi lá thư điện tử

Bộ lọc cá nhân được tích hợp vào mỗi địa chỉ
hòm thư của người dùng. Nó luôn luôn ở trạng thái
chờ thư đến để xử lý. Một khi thư được gửi đến địa
chỉ người dùng thì thư đó phải được phân loại có là
thư rác hay không. Nếu là thư rác thì nó bị ném
ngay vào thư mục ‘sọt rác’ ngược lại sẽ được cho
vào thư mục ‘thư đến’ chờ người dùng duyệt. Để có
được kết quả đó là quả một quá trình kiểm duyệt
nghiêm ngặt kết hợp nhiều công đoạn như đánh giá
địa chỉ người gửi, thư được gửi đến từ IP, DNS nào có
nằm trong blacklist của tổ chức chống thư rác quốc
tế hay không, hay đơn giản hơn là xem thư đó có sai
với định dạng của một lá thư thông thường hay
không (ví dụ tiêu đề thư quá nhiều dấu than, dấu
hỏi, hay viết hoa toàn bộ, màu sắc nhòe nhoẹt,….
Qua bước sàng lọc ở trên chúng ta bắt đầu
tiền xử lý cho bộ lọc Bayes. . Với mỗi thư chúng ta
quét toàn bộ văn bản bao gồm header và mã nhúng
HTML kể cả javascript của mỗi thông điệp. Hiện tại
chúng ta đánh giá các kí tự gồm chữ và số, nét
gạch, dấu than và dấu $ vào các thẻ, và những cái
còn lại cho vào các thẻ riêng biệt. Bỏ qua các thẻ
mà chỉ chứa các chữ số. và cũng bỏ qua các đoạn
comment HTML, tách các thẻ đó ra và không cần
23 | P a g e



đánh giá. Như vậy sau bước này một lá thư sẽ ứng
với một tập hợp chứa các thẻ riêng biệt.
b. Dùng luật Bayes tính xác suất

Tính xác suất cho mỗi thẻ ta dùng luật Bayes
để tính. Giả sử ta cần tính xác suất cho thẻ chứa từ
‘promotion’. Từ này chúng ta thường xuyên gặp
trong thư điện tử mời chào dịch vụ maketing. Công

thức tính theo luật Bayes:
Trong đó:
 Pr(S|W) là xác suất mà thư mà chứa từ
‘promotion’ là thư rác
 Pr(S) là xác suất mà thư bất kì là thư rác
 P(W|S) là xác suất mà từ "promotion" xuất
hiện trong thư rác
 Pr(H) là xác suất mà một bản tin bất kì không
là thư rác
 P(W|H) là xác suất mà từ "promotion" xuất
hiện trong thư rác
Như đã nói ở trên, những thống kê gần đây cho thấy
80% thư điện tử là thư rác nên ta sẽ có:

Tuy nhiên để cho đơn giản và đã qua thực tế nên
người ta chọn các xác suất trước là giống nhau và
đều có giá trị bằng 0.5.
Tức là:

Bộ lọc mà dùng giả thiết này được gọi là "không đối

xứng", có nghĩa rằng chúng không có sự đối xử
phân biệt các thư đến. Giả thiết này cho phép rút

gọn công thức ở trên thành:
Bộ lọc thư rác Bayesspam vận dụng chính xác công
thức trên để tính xác suất cho mỗi từ đơn.
24 | P a g e


Sau khi đã tính được xác suất thư chứa từ đơn là thư
rác ta cần kết hợp các xác suất đơn đó lại thành
một xác suất cuối cùng. Xác suất này dùng để đánh
giá thư mà chứa tất cả các từ đơn đó có xác suất là

thư rác là bao nhiêu. Công thức tính xác suất kết
hợp là:
Trong đó:
 p là xác suất thư đang xét là thư rác
 p1là xác suất p(S|W1), ứng với từ đầu tiên (ví
dụ từ "promotion")
 p2 là xác suất p(S|W2) , ứng với từ thứ hai (ví
dụ từ "offer")
 pN là xác suất p(S|WN) , ứng với từ thứ N (ví
dụ từ "home")
Kết quả p thường được dùng so sánh với một
ngưỡng nào đó để quyết định thư đang xét có xác
suất p đó có là thư rác hay không. Nếu p lớn hơn giá
trị ngưỡng, thư đó sẽ bị đánh dấu là thư rác, ngược
lại sẽ không bị đánh dấu là thư rác.
c. Huấn luyện cho bộ lọc Bayes


Sử dụng hai tập thư điện tử huấn luyện, một
tập là thư rác và tập còn lại không phải là thư rác.
Mỗi tập chứa khoảng 4000 thư. Đếm số lần xuất
hiện của mỗi thẻ trong mỗi tập thư điện tử. Mỗi lần
đếm kết thúc với hai bảng băm. Mỗi bảng băm
tương ứng với mỗi tập thư điện tử, bảng này là ánh
xạ các thẻ đến số lần xuất hiện của thẻ đó.
Tiếp theo chúng ta tạo ra bảng băm thứ 3,
bảng băm này ánh xạ mỗi thẻ tới xác suất mà một
email chứa nó là email spam. Ta tính theo công thức
sau đây:

Trong đó:
 Ngood ứng với số thư không phải là thư rác.
25 | P a g e


×