邱寧佳,沈卓睿,王 輝,王 鵬
長春理工大學 計算機科學技術學院,長春 130022
現如今,隨著民生平臺的廣泛使用垃圾數據急劇增加,避免垃圾數據的干擾來提高系統工作效率和服務水平成為熱點研究。非平衡樣本分類問題作為垃圾文本識別的基礎,存在分類效果不佳的問題。針對此問題,從算法角度考慮主要包括分類集成法、代價敏感法和特征選擇方法。Sundarkumar等提出通過串聯使用k反向最近鄰和一類支持向量機(OCSVM)來糾正數據不平衡問題[1]。Kaur通過引入特征縮放,抑制或中和平均絕對誤差(MAE)的方法,有效提高了信用卡欺詐檢測模型精度[2]。Gu等為了糾正分類面的偏移問題,對不平衡數據到分類面的距離進行參數調優,有效地完成了少數類和多數類的識別工作[3]。Agnihotri根據類中術語的分布從每類中選擇可變數量的特征,提出了一種新的變量全局特征選擇方案(VGFSS),此方法在處理不平衡數據時優于全局特征選擇方案[4]。Duan 等使用馬氏距離繪制聚類二叉樹,將SVM從上到下應用于二叉樹進行分類,此方法在機械故障診斷多分類問題中具有很高的分類精度[5]。Wu 等使用類重疊法和樣本點重要性來設計樣本模糊隸屬函數和分配隸屬度值,提出模糊多類支持向量機算法,該算法能夠更有效解決多類別不平衡數據和噪聲問題[6]。Chan 等通過使用先驗類概率加權后驗類概率來處理神經網絡訓練不平衡數據時少數類被錯誤分類的問題,此算法的平均召回率得到了提高[7]。Xu等通過定義新的基分類器初始權值矩陣更新規則和集成權重計算公式,提出一種污水處理故障診斷建模方法,此方法提高了故障類的識別率和分類精度[8]。
對于不平衡分類問題從訓練集角度入手主要包括上采樣方法和下采樣方法,都是通過改變訓練集樣本的分布,提高不平衡樣本的判別精度。Pozzolo 等通過使用貝葉斯最小風險理論找到正確的分類閾值,對不平衡數據在欠采樣處理后進行調整,降低了欠采樣對分類精度和概率校準的影響[9]。Huang 等根據類內、類間距離和不平衡度三者的關聯,在樣本特征的基礎上提出一種新穎的上采樣方法,顯著提升了負樣本的分類準確率[10]。Vannucci等提出使用遺傳算法將欠采樣和過采樣結合的方法,確定最優不平衡率,使稀有模式檢測率和分類性能有了明顯的提高[11]。Zhao 等通過約束合成數據產生的范圍,使數據集中化,提出了TSMOTE和MDSMOTE算法,解決了分類器和SMOTE 對于不平衡數據集存在邊緣化分布的缺點[12]。Yang 等分別添加和刪除與少數類相關性強和與多數類相關性弱的樣本來實現樣本的類分布平衡,提出關鍵值抽樣法,提高了關聯分類方法處理不平衡數據的精度[13]。Geng 等采用k-means 采樣方法和分類指導詞提出了一種組合策略,提高了不平衡數據的分類精度[14]。Zhang等分別對多數類和少數類進行不同權重調整,基于AdaBoost算法,提出了一種新穎的欠采樣方法,提高了不平衡數據的分類效果[15]。
在通過聚類改進下采樣時,為了避免傳統聚類算法聚類數目不易確定和算法復雜度高的問題,本文提出基于否定選擇密度聚類的下采樣算法(Down-Sampling algorithm based on Negative Selection Density Clustering,NSDC-DS),首先結合否定選擇算法自體異常檢測機制的思想,將聚類中心點和待聚類樣本分別作為檢測器和自體集來進行異常匹配提出基于否定選擇的密度聚類算法;然后使用基于否定選擇的密度聚類算法對樣本進行相似度評估來改進傳統下采樣代表性難以保證的問題,并選擇NBSVM分類器對采樣后的通信文本進行半監督垃圾識別;最后使用PCA 樣本所具有信息量進行評估,提出改進的PCA-SGD(Stochastic Gradient Descent based on Principal Component Analysis)算法對模型參數進行調優,以達到提高通信垃圾文本識別精度的目的。
否定選擇(Negative Selection,NS)算法是根據免疫系統自體、非自體細胞的識別工作仿真得到的一種選擇方案,檢測器是隨機產生的,能夠保留包含非自體的檢測器,刪除包含自體的檢測器,最終實現兩種數據的分類。其算法思想如下:首先定義需要保護與檢測的自體集,然后產生檢測器集合,檢測器為不與受保護數據匹配的集合,最后將檢測器與自體集進行比較來檢測自體集的改變,如果自體集與檢測器匹配,表示自體集發生了異常變化。結構如圖1所示。

圖1 否定選擇算法
樸素貝葉斯和支持向量機常被用在文本分類的基線模型,但是性能受特征和數據集等因素的影響較大。Wang 等使用樸素貝葉斯對數計數比率作為特征值的SVM 變種,提出了一種將樸素貝葉斯與支持向量機結合的算法(NBSVM),此算法在文本分類領域取得了不錯的效果[16]。此算法是使用NB 算法生成的特征訓練SVM來構造一個線性分類器。測試實例k的預測函數如公式(1)所示:

其中,w和b通過最小化目標函數獲得,為樣本所包含類別,為第i個訓練樣本的特征向量,反之此處相乘的方法為對應位置元素相乘,為特征在正、負樣本中出現的概率比值對數化后的值,稱為對數計數比率(log-為平滑系數。
k-means算法存在聚類數目不易確定和只適用于凸樣本空間數據集的問題,并且對于非平衡數據集,其聚類效果不佳。譜聚類算法適用于任意形狀樣本空間的數據集,但仍存在聚類數目不易確定的缺點,當樣本維度大時,對聚類效果影響較大。針對以上問題,本文提出一種基于否定選擇的密度聚類算法,將聚類中心點和待聚類樣本分別作為檢測器和自體集來進行相似度匹配,匹配條件使用改進的相似度計算公式,即在距離測量相似度的基礎上加入了密度來刻畫相似度。其具體思想如下:
(1)首先利用分詞工具對待聚類樣本進行分詞、去停,使用TfidfVectorizer工具將文本向量化,轉化為特征矩陣,如式(2)所示:

其中,每一行代表一個樣本,共具有n個樣本和m個特征。
(2)檢測器和自體集。計算所有待聚類樣本點的鄰域密度ρi,去除孤立點,選擇待聚類樣本Dwait中密度最大的樣本點ρmax作為聚類中心點,即否定選擇算法中的檢測器。其他待聚類樣本點作為自體集,對兩者使用步驟(3)中的匹配條件進行檢測匹配。
(3)設置否定選擇中的“匹配條件”,使用距離和密度結合的相似度計算方法,如公式(3)所示。在距離度量相似度的基礎上加入密度是由于:歐式距離在某些情況下不能刻畫真實的數據分布。例如在圖2中,點a為其他類,在此希望b、c間相似度比b、a間的相似度更大,但使用歐式距離計算時,b、a分為一類,因而本文引入密度權值來調節相似度值。

圖2 不同流行上的數據點

其中,x1t和x2t代表兩個樣本的第t個維度為兩樣本的歐氏距離。σ1和σ2代表樣本點所處鄰域內的密度。這樣在計算數據點間相似度的過程中,當兩樣本點所在的密度存在差異時,就可以通過權值對相似度進行調整,密度相差越大,相似度越小。
根據多次實驗得到合適的相似度閾值γ,當檢測器與自體集滿足匹配條件時,即當檢測器與自體集之間相似度大于等于相似度閾值γ時便找到樣本中心點密度可達的所有樣本,生成一個聚類簇;每聚成一個簇后,繼續尋找待聚類樣本中密度最大的點作為下一個聚類中心點,更新其為檢測器,與其他作為自體集的待聚類樣本點計算相似度,找到滿足相似度閾值匹配條件的樣本聚成下一個簇,直到滿足終止條件。
(4)終止條件。當待聚類樣本點為空時聚類結束,得到聚類后的k類樣本。整體聚類流程圖如圖3所示。

圖3 基于否定選擇的密度聚類算法
本文使用通信文本數據集,在對此數據集進行垃圾文本識別時,為了使學習效果更好,因此需要解決訓練集樣本中通信垃圾文本和通信非垃圾文本的不平衡問題。隨機的下采樣方法會丟失大量的數據,使模型只學習到總體模式的一部分,削弱了樣本的多樣性。為了避免以上問題,本文提出一種基于否定選擇密度聚類的下采樣算法(NSDC-DS)。
對于樣本比例不平衡的數據采用下采樣方法時,如果先將多數類樣本聚類為k個不相交子類,再從每個子類中均勻采樣出樣本作為與少數類樣本重構為平衡數據集再進行分類器學習,將會避免原采樣方法削弱多數類樣本多樣性和只學習到其總模式一部分的缺點。其改進方法如下:
(1)使用基于否定選擇的聚類算法對多數類別樣本聚類為k類。
(2)使用距離與密度結合的改進相似度公式計算出每個簇中各個樣本點距離聚類中心點的相似度,選擇每個簇中距離聚類中心點最近的若干個樣本,從每個簇中采樣出的個數為多數類樣本個數與聚類個數的比值。
(3)所有簇中采樣得到的樣本與少數類樣本重構為平衡樣本。
基于否定選擇密度聚類的下采樣算法(NSDC-DS)歸納如下:
算法1 NSDC-DS算法

通過此算法得到的樣本比隨機下采樣得到的樣本具有更完整的特征和更強的多樣性,使用此算法得到的樣本組成的平衡樣本作為訓練集用于分類器的學習,有助于提高分類器的性能。
經過否定選擇密度聚類下采樣處理得到平衡樣本后,選擇NBSVM 分類器對平衡訓練集進行學習,使用半監督學習方法對通信垃圾文本進行識別,為了進一步提高模型的分類效果,達到更好的垃圾文本識別效果,采用PCA-SGD算法對模型參數進行優化。
隨機梯度下降每次迭代使用一個樣本對參數進行更新,具有訓練速度快的優點,但每次更新可能不會按照正確的方向進行,引起較大的優化波動,模型難以收斂。針對此問題,本文提出一種改進的隨機梯度下降算法PCA-SGD,使用PCA 對特征所含信息量的大小進行判斷,并計算出每一個樣本具有的全部特征所含信息量大小,選擇出更能代表全體樣本的單一樣本來進行參數更新,降低樣本不確定性導致其朝著非優化的方向前進的概率,加快隨機梯度下降的收斂速度和減少優化時的波動。梯度下降參數更新公式如公式(5)所示:

其中,θ為優化參數,η為學習率,?θ J(θ)為參數梯度。
損失函數使用交叉熵代價函數,如公式(6)所示:

其中,r為訓練集大小,c為類別總數,y為預測類別,為實際類別,λ||θ||2為正則項。具體描述如算法2所示:
算法2 PCA-SGD算法


由于使用PCA 來估計樣本所含信息量,使用含有信息量高的樣本對參數更新,進而降低了樣本不確定性導致其朝著非優化方向前進的概率,此算法將減少SGD的波動和加快其收斂速度。
在進行通信垃圾文本識別時,為了提高識別的準確率,首先將訓練集中的多數類使用改進的否定選擇密度聚類算法進行無監督學習,然后從每一類中采樣出若干具有代表性的樣本與訓練集中的少數類重組為平衡訓練集,選擇NBSVM 分類器進行有監督學習,最后使用改進的PCA-SGD 算法對整體模型進行優化,完成半監督學習下的垃圾文本識別任務。整體解決方案如圖4。

圖4 通信垃圾文本識別模型
為了驗證本文在三個改進方面的有效性,設計了如下三個實驗。通過使用具有不同屬性的數據集,對比傳統算法和否定選擇密度聚類算法在不同數據集下的聚類純度和時間(時間復雜度和空間復雜度),驗證后者具有更高的效率和更強的魯棒性;使用隨機下采樣方法、否定選擇密度聚類算法與傳統的聚類算法分別對非平衡通信數據中的多數類進行采樣,將重組后的平衡樣本作為訓練集使用NBSVM分類器進行學習分類,并使用驗證集驗證改進后的下采樣方法的有效性;使用改進后的隨機梯度下降算法對模型進行優化,通過與傳統算法對比收斂速度和模型訓練速度來驗證PCA-SGD算法的性能。
實驗1中,為了驗證改進聚類算法的魯棒性和有效性,本文分別選擇樣本數均接近的非凸、高維和不平衡樣本空間數據集:Double-circles、Wine、Glass 和對比數據集Iris;實驗2和實驗3使用不平衡通信文本數據對否定選擇密度聚類的下采樣和PCA-SGD算法進行性能評估,其中Lingspam 和Spambase 為常用的通信數據集,Unicom數據為民生平臺客戶咨詢的不平衡通信文本數據。詳細實驗數據集及其屬性的如表1所示。

表1 數據集及其屬性
本文使用聚類純度、準確率和時間三個指標設計實驗對改進算法進行評估,其具體說明如下:
(2)準確率:Accuracy=(TP+TN)/(TP+FN+FP+TN),其中TP表示真實類別為正類,預測類別為正類;TN表示真實類別為負類,預測類別為負類;FP表示真實類別為負類,預測類別為正類;FN表示真實類別為正類,預測類別為負類。
實驗1 否定選擇密度聚類算法(NSDC)性能驗證
k-means 算法只適用凸樣本空間數據集,對于非平衡數據集聚類效果不佳,并且對于高維數據集,k-means與譜聚類算法存在聚類精確度下降和時間消耗長的缺點。為了驗證否定選擇密度聚類算法能夠改進以上缺點,本實驗分別使用了凸樣本空間數據集Double-circles和非凸樣本空間高維數據集Wine、不平衡數據集Glass和對比數據集Iris。實驗選擇傳統k-means,譜聚類作為對比算法,與否定選擇聚類算法進行性能比較,使用聚類純度和時間作為評價指標,具體實驗結果如圖5、6所示。
由結果可以看出,對于非凸樣本空間數據集Doublecircles,k-means并不適用于此類數據集,因而具有較低的純度,譜聚類雖然適用于此類數據集,但由于計算的復雜度,導致需要的時間較長。對于非平衡數據集Glass,其中的少數類樣本在最小化均方誤差過程中會被k-means算法忽略而導致聚類純度對比平衡數據集Iris降低。對于高維數據集Wine,k-means算法由于需要反復更新聚類中心點、譜聚類算法由于需要進行高維矩陣運算而需要較大的時間開銷。本文提出的否定選擇密度聚類(NSDC)算法通過將距離和密度集合來計算相似度,改進了k-means 不適用與非凸球形樣本空間的缺點,對于Double-circles 數據集,具有較高的純度和需要較少的時間;由于避免了k-means最小化均方誤差過程,減少了非平衡數據Glass對其聚類純度的影響;此外,否定選擇密度聚類算法避免了傳統k-means 算法反復更新聚類中心點和譜聚類高維矩陣計算導致較高的時間復雜度,減少了高維數據對聚類所需時間的影響。從實驗結果可以看出,否定選擇密度聚類算法具有更高的聚類純度、時間效果和更強的魯棒性。

圖5 不同數據集下各個算法聚類準確度比較

圖6 不同數據集時間比較/對比
實驗2 改進下采樣方法性能比較
為了對比隨機下采樣方法和通過聚類下采樣方法對不平衡數據處理的差異性,本實驗設計使用隨機下采樣、通過k-means聚類算法下采樣和否定選擇密度聚類算法下采樣對不平衡數據中多數類樣本進行處理,并與少數類樣本重組成平衡樣本,使用NBSVM分類算法對這三組平衡數據分別進行分類,分類混淆矩陣如圖7所示。

圖7 不同方法處理不平衡樣本,NBSVM分類混淆矩陣
通過圖7可以看出,在使用隨機下采樣方法對多數類樣本處理時,由于隨機采樣得到的樣本可能并不具有代表性,分類器在進行學習時不能學到較完整的特征,從而導致分類器具有較多的誤分樣本和較低的準確率。通過聚類算法對多數類樣本聚類再進行采樣得到的樣本,由于聚類后的每個簇與簇間具有低的相似度、簇中樣本間具有高的相似度,每個簇中距離聚類中心點越近的樣本越可以更好地代表此簇樣本,所以從每個簇中均選擇出若干具有代表性的樣本即可更好地代表全部多數類樣本,使用此采樣方法得到的樣本進行訓練,能使分類器學習到更完整的全樣本特征。因此,通過k-means聚類算法對不平衡樣本進行下采樣處理比隨機下采樣方法對其進行處理降低了垃圾文本和非垃圾文本的誤分率,垃圾文本誤分率從0.49 減少到0.23,非垃圾文本誤分率從0.40減少到0.21,準確率從59.62%升高到79.22%,很大程度上提高了分類的準確率。同時,對比通過k-means算法對不平衡數據集進行處理,使用本文改進的NCBA 聚類算法對其進行處理使垃圾文本誤分率從0.23減少到0.15,非垃圾文本誤分率從0.21減少到0.14,準確率達到了85.62%,分類器具有更精準的文本垃圾識別率,進一步說明了改進聚類的有效性。以上數據可以說明,通過聚類改進隨機下采樣提高了分類器的準確率,彌補了隨機下采樣分類器只學習到部分特征的缺點,實驗結果證明了改進下采樣方法的有效性。
實驗3 改進PCA-SGD算法性能驗證
為了驗證本文改進的PCA-SGD算法具有更高的穩定性和更快的優化速度,本實驗設計改進算法與BGD、MBGD、SGD三種算法進行誤差變化率與分類精度的比較,使用表1中Unicom不平衡通信文本數據集共17 223條。其中,四個算法誤差變化率比較結果如圖8,分類精度隨時間變化比較結果如圖9所示。

圖8 同迭代次數對模型訓練穩定性的影響

圖9 不同訓練時間下模型分類準確率比較
由圖8和圖9可以看出,由于BGD使用全樣本對模型進行訓練,保證了每次迭代都朝著整體最優化的方向進行,基本保證了損失值是單調下降的,但使用全樣本進行訓練同樣帶來了訓練速度過慢的缺點;SGD 與MSGD由于使用部分數據進行模型訓練,加快了訓練的速度,但隨機選取的樣本不能保證每次迭代損失值都是下降的,所以導致損失值的變化存在較大的波動;而改進的PCA-SGD 由于在選取樣本時進行了評估,選擇出了更具代表性的樣本進行參數的更新,進而使損失值的變化得到了比SGD 和MSGD 都小的波動,并具有更快訓練速度的優點。通過實驗結果驗證,PCA-SGD 算法具有較高的穩定性和較快的收斂速度,綜上,此算法具有較高的可行性。
實驗4 垃圾文本識別模型性能對比
為了驗證本文提出的半監督通信垃圾文本識別模型的有效性,選取 Lingspam、Spambase 和 Unicom 三個通信文本數據集,使用本文改進的模型與TFGE[17]、IDRF[18]模型進行準確率對比,實驗結果如表2所示。

表2 3種方法文本識別準確率對比 %
可以看出,由于Unicom 數據集對比Lingspam 和Spambase 數據集具有更多的樣本數和更高的不平衡比例,導致三個模型的準確率均有所下降,但本文提出的半監督模型具有最小的準確率下降幅度。此外,由于本文提出的模型在解決不平衡樣本時,不僅使用改進的NSDC-DS 欠采樣方法對其中的多數類進行欠采樣,并且在使用NBSVM分類器對重組后的均衡樣本分類后,再使用改進的優化算法PCA-SGD 對模型進行優化,得到了更好的垃圾文本識別效果。實驗結果證明,本文提出的半監督模型在解決不平衡問題時,三個數據集上均優于其他兩個模型,表現出了較優的通信垃圾文本識別性能。
在對通信垃圾文本進行識別時,本文將無監督與有監督學習結合,改進算法模型優化參數,更好地實現了垃圾文本識別的效果,具體如下:(1)無監督學習部分。提出否定選擇密度聚類算法,改進傳統聚類算法聚類中心點敏感和聚類數目不易確定的缺點。(2)有監督學習部分。使用否定選擇密度聚類算法改進了傳統隨機下采樣方法,采樣后的樣本具有更完整的整體特征,提高了分類器的性能,使用半監督學習的方法完成通信文本的垃圾識別工作。(3)模型優化。最后使用改進的PCA-SGD 算法實現對文本垃圾識別模型的優化任務,提高了模型的識別性能。實驗結果表明,否定選擇密度聚類算法具有更高的效率和更低的復雜度,改進的下采樣方法NSDC-DS 使分類器具有更高的性能,改進的隨機梯度下降算法PCA-SGD具有更穩定收斂趨勢和更快的收斂速度,本文提出的半監督學習下的通信垃圾文本識別模型具有較高的識別性能。在基于否定選擇的密度聚類算法中,相似度閾值的選取是通過多次實驗得到,需要較大的人工精力,如果根據不同數據集對閾值進行自適應調整是接下來工作的重點研究方向。