袁連海 李湘文 徐 晶
(成都理工大學(xué)工程技術(shù)學(xué)院 樂山 614000)
電子郵件因?yàn)槠鋬r(jià)格低廉、使用方便、支持非實(shí)時(shí)通信等優(yōu)點(diǎn),逐漸成為當(dāng)今主要的網(wǎng)絡(luò)應(yīng)用。電子郵件流行的結(jié)果是出現(xiàn)了大量的垃圾郵件,從而大大影響了正常的通信,垃圾郵件嚴(yán)重制約了人們使用電子郵件。中國互聯(lián)網(wǎng)協(xié)會(huì)將具有以下特點(diǎn)的電子郵件劃分為垃圾郵件[1]:
1)垃圾郵件能夠隱藏發(fā)件人身份、地址和標(biāo)題等信息;
2)垃圾郵件對于收件人不能拒絕;
3)垃圾郵件包含欺詐信息;
4)具有傳播性質(zhì)的電子郵件,如廣告、電子雜志和宣傳材料,以任何形式發(fā)送給收件人,但未事先征得他們的同意。
許多國家制定了反對垃圾郵件的法律法規(guī),我國也在過去推出了一些限制垃圾郵件的法律,但是,因?yàn)槔]件具有一定的利益驅(qū)動(dòng),目前垃圾郵件依然很嚴(yán)重。除了國家制定法律防止垃圾郵件發(fā)送外,很多郵件服務(wù)器使用技術(shù)方法來進(jìn)行垃圾郵件過濾,例如增加黑名單、采用敏感詞語過濾規(guī)則、使用白名單等方法。目前比較流行的垃圾郵件過濾方法有決策樹、Boosting、K 近鄰、支持向量機(jī)、貝葉斯原理等[3]。
對垃圾郵件進(jìn)行過濾本質(zhì)上是將郵件按照一定的規(guī)則進(jìn)行分類,然后將郵件分類成正常郵件和垃圾郵件,當(dāng)今最常用的過濾方法基本上都是基于貝葉斯原理模型進(jìn)行設(shè)計(jì)的。該算法是自適應(yīng)具有統(tǒng)計(jì)功能的機(jī)器學(xué)習(xí)算法。目前包括幾種基于貝葉斯原理的過濾算法:基于多變量、基于多項(xiàng)式和基于布爾類型屬性,這些方法總體上是采取對郵件進(jìn)行分類,從而判斷收到的郵件是不是屬于垃圾郵件。
樸素貝葉斯需要假設(shè)所有的特征值都有同樣的重要性,而且相互獨(dú)立。這種假設(shè)前提和現(xiàn)實(shí)實(shí)際情況是有一定差別,從而導(dǎo)致判斷錯(cuò)誤的情形出現(xiàn)。研究人員為了解決垃圾郵件誤判問題,在各個(gè)方面對貝葉斯原理進(jìn)行提高和改進(jìn)。網(wǎng)絡(luò)分類器法通過直接對郵件結(jié)構(gòu)進(jìn)行一定的擴(kuò)展,采用增加不同特征值間的依賴關(guān)系;特征值權(quán)重法是一種基于權(quán)向量的過濾算法。還有一些研究人員研究了使用二進(jìn)制方法表示郵件特征向量,使用特征值提取特征項(xiàng),貝葉斯原理通過計(jì)算一個(gè)郵件是否屬于垃圾郵件的概率來進(jìn)行垃圾郵件判斷,具有簡單、有效等特點(diǎn)。
文章提出了改進(jìn)的貝葉斯公式的垃圾郵件過濾系統(tǒng),采用特征項(xiàng)的單詞出現(xiàn)的頻率來表示特征向量,使用單詞的特征項(xiàng),系統(tǒng)在垃圾郵件識(shí)別準(zhǔn)確性方面有很大提高。
傳統(tǒng)的貝葉斯分類器的功能是將郵件進(jìn)行分類。圖1 表示傳統(tǒng)的貝葉斯分類器示意圖,圖中節(jié)點(diǎn)M 表示類別集合的某個(gè)元素,節(jié)點(diǎn)x=(x1,x2,x3,…,xn)是分類的特征向量。假設(shè)有某一待分類的樣本S,分類特征值向量是x=(x1,x2,x3,…,xn),那么樣本S屬于類別Mk的概率為P(M=Mk|X=x)
圖1 貝葉斯分類器
所以,樣本S屬于類別Mk需要滿足以下式(1):
根據(jù)貝葉斯公式和全概率公式,推到出式(2):
在式(2)中,因?yàn)閄=x的概率和類別Mn無關(guān),所以只需要計(jì)算出P(X=x|M=Mn)以及P(M=Mn)兩個(gè)概率。通常第一個(gè)值通過似然函數(shù)獲得,而第二個(gè)數(shù)值可以通過經(jīng)驗(yàn)取得[7]。在實(shí)際應(yīng)用中,常常假設(shè)特征向量的分量是相互獨(dú)立的,也就是說各個(gè)分量之間是沒有關(guān)聯(lián)的。所以,圖1 貝葉斯分類器可以簡化成圖2結(jié)構(gòu)。
圖2 簡化的貝葉斯分類器
貝葉斯過濾器將郵件劃分成兩類:正常郵件和垃圾郵件。假定某個(gè)電子郵件Mi的特征向量表示為Xmi=(x1,x2,…,xn),則郵件屬于類別M(n在本論文郵件系統(tǒng)中郵件只分為兩類:垃圾郵件用M垃圾表示,正常郵件用F正常表示)的概率計(jì)算公式(4):
由于樸素貝葉斯公式中假定了特征向量的各個(gè)特征值是獨(dú)立的,所以式(4)進(jìn)一步簡化為式(5)。
上述貝葉斯公式郵件過濾器存在兩種情況:第一種誤判是把垃圾郵件當(dāng)成正常郵件,另外一種是將正常郵件看成是垃圾郵件。其中后一種判斷會(huì)帶來更大的損失,為了提高垃圾郵件的判斷正確率,避免把正常的電子郵件看成是垃圾郵件,我們引入一個(gè)參數(shù),只有當(dāng)垃圾郵件的概率大于是正常郵件的一定倍數(shù)時(shí),才會(huì)將正常郵件判斷為垃圾郵件。
所有貝葉斯公式的垃圾郵件分類基本上都是將郵件文本劃分成兩種類別。通常使用的指標(biāo)包括正確率以及查全率。正確率表示系統(tǒng)正確判斷的垃圾郵件數(shù)量和垃圾郵件識(shí)別為正常以及正常郵件識(shí)別為垃圾的比值。查全率表示為正確識(shí)別的垃圾郵件的數(shù)量和樣本中垃圾郵件總數(shù)量的比值。
正確率=正確識(shí)別的垃圾郵件數(shù)量(/垃圾識(shí)輥為正常+正常識(shí)別為垃圾)
查全率=正確識(shí)別的垃圾郵件數(shù)量/垃圾郵件總數(shù)
本系統(tǒng)采用的樣本數(shù)據(jù)是成都理工大學(xué)工程學(xué)院工程訓(xùn)練中心郵件服務(wù)器中包含的歷史郵件作為樣本。其中總共郵件數(shù)目為2000 封電子郵件,經(jīng)過人工識(shí)別分類1100 封電子郵件為垃圾郵件,剩下的900 封為正常郵件。研究中為了重點(diǎn)測試系統(tǒng)的過濾性能,我們將忽略附件和標(biāo)簽。
實(shí)驗(yàn)過程中使用MIME 以及RFC822 電子郵件協(xié)議進(jìn)行了郵件預(yù)處理。處理內(nèi)容包括郵件的格式和正文內(nèi)容進(jìn)行分析提取,分離出電子郵件的正文以及郵件主題。大部分郵件過濾方法在挑選郵件特征值的數(shù)值的時(shí)候常常使用二進(jìn)制數(shù)據(jù)來表示,其優(yōu)點(diǎn)顯然簡單方便,缺點(diǎn)是對某個(gè)特征值在郵件中出現(xiàn)的頻率不能清楚表示。
郵件的特征值通常使用電子郵件的英文單詞、短語以及其他非文本參數(shù)。系統(tǒng)因?yàn)橐呀?jīng)對樣本數(shù)據(jù)做了處理,沒有附件以及其他的HTML 標(biāo)記,本系統(tǒng)采用郵件單詞作為特征值可以重點(diǎn)研究系統(tǒng)性能是否提升。
在對樣本進(jìn)行處理過程中,為了減少特征向量的維度,系統(tǒng)對郵件提取特征值,這樣可以大幅提高郵件過濾系統(tǒng)的過濾速度和準(zhǔn)確率。經(jīng)常使用的特征值提取方法包含詞條和類別相互信息、詞條統(tǒng)計(jì)、詞條期望的熵、文本權(quán)重等方法[8]。
系統(tǒng)采用的提取特征值的步驟為
1)首先,在樣本郵件里面提取出所有單詞,然后刪掉冠詞、介詞和數(shù)詞(例如,郵件里面的如in,of,the,an,a,he以及數(shù)量詞匯等),接著把單詞的不同表現(xiàn)形式如復(fù)數(shù)形式、現(xiàn)在時(shí)、動(dòng)名詞、過去式、形容詞的比較級(jí)以及最高級(jí)等形式進(jìn)行標(biāo)準(zhǔn)化處理;
2)接著統(tǒng)計(jì)每個(gè)單詞在郵件中產(chǎn)生的權(quán)重,并對權(quán)重降序排列;
3)依據(jù)排序結(jié)果,將排列在靠前的單詞作為郵件的特征值;
4)最后把全部郵件樣本的特征值,得到特征向量。
系統(tǒng)中我們將所有郵件樣本數(shù)據(jù)隨機(jī)分為10組相互沒有關(guān)聯(lián)的集合,每個(gè)集合數(shù)據(jù)中包含的郵件數(shù)目相同。系統(tǒng)對樣本數(shù)據(jù)進(jìn)行了10 機(jī)器學(xué)習(xí)以及測試,實(shí)驗(yàn)中挑選一個(gè)集合當(dāng)成測試集,其他9個(gè)集合合并作為訓(xùn)練集。
系統(tǒng)實(shí)驗(yàn)學(xué)習(xí)來得到郵件分類器是為了防止測試的隨機(jī)和偶然性,并且使用相應(yīng)的測試集和對該子集進(jìn)行驗(yàn)證測試。每次測試中分別計(jì)算其郵件分類器的準(zhǔn)確率以及查全率,最后采用10 次測試的平均值作為測試結(jié)果。
表1以及表2是采用樸素貝葉斯算法得到的測試數(shù)據(jù)。在系統(tǒng)郵件測試過程中,使用兩種表示方法:一是通過判斷特征單詞是否出現(xiàn)在郵件中表示,另一種采用特征單詞在樣本數(shù)據(jù)郵件中出現(xiàn)的頻數(shù)來表示,其目的是為了比較不同的郵件特征向量表示方法對郵件過濾系統(tǒng)性能的影響,實(shí)驗(yàn)結(jié)果見表3所示。
表1 基于樸素貝葉斯
表2 改進(jìn)的貝葉斯
表3 不同特征詞的性能參數(shù)
根據(jù)上述實(shí)驗(yàn)結(jié)果我們可以得出結(jié)論,改進(jìn)的貝葉斯原理和樸素貝葉斯方法相比,改進(jìn)的算法的性能相對要好一些,改進(jìn)后的垃圾郵件過濾系統(tǒng)在正確率和查全率兩個(gè)方面都有一定的提升。雖然樸素的貝葉斯公式能夠降低計(jì)算工作量,能夠在一定程度上提升郵件系統(tǒng)的運(yùn)行效率,但是,因?yàn)闆]有考慮很多其他對郵件過濾比較有用的信息,而且,傳統(tǒng)的貝葉斯垃圾郵件過濾方法僅僅把郵件的內(nèi)容作為關(guān)鍵詞的沒有順序的向量空間,也沒有將詞和詞之間的相互關(guān)系考慮進(jìn)去。改進(jìn)的貝葉斯過濾系統(tǒng)將詞和次之間部分依賴關(guān)系進(jìn)行考慮。還有基于單詞頻數(shù)的向量方法比二進(jìn)制向量的表示法要好一些,這是由于這種方法將較多的信息傳遞給了郵件過濾器,從而系統(tǒng)的整體過濾性能有了一定提升。
本垃圾郵件過濾系統(tǒng)的不足之處是:改進(jìn)后的貝葉斯垃圾郵件過濾器的系統(tǒng)時(shí)間開心要比傳統(tǒng)的方法要大,根據(jù)實(shí)驗(yàn)結(jié)果可以知道,改進(jìn)的系統(tǒng)時(shí)間開銷可以達(dá)到10 倍的傳統(tǒng)的過濾方法,也就是說,如果測試的郵件內(nèi)容只有一條語句,改進(jìn)的系統(tǒng)將退化成樸素的貝葉斯方法。
系統(tǒng)使用單詞的特征值在郵件中出現(xiàn)的頻數(shù)作為特征向量,使用改進(jìn)后的貝葉斯原理方法設(shè)計(jì)的垃圾郵件過濾器,根據(jù)單詞頻數(shù)順序來提取郵件的特征值,實(shí)驗(yàn)研究結(jié)果顯示,系統(tǒng)的正確率和查全率都有一定提升。
本次實(shí)驗(yàn)在選取樣本數(shù)據(jù)時(shí),沒有選擇郵件附件以及其他信息,只是對文本的正文內(nèi)容的進(jìn)行過濾。另外,垃圾郵件過濾系統(tǒng)還沒有對攜帶病毒的電子郵件以及在附件中包含病毒的電子郵件進(jìn)行考慮,上述問題是垃圾郵件過濾系統(tǒng)應(yīng)該要解決的,下一步的研究思路包括如何將目前基于規(guī)則的過濾、白名單和黑名單、機(jī)器學(xué)習(xí)算法在垃圾郵件中的應(yīng)用等方面進(jìn)行研究,另外,系統(tǒng)的安全性和如何處理郵件病毒也是需要考慮的問題。