基于改進(jìn)平衡Winnow算法的短信過(guò)濾系統(tǒng)
摘要: 將黑白名單技術(shù)與Balanced Winnow 算法相結(jié)合,實(shí)現(xiàn)對(duì)垃圾短信的過(guò)濾。采用CHI 特征提取算法并對(duì)權(quán)重計(jì)算方法進(jìn)行改進(jìn), 同時(shí)提出了去除訓(xùn)練樣本中野點(diǎn)的想法, 通過(guò)判定去除野點(diǎn), 減緩在訓(xùn)練過(guò)程中出現(xiàn)的抖動(dòng)現(xiàn)象。實(shí)驗(yàn)表明這種改進(jìn)對(duì)于提高訓(xùn)練速度及提高短信過(guò)濾的性能均有很好的作用。
手機(jī)短信以其短小、迅速、簡(jiǎn)便、價(jià)格低廉等優(yōu)點(diǎn)成為一種重要的通信和交流方式, 受到眾多人士的青睞。然而, 手機(jī)短信與郵件一樣存在著垃圾信息問(wèn)題。
目前, 垃圾短信過(guò)濾主要有黑名單過(guò)濾、關(guān)鍵詞過(guò)濾和基于文本分類(lèi)的內(nèi)容過(guò)濾等方式。黑名單過(guò)濾和關(guān)鍵詞過(guò)濾方式能快速過(guò)濾垃圾短信, 但這兩種過(guò)濾方式實(shí)質(zhì)是基于規(guī)則的過(guò)濾, 雖然在一定程度上阻擋了一些垃圾短信, 但規(guī)則的方法需要更多的用戶自定義設(shè)置,很容易被反過(guò)濾。基于文本分類(lèi)的短信過(guò)濾采用常見(jiàn)的分類(lèi)算法, 如樸素貝葉斯、SVM、神經(jīng)網(wǎng)絡(luò)等。黎路 等人將貝葉斯分類(lèi)應(yīng)用到J2ME 模擬環(huán)境中成功地過(guò)濾了中獎(jiǎng)短信和祝福短信。浙江大學(xué)的金展、范晶等 將樸素貝葉斯和支持向量機(jī)結(jié)合, 解決了傳統(tǒng)垃圾短信過(guò)濾系統(tǒng)短信特征和內(nèi)容未能得到及時(shí)更新而導(dǎo)致過(guò)濾性能降低的問(wèn)題。王忠軍將基于樸素貝葉斯短信過(guò)濾算法與基于最小風(fēng)險(xiǎn)貝葉斯算法進(jìn)行了實(shí)驗(yàn)分析和比較,結(jié)論是基于最小風(fēng)險(xiǎn)的短信過(guò)濾算法具有較好的性能。
然而, 短信過(guò)濾的準(zhǔn)確率依賴于其訓(xùn)練樣本的數(shù)量及質(zhì)量, 這些分類(lèi)算法需要經(jīng)過(guò)訓(xùn)練學(xué)習(xí)建立分類(lèi)器模型,因此在速度上不能很好地滿足短信過(guò)濾實(shí)時(shí)性的要求。
從現(xiàn)有技術(shù)上來(lái)說(shuō), 垃圾短信的過(guò)濾在準(zhǔn)確率和效率方面仍然不能滿足現(xiàn)實(shí)需要。
本文針對(duì)現(xiàn)有短信過(guò)濾技術(shù)的不足, 設(shè)計(jì)了在手機(jī)終端的短信過(guò)濾系統(tǒng), 根據(jù)垃圾短信的特點(diǎn)將黑白名單和基于內(nèi)容過(guò)濾相結(jié)合。這種過(guò)濾方式要求能夠快速地對(duì)短信進(jìn)行分類(lèi), 并且能夠?qū)崿F(xiàn)用戶對(duì)短信過(guò)濾的個(gè)性化要求, 使垃圾短信過(guò)濾系統(tǒng)具有更好的過(guò)濾性能。
Winnow 算法是在1987 年由Nick LittleSTONe 提出并對(duì)可行性做了嚴(yán)格證明的線性分類(lèi)算法。當(dāng)時(shí)的目標(biāo)是想找到一種時(shí)空復(fù)雜度僅僅與分類(lèi)對(duì)象相關(guān)屬性相關(guān)的數(shù)量呈線性相關(guān)的算法。平衡Winnow 算法是對(duì)基本W(wǎng)innow 算法的一種改進(jìn), 該算法具有過(guò)濾速度快、性能好、支持反饋更新的優(yōu)點(diǎn), 在信息過(guò)濾領(lǐng)域有很好的應(yīng)用前景, 尤其適合于對(duì)實(shí)時(shí)性要求較高的短信過(guò)濾系統(tǒng)。
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于平衡Winnow 算法的短信內(nèi)容過(guò)濾系統(tǒng), 對(duì)該算法在短信過(guò)濾系統(tǒng)上的應(yīng)用進(jìn)行了詳細(xì)分析。分類(lèi)器的訓(xùn)練過(guò)程分成預(yù)處理、訓(xùn)練、分類(lèi)和反饋四個(gè)部分。
1 預(yù)處理模塊
預(yù)處理模塊包括中文分詞、特征提取以及短信的向量表示子模塊。
1.1 中文分詞
中文分詞是漢語(yǔ)所特有的研究課題。英語(yǔ)、法語(yǔ)等印歐語(yǔ)種詞與詞之間存在著自然的分割, 一般不存在分詞的問(wèn)題。本系統(tǒng)采用了目前國(guó)內(nèi)較多使用的中科院計(jì)算所開(kāi)發(fā)的漢語(yǔ)詞法分析系統(tǒng)ICTCLAS ( Institute ofComputing Technology ,Chinese Lexical Analysis System) 。
ICTCLAS 3.0 分詞速度單機(jī)996 Kb/s,分詞精度98.45%,API 不超過(guò)200 KB, 各種詞典數(shù)據(jù)壓縮后不到3 MB, 是當(dāng)前相對(duì)較好的漢語(yǔ)詞法分析器。
1.2 特征提取
特征提取的方法目前也有很多, 常用的特征選取方法有: 文檔頻率DF(Document Frequency) 、信息增益IG(Information Gain) 、互信息MI(Mutual Information) 、χ2統(tǒng)計(jì)等。
本文將分詞后的詞作為候選特征, 然后使用特征提取算法從中提取出對(duì)分類(lèi)最有用的一些特征, 去除對(duì)分類(lèi)貢獻(xiàn)不大的候選特征, 以降低特征的維數(shù)。其中χ2的主要思想是認(rèn)為詞條與類(lèi)別之間符合χ2分布。χ2 統(tǒng)計(jì)量的值越高, 特征項(xiàng)和類(lèi)別之間的獨(dú)立性越小、相關(guān)性越強(qiáng), 即特征項(xiàng)對(duì)此類(lèi)別的貢獻(xiàn)越大。χ2 是一個(gè)歸一化的值, 該方法比其他方法能減少50%左右的詞匯, 具有分類(lèi)效果好的優(yōu)點(diǎn)。本文中采用χ2統(tǒng)計(jì)進(jìn)行特征提取。
但不是簡(jiǎn)單地令特征項(xiàng)的權(quán)重xi=1 或0 , 而是令xi=f(χ2)或0 , 這里χ2 特指特征對(duì)應(yīng)的χ2 統(tǒng)計(jì)值, 對(duì)應(yīng)關(guān)系f 根據(jù)實(shí)際情況而定。實(shí)驗(yàn)中(n 是一個(gè)正整數(shù), 取n=4) 。實(shí)驗(yàn)表明比用布爾權(quán)重表示效果要好。
1.3 文本向量表示目前應(yīng)用較多的是向量空間模型VSM (VectorSpace Model) , 文中用VSM 將一條短信表示為(W1,W2,…,Wk,…,Wn)的向量形式。其中:Wk(k=1 ,2 ,…,n)為第k 個(gè)特征的權(quán)重,n 為選定的特征數(shù)。
2 構(gòu)造分類(lèi)器
訓(xùn)練分類(lèi)器是研究的重點(diǎn),采用Balanced Winnow 算法并對(duì)其進(jìn)行改進(jìn)。
2.1 Winnow 分類(lèi)算法
Winnow 算法是二值屬性數(shù)據(jù)集上的線性分類(lèi)算法。線性分類(lèi)問(wèn)題中表示分類(lèi)界限的超平面等式如下:
w0α0+w1α1+w2α2+…+wkαk=0 , 其中:α0,α1,…,αk分別是屬性的值;w0,w1, …,wk是超平面的權(quán)值。如果其值大于0 , 則預(yù)測(cè)為第一類(lèi)否則為第二類(lèi)。
Winnow 算法是錯(cuò)誤驅(qū)動(dòng)型的分類(lèi)算法, 即當(dāng)出現(xiàn)錯(cuò)分的實(shí)例時(shí)才更新權(quán)值向量。設(shè)定兩個(gè)學(xué)習(xí)系數(shù)α 和β(其中α>1,β<1) , 通過(guò)將權(quán)值乘以參數(shù)α( 或β) 來(lái)分別修改權(quán)值。
2.2 Balanced Winnow 分類(lèi)算法
標(biāo)準(zhǔn)的Winnow 算法不允許有負(fù)的權(quán)值, 于是就有了另一個(gè)稱為平衡的Winnow 版本, 允許使用負(fù)的權(quán)值。
對(duì)Winnow 算法的基本形式, 權(quán)重向量的每一維都是正數(shù)。Balanced Winnow 是用w+-w-代替w, 當(dāng)則將實(shí)例歸為該類(lèi)。Balanced Winnow 的權(quán)重更新策略為:
(1) 如果, 但文本不屬于該類(lèi), 則要降低權(quán)重: 對(duì)j=1,,…,d,如果xj≠0 , 則xj≠0 , w+j =βw+j ,w-j =αw-j ,α>1,0<β<1。
(2) 如果但文本應(yīng)屬于該類(lèi), 則要提高權(quán)重: 對(duì)j=1,2,…,d,如果xj≠0, 則w+j =αw+j ,w-j =βw-j ,α>1,0<β<1。
在實(shí)驗(yàn)中, 采用文獻(xiàn)[7] 中統(tǒng)一α 和β 為一個(gè)參數(shù)的方法, 令β=1/α, 沒(méi)有影響分類(lèi)效果, 但有效簡(jiǎn)化了參數(shù)的選擇??梢詾椴煌念?lèi)別確定不同的θ 值, 但實(shí)驗(yàn)表明: 對(duì)于不同的類(lèi)別選擇同樣的θ 值, 結(jié)果幾乎是一樣的, 所以在每次獨(dú)立的實(shí)驗(yàn)中都取相同的θ 值, 大小是訓(xùn)練文本所含的平均特征數(shù), 而初始的w+和w-分別取全2 和全1 向量。
在平衡Winnow 算法中, 一旦參數(shù)α、β 和閾值θ 確定下來(lái)后, 將在訓(xùn)練過(guò)程中不斷更新權(quán)重向量w+和w-至最適合這組參數(shù)。因此對(duì)參數(shù)的依賴較小, 需要手工調(diào)整的參數(shù)不多。
2.3 去除野點(diǎn)
在短信過(guò)濾中,短信樣本是由手動(dòng)或自動(dòng)方式收集的, 收集的過(guò)程中難免會(huì)出錯(cuò), 因此短信樣本集中可能存在一些被人為錯(cuò)分的樣本點(diǎn), 即野點(diǎn)。這些野點(diǎn)在訓(xùn)練時(shí), 會(huì)使得分類(lèi)器產(chǎn)生嚴(yán)重的抖動(dòng)現(xiàn)象, 降低分類(lèi)器的性能。因此,好的分類(lèi)器應(yīng)具有識(shí)別野點(diǎn)的能力。
對(duì)于Winnow 算法,若樣本中存在野點(diǎn), 則野點(diǎn)在訓(xùn)練時(shí)以較大的概率出現(xiàn)在兩分類(lèi)線之外, 且分類(lèi)錯(cuò)誤。
這些野點(diǎn)對(duì)分類(lèi)器的訓(xùn)練過(guò)程產(chǎn)生很大的影響, 可能會(huì)造成分類(lèi)器的“ 過(guò)度學(xué)習(xí)” 。因此引入損失函數(shù), 按照損失函數(shù)的定義, 這些野點(diǎn)損失較大, 因此可以通過(guò)給損失函數(shù)設(shè)置一個(gè)上界函數(shù)來(lái)處理線性分類(lèi)器中的野點(diǎn)問(wèn)題, 如圖1 所示。
圖1 所示為兩類(lèi)線性可分情況, 圖中實(shí)心點(diǎn)和空心點(diǎn)分別表示兩類(lèi)訓(xùn)練樣本,H 為兩類(lèi)樣本沒(méi)有被錯(cuò)誤地分開(kāi)的分類(lèi)線,H1 和H2 分別為平行于分類(lèi)線H 且與分類(lèi)線H 的距離為單位距離的兩條直線。直線G(t)為平衡Winnow 算法中第t 輪迭代后損失函數(shù)的上界線。該上界線是關(guān)于迭代次數(shù)t 的函數(shù), 因此可以將該上界線G(t)對(duì)應(yīng)的上界函數(shù)記為g(t)。從圖1 可知, 在直線G(t)左下側(cè)誤分樣本的損失較少, 可以認(rèn)為這些誤分樣本是由于當(dāng)前分類(lèi)器的性能較低而誤分的; 在直線G(t) 右上側(cè)誤分的樣本由于在第t 輪迭代后損失仍較大, 則可以認(rèn)為這些誤分的樣本是野點(diǎn)。根據(jù)線性分類(lèi)器和野點(diǎn)的性質(zhì)可知,上界函數(shù)g(t)具有以下性質(zhì):
(1) 隨著Winnow 算法中迭代次數(shù)t 的增加, 上界函數(shù)g(t) 單調(diào)遞減, 并且遞減的速率也隨著t 的增加而遞減, 即上界函數(shù)的導(dǎo)數(shù)g(t)為單調(diào)遞減函數(shù);(2) 上界函數(shù)既不能太大, 也不能太小。太大會(huì)降低判斷野點(diǎn)的能力, 太小則會(huì)誤判正常樣本為野點(diǎn)。
根據(jù)上界函數(shù)的這些特性, 可以考慮一個(gè)平行于分類(lèi)線H 的線性函數(shù)作為損失函數(shù)的上界函數(shù)。即g(t)=其中:ε 為常數(shù)值; 直線G(t) 平行于分類(lèi)線H;η 為損失因子, 也稱為學(xué)習(xí)率, 可以在訓(xùn)練分類(lèi)器的時(shí)候指定其值。
在每一輪訓(xùn)練中, 若該樣本的G(t) 值大于分類(lèi)線的值, 并且超過(guò)一定的閾值, 且不屬于該類(lèi), 則判定該樣本具有野點(diǎn)的性質(zhì), 應(yīng)當(dāng)在訓(xùn)練集中將該樣本去除, 以便提高下一輪訓(xùn)練的準(zhǔn)確性。這樣不僅有效削弱了分類(lèi)器的抖動(dòng)現(xiàn)象, 而且提高了分類(lèi)器的性能。
3 系統(tǒng)反饋
Winnow 是一種在線學(xué)習(xí)的、以錯(cuò)誤為驅(qū)動(dòng)的分類(lèi)器, 適于結(jié)合增量式學(xué)習(xí)來(lái)解決自適應(yīng)問(wèn)題, 實(shí)現(xiàn)用戶的個(gè)性化要求。平衡Winnow 算法是基本W(wǎng)innow 算法的另外一種形式, 同樣具有在線更新能力。在分類(lèi)器訓(xùn)練過(guò)程中, 對(duì)錯(cuò)分的短信通過(guò)α 和β 更新類(lèi)別權(quán)重向量,實(shí)現(xiàn)對(duì)分類(lèi)器的更新, 平衡Winnow 算法中w+和w-的雙向調(diào)節(jié), 使算法的訓(xùn)練速度更快, 適合于對(duì)分類(lèi)實(shí)時(shí)性要求較高的短信過(guò)濾系統(tǒng)。
4 實(shí)驗(yàn)資源及分析與*價(jià)
本文在自建短信語(yǔ)料庫(kù)的基礎(chǔ)上完成對(duì)比實(shí)驗(yàn), 其中正常短信1 892 條, 垃圾短信270 條, 將短信語(yǔ)料庫(kù)隨機(jī)分成5 等份, 其中4 份用于訓(xùn)練樣本,1 份作為測(cè)試樣本。
4.1 *價(jià)指標(biāo)
分類(lèi)系統(tǒng)*價(jià)指標(biāo)如下, 包括兩類(lèi)短信各自的準(zhǔn)確率(precision) 和召回率(recall) , 由于系統(tǒng)目標(biāo)是垃圾短信過(guò)濾, 于是增加了針對(duì)垃圾短信的綜合*價(jià)指標(biāo)(F1):
F1=(2×準(zhǔn)確率×召回率)/( 準(zhǔn)確率+召回率)。
4.2 實(shí)驗(yàn)結(jié)果分析
(1) 實(shí)驗(yàn)1: 探討改進(jìn)的特征權(quán)重計(jì)算方法對(duì)實(shí)驗(yàn)結(jié)果的影響。實(shí)驗(yàn)結(jié)果如表1 所示。
表1 特征權(quán)重計(jì)算方法對(duì)實(shí)驗(yàn)結(jié)果的影響。
其中測(cè)試樣本中正常短信被誤分為垃圾短信條數(shù)為22 條, 正常短信召回率為94.2%; 垃圾短信被誤分為正常短信8 條, 準(zhǔn)確率僅為67.7%。
(2) 實(shí)驗(yàn)2: 統(tǒng)一參數(shù)和取固定的閾值θ 之后對(duì)實(shí)驗(yàn)結(jié)果的影響。該實(shí)驗(yàn)中取:α=1.5 、β=1/1.5 、θ=15 。實(shí)驗(yàn)結(jié)果如表2 所示。
表2 選定參數(shù)對(duì)實(shí)驗(yàn)結(jié)果的影響
其中測(cè)試樣本中正常短信被誤分為垃圾短信條數(shù)為18 條, 正常短信召回率為96.1%; 而測(cè)試用的垃圾短信正確識(shí)別了44 條, 準(zhǔn)確率為71.0%。由此可見(jiàn), 參數(shù)對(duì)實(shí)驗(yàn)結(jié)果的影響不大。
(3) 實(shí)驗(yàn)3: 去除野點(diǎn)對(duì)實(shí)驗(yàn)結(jié)果的影響。實(shí)驗(yàn)結(jié)果如表3 所示。
表3 去除野點(diǎn)對(duì)實(shí)驗(yàn)結(jié)果的影響。
從實(shí)驗(yàn)結(jié)果分析, 僅有12 條正常短信和8 條垃圾短信被錯(cuò)誤分類(lèi)。通過(guò)去除野點(diǎn), 發(fā)現(xiàn)不僅緩減了抖動(dòng)現(xiàn)象, 而且提高了分類(lèi)器的分類(lèi)性能及正常短信的召回率。
Balanced Winnow 在訓(xùn)練速度和分類(lèi)速度上具有較大優(yōu)勢(shì), 所以具有更高的實(shí)用價(jià)值, 非常適合短信過(guò)濾的要求。另外,Winnow 作為一種在線學(xué)習(xí)方法, 在訓(xùn)練集合不斷擴(kuò)大的情況下能夠快速對(duì)分類(lèi)器進(jìn)行更新。正是基于Winnow 不斷學(xué)習(xí)、不斷調(diào)整的機(jī)制, 使其非常適合用戶自己定制需要的分類(lèi)標(biāo)準(zhǔn)。隨著用戶不斷地反饋調(diào)整,整個(gè)系統(tǒng)會(huì)表現(xiàn)出越來(lái)越好的效果。