[轉] 貝葉斯推斷及其互連網應用:過濾垃圾郵件

來源:互聯網
上載者:User

標籤:des   blog   http   os   io   使用   ar   art   div   

[連結] 數學的美學世界

上一次,我介紹了貝葉斯推斷的原理,今天講如何將它用於垃圾郵件過濾。

========================================

貝葉斯推斷及其互連網應用

阮一峰

七、什麼是貝葉斯過濾器?

垃圾郵件是一種令人頭痛的頑症,困擾著所有的互連網使用者。

正確識別垃圾郵件的技術難度非常大。傳統的垃圾郵件過濾方法,主要有"關鍵詞法"和"校正碼法"等。前者的過濾依據是特定的詞語;後者則是計算郵件文本的校正碼,再與已知的垃圾郵件進行對比。它們的識別效果都不理想,而且很容易規避。

2002年,Paul Graham提出使用"貝葉斯推斷"過濾垃圾郵件。他說,這樣做的效果,好得不可思議。1000封垃圾郵件可以過濾掉995封,且沒有一個誤判。另外,這種過濾器還具有自我學習的功能,會根據新收到的郵件,不斷調整。收到的垃圾郵件越多,它的準確率就越高。

八、建立曆史資料庫

貝葉斯過濾器是一種統計學過濾器,建立在已有的統計結果之上。所以,我們必須預先提供兩組已經識別好的郵件,一組是正常郵件,另一組是垃圾郵件。

我們用這兩組郵件,對過濾器進行"訓練"。這兩組郵件的規模越大,訓練效果就越好。Paul Graham使用的郵件規模,是正常郵件和垃圾郵件各4000封。

"訓練"過程很簡單。首先,解析所有郵件,提取每一個詞。然後,計算每個詞語在正常郵件和垃圾郵件中的出現頻率。比如,我們假定"sex"這個詞,在4000封垃圾郵件中,有200封包含這個詞,那麼它的出現頻率就是5%;而在4000封正常郵件中,只有2封包含這個詞,那麼出現頻率就是0.05%。(【注釋】如果某個詞只出現在垃圾郵件中,Paul Graham就假定,它在正常郵件的出現頻率是1%,反之亦然。這樣做是為了避免機率為0。隨著郵件數量的增加,計算結果會自動調整。)

有了這個初步的統計結果,過濾器就可以投入使用了。

九、貝葉斯過濾器的使用過程

現在,我們收到了一封新郵件。在未經統計分析之前,我們假定它是垃圾郵件的機率為50%。(【注釋】有研究表明,使用者收到的電子郵件中,80%是垃圾郵件。但是,這裡仍然假定垃圾郵件的"先驗機率"為50%。)

我們用S表示垃圾郵件(spam),H表示正常郵件(healthy)。因此,P(S)和P(H)的先驗機率,都是50%。

然後,對這封郵件進行解析,發現其中包含了sex這個詞,請問這封郵件屬於垃圾郵件的機率有多高?

我們用W表示"sex"這個詞,那麼問題就變成了如何計算P(S|W)的值,即在某個詞語(W)已經存在的條件下,垃圾郵件(S)的機率有多大。

根據條件機率公式,馬上可以寫出

 

公式中,P(W|S)和P(W|H)的含義是,這個詞語在垃圾郵件和正常郵件中,分別出現的機率。這兩個值可以從曆史資料庫中得到,對sex這個詞來說,上文假定它們分別等於5%和0.05%。另外,P(S)和P(H)的值,前面說過都等於50%。所以,馬上可以計算P(S|W)的值:

 

因此,這封新郵件是垃圾郵件的機率等於99%。這說明,sex這個詞的推斷能力很強,將50%的"先驗機率"一下子提高到了99%的"後驗機率"。

十、聯合機率的計算

做完上面一步,請問我們能否得出結論,這封新郵件就是垃圾郵件?

回答是不能。因為一封郵件包含很多詞語,一些詞語(比如sex)說這是垃圾郵件,另一些說這不是。你怎麼知道以哪個詞為準?

Paul Graham的做法是,選出這封信中P(S|W)最高的15個詞,計算它們的聯合機率。(【注釋】如果有的詞是第一次出現,無法計算P(S|W),Paul Graham就假定這個值等於0.4。因為垃圾郵件用的往往都是某些固定的詞語,所以如果你從來沒見過某個詞,它多半是一個正常的詞。)

所謂聯合機率,就是指在多個事件發生的情況下,另一個事件發生機率有多大。比如,已知W1和W2是兩個不同的詞語,它們都出現在某封電子郵件之中,那麼這封郵件是垃圾郵件的機率,就是聯合機率。

在已知W1和W2的情況下,無非就是兩種結果:垃圾郵件(事件E1)或正常郵件(事件E2)。

其中,W1、W2和垃圾郵件的機率分別如下:

如果假定所有事件都是獨立事件(【注釋】嚴格地說,這個假定不成立,但是這裡可以忽略),那麼就可以計算P(E1)和P(E2):

 

 

又由於在W1和W2已經發生的情況下,垃圾郵件的機率等於下面的式子:

 

 

將P(S)等於0.5代入,得到

 

將P(S|W1)記為P1,P(S|W2)記為P2,公式就變成

 

這就是聯合機率的計算公式。如果你不是很理解,點擊這裡查看更多的解釋。

十一、最終的計算公式

將上面的公式擴充到15個詞的情況,就得到了最終的機率計算公式:

 

一封郵件是不是垃圾郵件,就用這個式子進行計算。這時我們還需要一個用於比較的門檻值。Paul Graham的門檻值是0.9,機率大於0.9,表示15個詞聯合認定,這封郵件有90%以上的可能屬於垃圾郵件;機率小於0.9,就表示是正常郵件。

有了這個公式以後,一封正常的信件即使出現sex這個詞,也不會被認定為垃圾郵件了。

(完)

[轉] 貝葉斯推斷及其互連網應用:過濾垃圾郵件

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.