贝叶斯反垃圾邮件技术
一、 貝葉斯反垃圾郵件技術(shù)介紹
貝葉斯是基于概率的一種算法,是Thomas Bayes:一位偉大的數(shù)學(xué)大師所創(chuàng)建的,目前此種算法用于過濾垃圾郵件得到了廣泛地好評。貝葉斯過濾器是基于“自我學(xué)習(xí)”的智能技術(shù),能夠使自己適應(yīng)垃圾郵件制造者的新把戲,同時(shí)為合法電子郵件提供保護(hù)。在智能郵件過濾技術(shù)中,貝葉斯(Bayesian)過濾技術(shù)取得了較大的成功,被越來越多地應(yīng)用在反垃圾郵件的產(chǎn)品中。
二、 貝葉斯過濾算法的基本步驟
1. 收集大量的垃圾郵件和非垃圾郵件,建立垃圾郵件集和非垃圾郵件集。
2. 提取郵件主題和郵件體中的獨(dú)立字符串,例如 ABC32,¥234等作為TOKEN串并統(tǒng)計(jì)提取出的TOKEN串出現(xiàn)的次數(shù)即字頻。按照上述的方法分別處理垃圾郵件集和非垃圾郵件集中的所有郵件。
3. 每一個(gè)郵件集對應(yīng)一個(gè)哈希表,hashtable_good對應(yīng)非垃圾郵件集而hashtable_bad對應(yīng)垃圾郵件集。表中存儲(chǔ)TOKEN串到字頻的映射關(guān)系。
4. 計(jì)算每個(gè)哈希表中TOKEN串出現(xiàn)的概率P=(某TOKEN串的字頻)/(對應(yīng)哈希表的長度)
5. 綜合考慮hashtable_good和hashtable_bad,推斷出當(dāng)新來的郵件中出現(xiàn)某個(gè)TOKEN串時(shí),該新郵件為垃圾郵件的概率。數(shù)學(xué)表達(dá)式為:
A 事件 ---- 郵件為垃圾郵件;
t1,t2 …….tn 代表 TOKEN 串
則 P ( A|ti )表示在郵件中出現(xiàn) TOKEN 串 ti 時(shí),該郵件為垃圾郵件的概率。
設(shè)
P1 ( ti ) = ( ti 在 hashtable_good 中的值)
P2 ( ti ) = ( ti 在 hashtable_ bad 中的值)
則 P ( A|ti ) =P2 ( ti ) /[ ( P1 ( ti ) +P2 ( ti ) ] ;
6. 建立新的哈希表hashtable_probability存儲(chǔ)TOKEN串ti到P(A|ti)的映射
7. 至此,垃圾郵件集和非垃圾郵件集的學(xué)習(xí)過程結(jié)束。根據(jù)建立的哈希表 hashtable_probability可以估計(jì)一封新到的郵件為垃圾郵件的可能性。
當(dāng)新到一封郵件時(shí),按照步驟2,生成TOKEN串。查詢hashtable_probability得到該TOKEN 串的鍵值。
假設(shè)由該郵件共得到N個(gè)TOKEN 串,t1,t2…….tn,hashtable_probability中對應(yīng)的值為 P1 , P2 , ……PN , P(A|t1 ,t2, t3……tn) 表示在郵件中同時(shí)出現(xiàn)多個(gè)TOKEN串t1,t2……tn時(shí),該郵件為垃圾郵件的概率。
由復(fù)合概率公式可得
P(A|t1 ,t2, t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]
當(dāng) P(A|t1 ,t2, t3……tn) 超過預(yù)定閾值時(shí),就可以判斷郵件為垃圾郵件。
三、 貝葉斯過濾算法舉例
例如:一封含有 “ 法無效字符輪無效字符功 ” 字樣的垃圾郵件 A 和一封含有 “ 法無效字符律 ” 字樣的非垃圾郵件 B 。 根據(jù)郵件 A 生成 hashtable_bad ,該哈希表中的記錄為
法: 1 次
無效字符輪: 1 次
無效字符功: 1 次
計(jì)算得在本表中:
無效字符法出現(xiàn)的概率為 0.3
無效字符輪出現(xiàn)的概率為 0.3
無效字符功出現(xiàn)的概率為 0.3
根據(jù)郵件B生成hashtable_good,該哈希表中的記錄為:
法: 1 次
律: 1 次
計(jì)算得在本表中:
法出現(xiàn)的概率為 0.5
律出現(xiàn)的概率為 0.5
綜合考慮兩個(gè)哈希表,共有四個(gè) TOKEN 串:法無效字符論無效字符功無效字符律
當(dāng)郵件中出現(xiàn)“法”時(shí),該郵件為垃圾郵件的概率為:
P = 0.3/ ( 0.3 + 0.5 ) = 0.375
出現(xiàn)“無效字符輪”時(shí),該郵件為垃圾郵件的概率為:
P = 0.3/ ( 0.3 + 0 ) = 1
出現(xiàn)“無效字符功”時(shí),該郵件為垃圾郵件的概率為:
P = 0.3/ ( 0.3 + 0 ) = 1
出現(xiàn)“無效字符律”時(shí),該郵件為垃圾郵件的概率為:
P = 0/ ( 0 + 0.5 ) = 0
由此可得第三個(gè)哈希表 hashtable_probability ,其數(shù)據(jù)為:
無效字符法: 0.375
無效字符輪: 1
無效字符功: 1
律: 0
當(dāng)新到一封含有“功無效字符律”的郵件時(shí),我們可得到兩個(gè)TOKEN串:功 律
查詢哈希表 hashtable_probability 可得:
P (垃圾郵件 | 功) = 1
P (垃圾郵件 | 律) = 0
此時(shí)該郵件為垃圾郵件的可能性為:
P= ( 0*1 ) /[0*1+ ( 1-0 ) * ( 1-1 ) ] = 0
由此可推出該郵件為非垃圾郵件。
四、總結(jié)
葉斯過濾器為什么能夠工作得這么好呢?因?yàn)樨惾~斯過濾器純粹根據(jù)統(tǒng)計(jì)學(xué)規(guī)律運(yùn)作,比起那些需要分析郵件句法或內(nèi)容含義的過濾器來顯然要簡單的多,而且可計(jì)算性強(qiáng)得多。更重要的是,這些標(biāo)記完全可以由用戶根據(jù)自己所接收的垃圾郵件和非垃圾郵件來創(chuàng)建,因而可以獲得一種對用戶來說獨(dú)一無二的過濾器。這意味著垃圾郵件發(fā)送者根本無法猜測出你的過濾器是如何配置的,從而有效地阻截住各類垃圾郵件。
不過,盡管貝葉斯過濾器非常有效,但它仍需要進(jìn)行優(yōu)化才能真正完美。比如它可以結(jié)合 “白名單”降低誤報(bào)率,結(jié)合“黑名單”降低漏過率,還可以利用其他技術(shù)如源址認(rèn)證使其成為更加精確的垃圾郵件過濾器。
相信很多關(guān)注反垃圾郵件的朋友都聽說過貝葉斯過濾算法,但是對于貝葉斯過濾算法是如何過濾垃圾郵件卻不是很了解,郵件群發(fā)網(wǎng)在此就列出它的過濾步驟,如下:
??? 1.收集大量的垃圾郵件和非垃圾郵件,建立不同的集。
??? 2.提取郵件主題和郵件體中的獨(dú)立字串,然后獲取頻率。按照上述的方法分別處理垃圾郵件集和非垃圾郵件集中的所有郵件。
??? 3.每一個(gè)郵件集對應(yīng)一個(gè)哈希表,hashtable_good對應(yīng)非垃圾郵件集而hashtable_bad對應(yīng)垃圾郵件集。
??? 4.計(jì)算每個(gè)哈希表中關(guān)鍵字符串出現(xiàn)的概率P=(某字頻)/(對應(yīng)哈希表的長度)
??? 5.綜合考慮hashtable_good和hashtable_bad,推斷出當(dāng)新郵件中出現(xiàn)某個(gè)字串時(shí),該新郵件為垃圾郵件的概率。
??? 6.建立新的哈希表 hashtable_probability
??? 7.至此,垃圾郵件集和非垃圾郵件集的學(xué)習(xí)過程結(jié)束。根據(jù)建立的哈希表 hashtable_probability可以估計(jì)一封新到的郵件為垃圾郵件的可能性。
在今天的反垃圾郵件技術(shù)中,則融合了以前大部分實(shí)用技術(shù)的精華,采用權(quán)重算法讓判斷垃圾郵件的工作更精確、更智能。但保守的人們還是不愿把規(guī)則設(shè)置的過嚴(yán),因?yàn)闆]有任何一個(gè)用戶希望把自己正規(guī)的郵件當(dāng)作垃圾郵件處理掉。本文來源于網(wǎng)絡(luò)。
??? 貝葉斯過濾是根據(jù)貝葉斯準(zhǔn)則和貝葉斯定理,以已知垃圾郵件和非垃圾郵件為樣本,來判斷下一封郵件是垃圾郵件的概率的技術(shù)。跟普通的內(nèi)容過濾技術(shù)不 同,貝葉斯過濾特征的來源比較多,可以采用郵件正文單詞、郵件頭信息(發(fā)送者、傳遞路徑等)、郵件的HTML編碼等作為判斷的特征元素,因此對垃圾郵件的 判斷能夠做到更全面、更準(zhǔn)確。更重要的是,貝葉斯過濾還具有自學(xué)習(xí)功能,能夠?qū)W習(xí)分辨垃圾郵件與非郵件之間的差別,差別是用概率來表示的,并且自動(dòng)應(yīng)用到 以后的檢測中。在收到幾百封信件后,一個(gè)好的貝葉斯過濾器就可以自動(dòng)識別各種垃圾郵件。
使用貝葉斯算法來進(jìn)行垃圾郵件過濾的基本步驟是:
1.收集樣本垃圾郵件和非垃圾郵件,建立垃圾郵件集和非垃圾郵件集;
2.在垃圾郵件集和非垃圾郵件集中,提取特征來源中的獨(dú)立字符串a(chǎn)bc,并統(tǒng)計(jì)該字符串出現(xiàn)的次數(shù)(字頻);針對垃圾郵件集和非垃圾郵件集,分別建立哈希表hash_spam和hash_normal,在哈希表中存儲(chǔ)特征字符串a(chǎn)bc字頻的映射關(guān)系;
3.計(jì)算每個(gè)哈希表中特征字符串a(chǎn)bc出現(xiàn)的概率P=(該特征字符串的字頻)/(對應(yīng)哈希表的長度);
4.綜合考慮hash_spam和hash_normal,推斷當(dāng)新接收的郵件中出現(xiàn)特征字符串a(chǎn)bc時(shí),該新郵件為垃圾郵件的概率。
如果:A事件 郵件為垃圾郵件;t1,t2 …….tn代表特征字符串;則P(Ati)表示在郵件中出現(xiàn)TOKEN串ti時(shí),該郵件為垃圾郵件的概率。
設(shè)P1(ti)=ti在hash_spam中的值;P2(ti)=ti在hash_normal中的值;則P(Ati)=P2(ti)/[(P1(ti)+P2(ti)) ;
5.建立新的哈希表hash_probability存儲(chǔ)特征字符串ti到P(Ati)的映射;
6.根據(jù)建立的哈希表hash_probability可以估計(jì)一封新到的郵件為垃圾郵件的可能性。
這樣,當(dāng)接收到一個(gè)郵件時(shí),首先按照步驟2生成特征字符串。查詢hash_probability得到該字符串的鍵值。假設(shè)由該郵件共得到N個(gè)特征字符 串t1,t2…….tn,hashtable_probability中對應(yīng)的值為P1,P2……PN,P(At1,t2,t3……tn)表示在郵件中同 時(shí)出現(xiàn)多個(gè)字符串t1,t2……tn時(shí),該郵件為垃圾郵件的概率。
由復(fù)合概率公式可得:
P(At1,t2,t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]
當(dāng)P(At1,t2,t3……tn)超過預(yù)定閥值時(shí),就可以判斷郵件為垃圾郵件。 當(dāng)新郵件到達(dá)的時(shí)候,就通過貝葉斯過濾器分析,通過使用各個(gè)特征來計(jì)算郵件是垃圾郵件的概率。通過不斷的分析,過濾器也不斷地獲得自更新。如果通過各種特征判斷一個(gè)包含單詞abc的郵件是垃圾郵件,那么單詞abc成為垃圾郵件特征的概率就增加了。
這樣,貝葉斯過濾器就有了自適應(yīng)能力,既能自動(dòng)進(jìn)行,也可以用戶手工操作,也就更能適應(yīng)單個(gè)用戶的使用。而垃圾郵件發(fā)送者要獲得這樣的適應(yīng)能力就很難 了,因此,很難逃避過濾器的過濾。當(dāng)然他們還是能夠?qū)⑧]件偽裝成很普通的正常郵件樣子的。比如,垃圾郵件發(fā)送者能去對某個(gè)人的過濾器進(jìn)行判斷;又比如,采 用發(fā)送回執(zhí)的辦法來了解哪些郵件被用戶打開了等,這樣他們就可以適應(yīng)過濾器了。
設(shè)計(jì)優(yōu)良的貝葉斯過濾器,可以識別99.7%以上的垃圾郵件,而且誤判率極低,是目前最有效的反垃圾郵件技術(shù)。這主要是因?yàn)樨惾~斯過濾具有以下特點(diǎn)。
貝葉斯過濾技術(shù)對郵件的所有內(nèi)容進(jìn)行分析,不僅僅是其中的某個(gè)關(guān)鍵詞,而且它能判別郵件是垃圾郵件還是正常郵件。例如:包含"free""cash"" 發(fā)票"字樣的郵件不一定是垃圾郵件,如果采用關(guān)鍵字過濾技術(shù),顯然難以達(dá)到理想的效果。而貝葉斯過濾技術(shù)既考慮了這些詞在垃圾郵件中出現(xiàn)的概率、又考慮了 它在正常郵件中的概率,綜合考慮這些因素做出判斷??梢哉f,貝葉斯過濾技術(shù)具有一定的智能,它對郵件中的關(guān)鍵詞能綜合地進(jìn)行評判,可以把握"好"與"壞" 之間的平衡。顯然,這種技術(shù)遠(yuǎn)遠(yuǎn)高于非1即0的靜態(tài)過濾技術(shù)。
貝葉斯過濾技術(shù)具備自適應(yīng)功能,通過學(xué)習(xí)新的垃圾郵件及正常郵件樣本,它 將能對抗最新的垃圾郵件,并且對變體字有奇效。比如,垃圾郵件發(fā)送者開始使用"f-r-e-e"來代替"free"這樣能夠繞過關(guān)鍵字檢查,除非"f- r-e-e"被加到新的關(guān)鍵字中。而對貝葉斯過濾技術(shù)而言,當(dāng)它發(fā)現(xiàn)郵件中含有"f-r-e-e"時(shí),由于正常郵件中從來沒有發(fā)現(xiàn)這個(gè)詞,因此它是垃圾郵 件的可能性將急劇增加,"f-r-e-e"這個(gè)新詞無疑成了垃圾郵件的指示器。再比如,垃圾郵件中用5ex代替sex,貝葉斯過濾技術(shù)也可推算出它是垃圾 郵件的可能性也急劇增加。
貝葉斯過濾技術(shù)更加個(gè)性化。它能學(xué)習(xí)并理解用戶對郵件的偏好。如前所述,"mortgage"抵押一詞對軟件公司而言意味著垃圾,但對金融類公司則意味著郵件。貝葉斯過濾技術(shù)能根據(jù)用戶的這種偏好進(jìn)行處理。
貝葉斯過濾技術(shù)支持多語種或者說與編碼無關(guān)。這是因?yàn)樗治龅氖亲执?#xff0c;無論是數(shù)字、詞、符號、還是別的什么,當(dāng)然與語言無關(guān)。
貝葉斯過濾器很難被欺騙。垃圾郵件發(fā)送高手通常通過減少垃圾詞匯(如free、viagra、發(fā)票)或者在信中多加入一些好的詞匯(如合同、文件)來繞 過一般的郵件內(nèi)容檢查,但由于貝葉斯過濾技術(shù)具有個(gè)性化的色彩,要想成功地繞過它的檢查,就不得不對每個(gè)收件人的偏好進(jìn)行研究,這簡直是"不可能完成的任 務(wù)",垃圾郵件發(fā)送者是無法容忍的。若采用變化字,則如前所述,貝葉斯過濾技術(shù)判斷其為垃圾郵件的可能性反而增加。
實(shí)踐也證明,貝葉斯過濾器在用戶端和服務(wù)器中效果是非常明顯的,如優(yōu)秀的貝葉斯過濾器能夠識別超過99.9%的垃圾郵件。
from:http://hi.baidu.com/jrckkyy/blog/item/4bebc9f4ef012cd3f3d385db.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的贝叶斯反垃圾邮件技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中描绘简单曲线和点
- 下一篇: 清理系统垃圾的快捷方法