丁迎春 施芳芳
摘要:電子郵件給人們通信帶來便利的同時,垃圾電子郵件也泛濫成災(zāi),設(shè)計一種有效防垃圾郵件的方法勢在必行,單純利用支持向量機與樸素貝葉斯算法仍存在局限性,將支持向量機超平面快速分類的特點與樸素貝葉斯算法的彈性相結(jié)合,設(shè)計實現(xiàn)兩段式的垃圾郵件過濾方法。
關(guān)鍵詞:反垃圾郵件;兩段式;支持向量機;樸素貝葉斯算法
中圖分類號:TP391.1 文獻標識碼:A 文章編號:1009-3044(2018)23-0052-03
Abstract: Spam emails are flooded meanwhile e-mail brings convenience to people, It is imperative to design an effective anti-spam method. There are still limitations in using support vector machine and Bayesian algorithm alone. In this paper, combine the characteristics of fast classification of SVM hyperplanes with the elasticity of Naive Bayes algorithm, design and implement two-stage spam filtering method.
Key words: Anti-Spam; Two-stage; Support Vector Machine; Naive Bayes algorithm
1 引言
電子郵件是現(xiàn)今人們之間交流的常用方式之一,其快捷、低成本、信息多樣化的特點使其成為互聯(lián)網(wǎng)上應(yīng)用最廣泛的服務(wù)。統(tǒng)計數(shù)據(jù)顯示,2017年的電子郵件數(shù)量同比增長了18%,絕大部分用戶在進行商務(wù)活動時仍選擇電子郵件進行溝通交流。伴隨著電子郵件需求度、使用量的提高,也出現(xiàn)了垃圾郵件泛濫現(xiàn)象。垃圾郵件的處理會讓企業(yè)浪費大量時間以及人力資源成本,甚至造成生產(chǎn)效益降低。此外垃圾郵件的內(nèi)容低俗,會對中國目前超1.69億名上網(wǎng)的未成年青少年造成不良影響。垃圾郵件內(nèi)容還包含“網(wǎng)絡(luò)釣魚”詐騙術(shù),以假冒金融機構(gòu)發(fā)布信息誘騙使用者,獲取其銀行賬號、密碼等[1]。設(shè)計高效的垃圾郵件過濾方法勢在必行。
2 過濾垃圾郵件的理論方法
針對垃圾郵件帶來的困擾,過濾垃圾郵件的方法或理論也推陳出新,但總有漏網(wǎng)之魚,正所謂“道高一尺,魔高一丈”,攔截率達到百分之百實在太難,但好的過濾機制應(yīng)該從低誤判率做起,在此基礎(chǔ)上再追求高攔截率?,F(xiàn)流行的垃圾郵件判別與過濾的方法和理論主要有支持向量機[2]和貝葉斯算法[3]等。
2.1 樸素貝葉斯算法
Spam Assassin已嵌入貝氏算法作垃圾郵件過濾[5]。其最大優(yōu)點在于經(jīng)由貝氏算法計算后,會針對郵件產(chǎn)生一組易于識別的機率分數(shù),屆時與用戶在郵件服務(wù)器所設(shè)定的閾值進行比對,若分數(shù)超過閾值,則判定該文件為垃圾郵件,而閾值又可依經(jīng)驗設(shè)定,如果發(fā)現(xiàn)過濾器誤刪過多正常信件,可以將閾值訂得較為寬松,就個性化而言,貝氏分類法算是較彈性的一種規(guī)則。
2.2支持向量機
支持向量機是一種用于機器學(xué)習的算法,其核心思想是針對訓(xùn)練數(shù)據(jù)集,利用定義的特征值[6],以數(shù)學(xué)的方式訓(xùn)練函數(shù),計算出一個最理想的超平面,然后通過此超平面分類測試數(shù)據(jù)判斷其準確率,當準確率超過一個標準值又有意義,即可分類新的未知數(shù)據(jù),將所有欲分類的數(shù)據(jù)快速分類到正確的類別。其基本方法論是在建構(gòu)一個線性分割超平面,以線性的模式去執(zhí)行非線性的分類范圍,而該超平面則是由最大化正集與負集間距離所得出的。由于分類垃圾郵件時會有大量的數(shù)據(jù)與特征值,其訓(xùn)練過程將耗費不少時間,但使用支持向量機通過數(shù)學(xué)的方式可以讓事后整體分類速度大幅提升,達到極佳的分類效果。
3 垃圾郵件過濾方法設(shè)計
將SVM分類算法所能形成的模糊區(qū)間及快速分類的特性與貝氏算法通過樣本的大量建立及提高機率分數(shù)給予的準確性進行有效整合,以期取得更好的過濾效果。在郵件樣本的選取上,分為訓(xùn)練樣本與測試樣本。訓(xùn)練樣本用于挑選SVM關(guān)鍵詞以及貝氏關(guān)鍵詞數(shù)據(jù)庫的建立。按照垃圾郵件比正常郵件為4:1進行取樣,按照中、英文郵件分類,各取垃圾郵件為800封,正常郵件200封。測試樣本也中英文郵件分類,樣本數(shù)量中、英文各取垃圾郵件與正常郵件500封。樣本來源方面,英文郵件使用ling-spam、TREC Spam Corpus[6]以及個人收集的混合型樣本;中文郵件則為收集多位用戶信件的混合型樣本,其中測試樣本與訓(xùn)練樣本為個別收集。實驗流程主要以程序訓(xùn)練、挑選SVM關(guān)鍵詞、SVM分類、決定SVM分類后模糊區(qū)間范圍,以及貝氏算法計算器率分數(shù)。
3.1 訓(xùn)練關(guān)鍵詞
訓(xùn)練關(guān)鍵詞的方式以統(tǒng)計式斷詞法的概念與程序紀錄字詞出現(xiàn)次數(shù)為主,包括在垃圾郵件中出現(xiàn)次數(shù)、正常郵件出現(xiàn)次數(shù)、垃圾郵件中出現(xiàn)封數(shù),與正常郵件出現(xiàn)封數(shù)等信息。其中“出現(xiàn)封數(shù)”為關(guān)鍵詞在不同郵件類別出現(xiàn)過的封數(shù)紀錄,可適用于決定SVM分類的[7]關(guān)鍵詞挑選條件,以及貝氏數(shù)據(jù)庫中關(guān)鍵詞機率分數(shù)的紀錄。
在關(guān)鍵詞的擷取上,中英文樣本方法不同。英文主要以空格符或標點符號來決定擷取單字的位置,而后挑選出來做次數(shù)、封數(shù)的紀錄。由于英文在信息索引上較容易識別,且單字通常即可代表完整意義,故關(guān)鍵詞的決定則以其在文件中出現(xiàn)的次數(shù)、封數(shù)的頻率為主。然而有些單字出現(xiàn)頻率雖高,但卻不具備關(guān)鍵字特性,如人稱代詞、連接詞等。對于中文字詞的擷取,由于一個全角中文字大小為2bytes,且文句中字與字,或詞與詞之間并沒有明顯的空白或標點符號隔開,加上目前的中文郵件事實上多屬中英文夾雜信件,因此在斷詞方法上采取以ASCII碼比對,分離出英文或中文字,再進行英文關(guān)鍵詞的訓(xùn)練,以及中文字符串的斷詞,紀錄其出現(xiàn)次數(shù)與封數(shù)。針對中文斷字以每兩個中文字做斷詞,超過兩個字以上的詞句,實際上也以兩個字為基本單位。另外,以每兩個字做斷詞或許有些詞不具意義,但在樣本數(shù)量足夠的訓(xùn)練情況下,具有意義的關(guān)鍵詞排序也會靠前。
3.2 Information Gain
3.3關(guān)鍵詞轉(zhuǎn)換SVM特征向量
經(jīng)由Information Gain計算關(guān)鍵詞分數(shù)后,分別擷取“垃圾信關(guān)鍵詞”與“正常信關(guān)鍵詞”并分成兩個方向。
(1)Overlapping Keywords: 垃圾郵件關(guān)鍵詞的條件是垃圾郵件的封數(shù)大于正常信件出現(xiàn)的封數(shù),且按Information Gain值由大至小排序,取前100名;同樣的正常郵件關(guān)鍵詞是正常信件的封數(shù)大于垃圾信的封數(shù),按Information Gain值排序取前100名,然而在訓(xùn)練樣本中,正常郵件為200封,加上一般正常郵件的性質(zhì)為字數(shù)較少、無特定類別,因此最后訓(xùn)練出來符合上述條件的正常信關(guān)鍵詞自然比垃圾信件的關(guān)鍵詞數(shù)量少。
(2)Independent Keywords: 垃圾郵件關(guān)鍵詞條件為其在正常信件中出現(xiàn)次數(shù)為0者,再依Information Gain值排序挑選前100名;正常信關(guān)鍵詞的挑選以此字詞在垃圾信件中出現(xiàn)次數(shù)為0,再依Information Gain值排序挑選。如上述提及正常信件的性質(zhì),符合此條件而產(chǎn)生的中文郵件關(guān)鍵詞共111個,英文郵件共109個。之后依決定的關(guān)鍵詞,利用LIBSVM分類工具將其轉(zhuǎn)換成SVM向量。
3.4 SVM設(shè)定與訓(xùn)練
SVM型態(tài)為Classification中的C-SVC,而核心函數(shù)則選擇RBF。主要目的在于C-SVC能依靠設(shè)定的參數(shù)-c與-g,訓(xùn)練出將錯誤最小化的超平面,而參數(shù)-c和-g的訓(xùn)練,LIBSVM內(nèi)所附的grid.py程序能經(jīng)由反復(fù)測試,找出最佳的c值與g值,之后在執(zhí)行訓(xùn)練程序(svmtrain.exe)時將參數(shù)鍵入。
3.5 設(shè)定邊界范圍
經(jīng)由SVM分類后的資料,主要以正、負極區(qū)分,即[y=w·x+b=0]計算后大于0者屬于垃圾郵件,小于0者則判為正常郵件。在實際情形中,預(yù)測信件通常與數(shù)據(jù)庫訓(xùn)練樣本不重復(fù),又很有可能一封正常信,因出現(xiàn)少許偏向垃圾信的關(guān)鍵詞,經(jīng)計算后結(jié)果為+0.002,依SVM分類的規(guī)則,將此封郵件歸為垃圾信,但其所處的平面空間,距離超平面其實是很近的。故為了避免類似的偶發(fā)情形出現(xiàn),需要設(shè)定一個特定范圍,將落在接近[y=w·x+b=0]兩側(cè)模糊區(qū)的數(shù)據(jù)挑選出來交由第二層貝氏過濾法計算。在SVM超平面邊界的決定上,采用四種范圍來確定需進行第二道過濾的數(shù)據(jù):
(1)[-1?+1]:測試數(shù)據(jù)經(jīng)由SVM計算后,其值落在此范圍者,挑選出進行貝氏計算。
(2)[-0.5?+0.5]:測試數(shù)據(jù)經(jīng)由SVM計算后,其值落在此范圍者,挑選出進行貝氏計算。
(3)Maximum Distance: 額外訓(xùn)練一組數(shù)據(jù)集,挑選其被判錯中正極最大值與負極最小值,以此二者間距離作為下一組資料在SVM分類后被挑選出的范圍。
(4)Average Distance: 額外訓(xùn)練一組數(shù)據(jù)集,挑選被判錯中正極所有值的平均與判錯中負極所有值的平均值,以此二者間距離作為下一組資料在SVM分類后被挑選出的范圍。
上述(1)、(2)屬于固定對稱范圍,(3)、(4)屬于不對稱范圍隨著訓(xùn)練數(shù)據(jù)改變而變動的邊界范圍,范圍距離越大,被挑選出的數(shù)據(jù)量會越多,造成原先SVM已正確分類的數(shù)據(jù),還會有再次經(jīng)歷貝氏計算的機會。決定邊界范圍后,將待測數(shù)據(jù)交由SVM測試,分數(shù)產(chǎn)生后將落在范圍內(nèi)的數(shù)據(jù)選取出,不論其當初SVM判別的準確度都將進行貝氏過濾。
3.6 貝氏過濾法的實作
針對從SVM模糊區(qū)間挑選出的數(shù)據(jù),以貝氏數(shù)據(jù)庫關(guān)鍵詞的機率分數(shù)作運算,并以默認閾值分數(shù)作為其垃圾郵件抑或正常郵件的判斷依據(jù)。根據(jù)貝氏算法,任意關(guān)鍵詞經(jīng)由計算后所得的機率分數(shù),可視其為一獨立事件,可對其作數(shù)學(xué)運算。以關(guān)鍵詞“專業(yè)”來看,其在垃圾郵件樣本中出現(xiàn)的機率為0.8889,在文件類別只有二種的情況下,“專業(yè)”相對于出現(xiàn)在正常郵件樣本中的機率即為0.1111。明顯可看出此關(guān)鍵詞出現(xiàn)在垃圾郵件的機率較高,故此關(guān)鍵詞可獲得一個機率分數(shù)0.8889-0.1111=0.7778,且隸屬于垃圾信的關(guān)鍵詞,同樣的方法亦可建立一套正常信的關(guān)鍵詞機率分數(shù)。
獲得上述貝氏關(guān)鍵詞機率分數(shù)數(shù)據(jù)庫后,針對待測郵件的記分,本研究提出四種記分方式,即改進的貝氏機率演算方式,其中[P(Wi)]為垃圾信關(guān)鍵詞的機率分數(shù),[P(W'i)]為正常信關(guān)鍵詞的機率分數(shù),[Ni]為關(guān)鍵詞在單一文件中出現(xiàn)的次數(shù):
(1)[iP(Wi)-iP(W'i)]:所出現(xiàn)所有垃圾信關(guān)鍵詞機率累乘-所出現(xiàn)所有正常信關(guān)鍵詞機率累乘。
(2)[iP(Wi)*Ni-iP(Wi')*Ni']:所出現(xiàn)垃圾信關(guān)鍵詞機率乘上此字出現(xiàn)次數(shù)后累乘-所出現(xiàn)正常信關(guān)鍵詞機率乘上此字出現(xiàn)次數(shù)后累乘。
(3)[iP(Wi)-iP(Wi')]:出現(xiàn)所有垃圾信關(guān)鍵詞機率累加-所出現(xiàn)所有正常信關(guān)鍵詞機率累加。
(4)[iP(Wi)*Ni-iP(Wi')*Ni']:所出現(xiàn)垃圾信關(guān)鍵詞機率乘上此字出現(xiàn)次數(shù)后累加-所出現(xiàn)正常信關(guān)鍵詞機率乘上此字出現(xiàn)次數(shù)后累加。
4 結(jié)論
就內(nèi)容比對的垃圾郵件過濾方法而言,特征值、關(guān)鍵詞的選擇與擷取非常關(guān)鍵。將測試的數(shù)據(jù)集與起始訓(xùn)練關(guān)鍵詞、特征值的數(shù)據(jù)集分開收集是合理的。在關(guān)鍵詞的訓(xùn)練與決定方面,針對不同算法則有不同的方式,目的也是希望結(jié)合二者優(yōu)勢,發(fā)揮最大功效。同時通過實驗驗證了兩段式垃圾郵件分類過濾的可行性與準確性。
參考文獻:
[1] 劉文艷.企業(yè)應(yīng)如何防止網(wǎng)絡(luò)釣魚[J].計算機與網(wǎng)絡(luò),2018,44(5):55.
[2] 王振武,孫佳駿,尹成峰.改進粒子群算法優(yōu)化的支持向量機及其應(yīng)用[J].哈爾濱工程大學(xué)學(xué)報,2016,37(12):1728-1733.
[3] 楊雷,曹翠玲,孫建國,張立國.改進的樸素貝葉斯算法在垃圾郵件過濾中的研究[J].通信學(xué)報,2017,38(04):140-148.
[4] 趙健.基于MVC的網(wǎng)絡(luò)信息安全模型設(shè)計[J].電腦知識與技術(shù),2013,9(34):7720-7724.
[5]王新艷基于行為的垃圾郵件過濾技術(shù)研究[J].計算機光盤軟件與應(yīng)用. 2015(3).
[6] 李玉峰.基于hMailServer與SpamAssassin的垃圾郵件過濾服務(wù)器的搭建[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(自然科學(xué)版),2017,38(01):89-92.
[7] Cheng HuaLi,Jimmy Xiangji Huang. Spam filtering using semantic similarity approach and adaptive BPNN[J]. Neurocomputing,2012,92.
[8] Information gain based sensor search scheduling for low-earth orbit constellation estimation[J].Journal of Systems Engineering and Electronics,2011,22(06):926-932.
【通聯(lián)編輯:王力】