摘 要: 傳統的貝葉斯垃圾郵件過濾系統雖然具有較高的分類準確性,但是在處理郵件時存在效率低、消耗資源量大的問題。本文針對貝葉斯垃圾郵件過濾算法進行了在Hadoop MapReduce下的研究,并對判定類別的閾值進行了優化,實驗表明,本文提出的算法降低了正常郵件的誤判率,提高了垃圾郵件判定的準確率和F值,同時提高了垃圾郵件過濾的效率。
關鍵詞: Hadoop;垃圾郵件;貝葉斯;MapReduce
0 引言
電子郵件作為網絡最基本的服務,已成為人們生活中不可或缺的一部分。截止2014年12月,中國網民規模達到6.49億,電子郵件用戶規模3.9億,占網民總數的60.1%[1]。在其中充斥著的海量垃圾郵件給人們的生活帶來了困擾,如何處理海量垃圾郵件已經成為亟待解決的重要問題。
在目前存在的垃圾郵件過濾技術中,以過濾垃圾郵件時使用的過濾方法作為分類點,可將這些垃圾郵件過濾技術分為以下三種:基于黑白名單的過濾技術[2]、基于規則的過濾技術[3]、基于內容統計的過濾技術。其中,貝葉斯垃圾郵件過濾技術分類能力和準確性較高,但其前期需要對訓練樣本進行大量的訓練學習,對訓練樣本依賴性較強。海量垃圾郵件的出現使得傳統的方法無法滿足需要,隨著云計算Hadoop的出現和發展,Hadoop MapReduce模型為海量垃圾郵件的過濾提供了新思路。
針對傳統貝葉斯垃圾郵件過濾算法的缺點,本文對貝葉斯垃圾郵件過濾算法與MapReduce編程模型的結合進行了研究,提出了垃圾郵件過濾的數學模型,并在此基礎上對判定郵件所屬類別的決策分類方法給出了一定的改進。
1 研究基礎介紹
1.1 貝葉斯定理
貝葉斯定理由條件概率和全概率組成,主要用于在已知事件A發生的條件下,判斷A是伴隨著{B1,B2,…,Br}中哪個事件發生。E是隨機試驗,對于E的每一次事件A發生的概率,記為P(A)。設A,B為兩個事件,且P(A)>0。如果兩個事件A和B不是相互獨立的,并且已知事件B中的一個事件已經發生,則能得到關于P(A)的信息。這反映為A在B中的條件概率,其計算公式如式(1)所示:
P(A)通常稱為先驗概率,而條件概率P(A|B)稱為后驗概率。
對于一個統計實驗,樣本空間S是所有可能結果的集合,并且{B1,B2,…,Br}是S的一個劃分。令{p(A);AS}表示定義在S中所有事件的一個概率分布。式(2)為貝葉斯定理的表示:
1.2 Hadoop平臺下郵件流提取和流重組的實現
電子郵件流重組就是對所有五元組中端口為25和110的TCP流進行重組。通過對TCP流序列號的排序重組即可以重組出原郵件流。在建立TCP連接的三次握手時,發送方和接收方會相互發送TCP頭部中的握手報文(即SYN報文,其中SYN=1),而在結束時會互相發送TCP頭部中FIN報文(即FIN報文)。通過獲取以上兩種報文,可以容易地通過FIN報文與SYN報文的seq差值與FIN報文大小的和,求出本條TCP流的長度。用來區別不同的TCP流的標志為五元組[4](即源IP、源端口號、目的IP、目的端口號、傳輸層協議),其能夠對不同的TCP會話進行區分。Hadoop平臺下流提取重組的MapReduce[5]過程如圖1所示。
完成完整的郵件流重組必須從該五元組對應的流中獲取帶有SYN=1與FIN=1(或RST)的報文。當TCP出現亂序或者重傳覆蓋時,對這些流按照seq進行重新排序。對于不完整的TCP流進行丟棄處理。
HDFS進行大規模流量文件的分割,InputFormat將輸入的大規模報文文件分割為若干InputSplit,每一個InputSplit將單獨作為Map的輸入。每條流形成一個鍵值對<k1,v1>,此處k1表示報文在文件中的偏移量,v1表示整條報文內容。
(1)Map階段:對每個<k1,v1>鍵值對進行處理,從報文內容中提取出每條報文的五元組信息,得到<k2,v2>,其中k2為報文的五元組信息,v2是從IP層開始的整個報文。
(2)Combine階段:Combine相當于對每個DataNode結點上的數據流進行流重組,此時以Map階段的輸出作為Combine階段的輸入。之后通過指針從報文信息中提取每條報文的SYN、FIN、TCP中的序號。以<k3,v3>作為輸出,k3為每條報文的五元組信息,v3為每條報文的數組。
(3)Shuffle階段:在Shuffle階段輸入為<k3,v3>輸出為<k4,v4>,完成局部的流重組整合,也就是對在Combine階段未完成的流重組過程繼續完成,這樣可以有效減少在Reduce的計算壓力。
(4)Reduce階段:接收到Shuffle的輸出后,對每個鍵值對進行處理,完成在Combine階段和Shuffle階段未完成的流重組過程。如果經過以上階段,發現有的流重組出來是不完整的,則將這條流丟棄。
Reduce階段完成后,將Reduce處理好的流交給OutputFormat(即MyOutputFormat)類。它將重組好的報文寫入文件中。按照以上流程即可完成POP3和SMTP郵件的相關流重組。
2 Hadoop平臺下貝葉斯垃圾郵件過濾
2.1 改進的貝葉斯垃圾郵件過濾算法
貝葉斯方法包括兩個步驟:訓練樣本和分類,其實質是把郵件判定為垃圾郵件或者正常郵件。假設郵件的特征詞集合為d,且d中的各特征詞之間相互獨立,則構建過濾器的過程如下。
首先收集大量的垃圾郵件和正常郵件,并將其分為垃圾郵件集和正常郵件集兩組。之后對過濾器進行訓練。假定在訓練集中,垃圾郵件有S封,正常郵件有H封,垃圾郵件有n個特征詞{w1,w2,…,wn}。在模型建立時,假設垃圾郵件有2個特征詞,即d={w1,w2},則當特征詞出現時,該封郵件屬于垃圾郵件的概率為P(Spam|w1),而屬于正常郵件的概率為P(Ham|w1);當特征詞w2出現時,該郵件屬于垃圾郵件的概率為P(Spam|w2),而屬于正常郵件的概率為P(Ham|w2)。則根據貝葉斯定理有如下推論:
P(Spam|d)=P(Spam|w1)P(Spam|w2)P(Spam)(3)
P(Ham|d)=(1-P(Spam|w1))(1-P(Spam|w2))(1-P(Spam))(4)
在郵件的特征詞w1,w2出現的情況下,令P(Spam|w1)=p1,P(Spam|w2)=p2,則郵件屬于垃圾郵件的概率如式(5)所示:
若d={w1,w2,…,wn},則可以進行如下處理:將訓練集中的S封垃圾郵件進行訓練,查看垃圾郵件中是否存在這些特征詞,假設d={w1,w2,…,wn}對應出現的數量為{f1,f2,…,fn}。則此時,郵件屬于垃圾郵件類概率為:
其中,。設定當上式≥Q時,判定郵件屬于垃圾郵件Spam類,結合參考文獻[6]的經驗,可將閾值設置為0.9。
在一般情況下,假設待分類郵件di計算出的PSpam值為pi,其中1≤i≤N,N為待分類的郵件總數。此處假設pi是有序遞增的,即存在pi≤pj,其中1≤i≤j≤N。假設閾值為Q,存在x,1≤x<N,使得px<Q,而px+1≥Q,則可判定,前x封郵件歸為正常郵件Ham類,后N-x封郵件歸為Spam類。
下文對閾值的設定進行改進,在系統判定為正常郵件的前面x封郵件中,錯誤判定類別的郵件數量和正確判定類別的郵件數量的期望分別如式(7)、式(8)所示:
在判定為垃圾郵件的后面N-x封郵件中正確判定類別和錯誤判定類別的期望如式(9)、式(10)所示:
使用上述期望可求出垃圾郵件過濾系統的四個指標[7],如式(11)~式(14)所示:
隨著Q的增加,P(x)會增大,R(x)會降低;反之,隨著Q變小,P(x)會降低,R(x)會增大,因此可以求出使F值達到極值的Q。記SN為數列{pi}的前N項和,因為0<T(x)<1,0<P(x)<1,0<R(x)<1,因此,0<F(x)<1。對于待分類郵件來說,N和SN均為常數。對F(x)、T(x)求導可得式(15)、式(16),令F′(x)=0,則可得式(17)。
所以,當時,F(x)為x的嚴格單調增函數;反之,為單調減函數。由于數列{pi}有序遞增,所以唯一存在一個x使當
時,F(x)可以達到極大值。求出x后,就可以確定正常郵件與垃圾郵件的分界點,可以有效改善Hadoop平臺下的垃圾郵件過濾方法,在一定程度上提高郵件判定的F值和過濾的性能。
2.2 垃圾郵件過濾技術的MapReduce模型
Hadoop平臺下的垃圾郵件過濾技術的MapReduce模型分為兩階段:郵件訓練樣本階段和郵件分類階段。
郵件訓練階段的MapReduce過程如圖2所示。第一個MapRecue階段抽取垃圾郵件的特征,MapReduce輸入為已經分好類的垃圾郵件集合,通過Map和Reduce得出垃圾郵件特征詞詞頻。第二個MapReduce過程計算正常郵件類別的特征詞詞頻,以分類的正常郵件集作為MapReduce的輸入,輸出為每封郵件對應的正常郵件特征詞的詞頻。第三個MapReduce作業計算出垃圾郵件特征詞的條件概率,以前面兩個MapReduce作業的輸出作為輸入,通過MapReduce得出每個類別的特征詞相應的聯合條件概率。結合垃圾郵件和正常郵件類別的先驗概率,形成n個特征詞的郵件訓練庫。
郵件分類階段的MapReduce過程如圖3所示。總共分為兩個過程,第一個MapReduce過程計算待過濾郵件的特征詞詞匯及其詞頻,輸入為待過濾郵件集合,通過Map和Reduce得出特征詞的詞頻。此過程與訓練階段的第一個MapReduce過程類似。第二個MapReduce過程接收第一個MapReduce過程生成的中間數據及郵件訓練結果集,通過MapReduce計算出每個待分類郵件屬于垃圾郵件的概率,并且與閾值Q比較,判斷郵件所屬的類別。
3 相關實驗
3.1 實驗數據和實驗環境
為保證實驗內容的真實性,本文采用上海海事大學信息工程學院出口網關上截獲的40 258封郵件作為本次實驗的數據集,其中包含垃圾郵件20 132封,正常郵件20 126封,為了保證實驗的可靠性和平均分配,首先將垃圾郵件隨機剔除32封,正常郵件隨機剔除26封。選取其中5 100封垃圾郵件、5 100封正常郵件作為訓練集,將另外的30 000封郵件作為測試集。將測試集中的郵件平均分為10份,對每份測試集進行實驗,以10次實驗的平均值作為實驗結果進行分析。
Hadoop集群具體硬件配置信息如表1所示。
3.2 實驗評價指標
在對垃圾郵件過濾實驗進行評判時,用召回率(Recall)、查準率(Precision)、正確率(T)、F值四個實驗性能評價指標[7]來衡量本文提出的垃圾郵件過濾技術的性能。召回率為垃圾郵件過濾系統識別出的垃圾郵件數量占實際垃圾郵件數量的比例;查準率為實際為垃圾郵件總數占過濾系統判別出的垃圾郵件數量的比例;正確率為垃圾郵件過濾系統正確歸類的郵件數量占所有待分類郵件數量的比例;F值為垃圾郵件查準率和召回率的調和平均,它將查準率和召回率綜合成為一個新的判定指標。
3.3 實驗結果及分析
實驗1采用傳統的貝葉斯垃圾郵件過濾算法,既未引入Hadoop MapReduce模型,也未進行優化算法,垃圾郵件的概率閾值Q=0.9。
實驗2中引入了本文設計的MapReduce模型和算法,使用Hadoop集群,但未對算法做優化處理,垃圾郵件概率閾值取Q=0.9。
實驗3中引入了本文設計的MapReduce模型,使用Hadoop集群,并改進了郵件分類時的概率閾值。垃圾郵件分類時的概率閾值根據算法進行設定。
結合三種實驗情況,可得出召回率、查準率、F值和正確率如表2所示。
根據上表可以發現,改進后的Hadoop平臺下的垃圾郵件過濾系統在召回率、F值和正確率方面均有所提升,查準率略有下降,垃圾郵件過濾系統的整體性能得到了提升。可以得出結論,改進后的模型較原來的模型在性能上有了一定的提高。
本文針對實驗3,分析了不同DataNode數量下基于Hadoop平臺的垃圾郵件過濾系統較單機環境下貝葉斯垃圾郵件過濾系統的加速比,實驗數據如圖4所示。通過分析發現,與單機下的貝葉斯垃圾郵件過濾算法相比,基于Hadoop平臺的貝葉斯垃圾郵件過濾技術隨著DataNode數量的增加,加速比處于線性上升狀態。
4 結束語
本文針對海量垃圾郵件的過濾做出研究,在分析了傳統的貝葉斯垃圾郵件過濾算法的缺點后,將貝葉斯垃圾郵件過濾算法與Hadoop MapReduce編程模型結合起來,提出了垃圾郵件過濾的數學模型,并在此基礎上對判定郵件所屬類別的閾值選擇給出了一定的改進。本文提出的垃圾郵件過濾算法在垃圾郵件過濾評價指標上較單機環境下和改進前都有所提升,將算法在Hadoop集群中運行,得到了較好的加速比。
參考文獻
[1] 中國互聯網絡信息中心.第35次中國互聯網絡發展狀況統計報告[R/OL].(2015-02-03)[2015-05-02].http://www.cnnic.net.cn/hlwfzyj/hlwmrtj/.
[2] 徐洪偉,方勇,音春.垃圾郵件過濾技術分析[J].通信技術,2003(10):126-128.
[3] 向旭宇,姬林,楊岳湘.電子郵件系統過濾技術研究及實現[J].計算機應用研究,2003,20(S1):136-137.
[4] 李國元,李雙慶,楊錚.一種流序列化的網絡流量分類算法[J].電子技術應用,2009,35(6):121-127.
[5] DEAN J, GHEMAWAT S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008,51(1):107-113.
[6] Zhan Chuan, Lu Xianliang, Zhou Xu, et al. An improved Bayesian with application to anti-spam Email[J]. Journal of Eelctronic Science and Technology of China, 2005,3(1):30-33.
[7] 李文斌,陳嶷瑛,劉椿年,等.郵件過濾算法的比較[J].計算機工程與設計,2008,29(17):4433-4436.