王德志,梁俊艷
(1.華北科技學院 計算機學院,河北 廊坊 065201;2.華北科技學院 圖書館,河北 廊坊 065201)
在自然語言處理中,文本分類研究中主要分為二分類和多分類問題[1,2]。訓練數據集的平衡性對深度學習算法的性能有重要的影響。文本多分類的訓練數據集多是不平衡數據集。所謂不平衡數據集就是在同一個數據集中的某類數據的樣本數量遠遠大于或者小于其它樣本的數量。而少數類樣本被錯誤分類的代價要比多數類樣本錯誤分類造成的損失更大。文獻[3]提出在卷積神經網絡訓練過程中基于標簽權重修改損失函數結果,強化少數類樣本對模型參數的影響。文獻[4]提出基于詞向量遷移的預訓練任務選擇方法,區分小類別樣本,提升小類別分類準確度。文獻[5]提出基于層次聚類的不平衡數據加權方法,根據密度因子確定采樣頻率,提升小樣本權重。文獻[6]提出基于差分孿生卷積神經網絡的超平面特征圖,利用樣本與不同超平面的距離進行不平衡數據集分類的算法。目前研究中主要側重于文本的二分類問題或者是通用性的低維特征向量的不平衡數據集的分類問題[7-10]。而基于高維度詞向量的文本不平衡數據集多分類問題面臨巨大的挑戰。本文基于高維度向量聚類方法,提出一種混合式不平衡文本數據集采樣方法,在保障大樣本數據分類準確度的基礎上,提升小樣本數據分類的準確率,并通過實驗驗證了該方法的分類效果和準確率。
在文本多分類處理中,首先需要對文本中各個詞進行向量化表示,經典的方法有TF-IDF、skip-gram和CBOW等方法。文本數據集的詞向量處理可以采用自定義模型訓練方式或者采用經典的詞向量模型,例如Word2vec、GloVe和FastText等[11]。但是,無論采用哪一種方式,當文本訓練樣本數據非常多時,訓練所涉及到的基本詞匯量也會不斷增多。尤其是對非規范文本處理時(例如微博文本),會遇到大量新生詞匯。為了更準確表示文本之間的關系,就需要對文本中的詞進行高維度向量化,每個維度代表一個文本特征,只有詞的向量維度達到一定規模時,才能夠提供特征具有區分度的文本分類訓練樣本數據。谷歌公司基于大量通用新聞材料訓練了具有300維的Word2vec詞向量模型。Facebook基于通用的維基新聞材料訓練了具有300維的FastText模型。這些高維度模型為文本多分類提供了堅實的詞向量基礎。
高維度詞向量模型只是為分詞向量化提供了支撐,但是在文本多分類中,還需要大量的訓練樣本數據。由于目前文本多分類大量使用有監督學習方法,因此需要對訓練數據進行樣本標注。而大量的文本數據進行多分類標注是一個困難的事情,要想獲得完全平衡的已標注文本分類訓練數據基本是不可能的。而且隨著分類數據的增多,也對訓練數據集的平衡性提出了挑戰。在實際文本多分類研究中,大量使用不平衡的訓練數據集。其中,小樣本數量標注數據的預測準確性,在特定應用領域中有重要作用。例如,在電子郵件中分類出具有詐騙性質的郵件,相對于普通郵件和廣告垃圾郵件就屬于小樣本數量標注數據。數據集的不平衡性已經成為多數文本多分類的基本屬性。
為解決文本多分類訓練數據集不平衡問題,可以采用欠采樣(下采樣)或過采樣(上采樣)方式進行數據集的預處理。其中欠采樣以小樣本數量為標準,對大樣本數據進行減量提取,使大樣本數量與小樣本數量具有相同的規模,數據集總量減少。而過采樣正好與之相反,以大樣本數量為標準,對小樣本數據進行復制增量,使小樣本數量與大樣本數量具有相同規模,數據集總量增加。但在文本多分類數據集中,由于分類標簽是多個,如果僅基于最小樣本和最大樣本進行處理,都會導致數據集的不合理性,影響最終深度學習模型的訓練結果。因此,本文提出一種基于聚類的均分混合式采樣算法(HCSA)。其主要步驟如下:
(1)計算樣本數據量均線
如式(1)所示,計算出所有不同分類樣本數量的算數平均數,以此作為樣本數據量均線。其中N表示分類標簽數量,Xi表示每個分類中樣本的總數量
(1)
(2)進行樣本分區
以Lavg均線為基準,對每個分類樣本進行分區。如式(2)所示,其中樣本大于均線的為上區zup,樣本數量小于均線的為下區zdn,并計算出與均線的差值di

di=Xi-Lavg
(2)
(3)進行混合采樣
對上區zup樣本數據采用基于K-means聚類的欠采樣方法,每個分類樣本減少di個數據,實現每類樣本數據量為Lavg。對于下區zdn樣本數據采用基于K-means聚類的過采樣方法,每個分類樣本增加di個數據,實現每類樣本數據量為Lavg。最終形成的新樣本數據集樣本數量為N×Lavg,從而實現不同分類樣本數據量的均衡性。
通過上述步驟實現了多分類樣本的均衡性,其關鍵步驟是上分區和下分區的不同采樣方法。本文提出基于K-means聚類采樣方法,對聚類小樣本數據進行等比例擴充,對聚類大樣本數據進行等比例縮減,從而保證各聚類樣本數據特征的均衡性,為后續深度模型訓練提供保障。
在不平衡數據集中,均線下數據屬于小樣本數據,需要增加數據樣本數量。本算法采用基于K-means聚類的方法,對每類樣本數據進行聚類,根據同類樣本中聚類的分布情況,進行樣本增加。聚類簇內數據越多,說明數據特征向量相似,增加的數據相對就少;聚類數據越少說明樣本特征比較特殊,就增加相對多一些。
2.2.1 文本向量距離計算
在傳統的K-means算法中多采用歐式距離進行空間中節點距離計算,但是在文本多分類中,要通過文本詞向量空間距離來體現文本的相似度,因此采用歐式距離不適合。本算法采用文本余弦距離來計算多維空間中節點的距離,如式(3)所示
(3)
式中:x和y是多維詞向量空間中的兩個節點;向量空間維度n維;xi和yi表示兩個向量在第i維空間的值。從公式中可以看出,對于兩個文本向量,如果文本越相似,則Dis(x,y)越小,距離越近。當兩個文本完全一致時,距離為0。當兩個文本完全不相同時,距離最大值為1,即Dis(x,y)∈[0,1]。
2.2.2 基于輪廓系數的K-means聚類
在K-means聚類中K值代表聚類簇的數量。由于聚類屬于無監督學習,因此無法提前確定最佳的K值。K值的大小直接影響到最終聚類的效果。因此,本算數采用動態調整的基于輪廓系統的K值選取與數據聚類,其步驟如下。
(1)K值與平均輪廓系統數S初始化
在有M個節點的向量空間中,聚類的簇數量K∈[1,M],即聚類的極端可能性是所有節點都在一個聚類中,或者每個節點獨立一個簇,與其它任何節點無關。因此K值初始化為2,從最小可能聚類簇數開始。平均輪廓系數S由于還沒有計算,因此取最小值-1,方便后面比較。隨機選取兩個節點作為初始聚類簇的質心節點。
(2)所有節點聚類
基于當前K簇,首先,每個節點i計算其與所屬簇質心的距離,然后選取距離最小的簇為其所在簇。在計算完所有節點后,如式(4)所示,計算本簇中所有節點與質心的平均距離,然后選取到質心距離與平均距離最接近的節點作為新的質心。最后計算新質心與舊質心的距離,如果小于一定的值,結束聚類,否則開始新一輪以新質心為核心的聚類
hk_new=

(4)
(3)計算每個節點的凝聚度
在聚類結束后,為了利用輪廓系數動態優化選取K值,首先計算每個節點xi的凝聚度。所謂節點的凝聚度就是此節點xi與同簇的其它節點的平均距離,其計算如式(5)所示。ci為節點i所在的簇
(5)
(4)計算機每個節點的分離度
所謂分離度是節點xi與其最近簇cm中所有節點的平均距離,如式(6)所示。而最近簇cm的計算如式(7)所示,就是用xi到某個簇所有節點平均距離作為衡量該點到該簇的距離后,選擇最小平均距離的簇作為最近簇cm
(6)
(7)
(5)計算平均輪廓系數
凝聚度代表了簇內的密度程度,分離度代表了簇間的距離。理論上凝聚度越小,簇間距離越遠,聚類效果越好,因此,基于式(8)計算所有節點平均輪廓系數S。公式中Si表示節點i的輪廓系數,S表示平均輪廓系數,它是所有節點輪廓系數之和的算數平均數,其取值范圍為S∈[-1,1]。S的值越大代表聚類效果越好
(8)
(6)動態調整K值
增加K值,重復上述步驟(2)到步驟(5),計算出新一輪迭代中的輪廓系數。當迭代N次后,選取平均輪廓系數最大值的K作為聚類簇數,并以此時的聚類結果為最終結果。
2.2.3 均線下數據過采樣
在對數據集的每類數據進行完聚類后,如式(2)所示,Lavg均線下的分類數據集需要增加|di|個數據,從而達到均線數據量。第i類數據集增加數據量如式(9)所示
(9)
Ni,j表示數據集中第i類數據中聚類后第j簇需要增加的數據量。Xi表示第i類數據集的總量,Mi,j表示第i類數據集中聚類后第j簇的數據量,Ki表示第i類數據集聚類的簇數量。從公式中可以看出,在聚類后,聚類簇中數據量越多在本類數據中增加的數據量就越少。不同類別數據之間,距離均線Lavg越遠,整體的增加數據量越多。在同一簇中數據的增加方法,采用隨機復制法。其過程就是,首先對簇中Mi,j個數據進行編號,其編號范圍為[1,Mi,j],然后在此數據范圍內進行隨機抽簽。如果Ni,j≤Mi,j,則隨機抽簽Ni,j個不重復數據復制。如果Ni,j>Mi,j,隨機抽簽Ni,j個可重復數據復制。
在不平衡數據集中,均線上數據屬于大樣本數據,為了防止分類模型過擬合與提升訓練速度,需要減少數據樣本數量。與小樣本數據處理方式類似,大樣本數據也采用基于輪廓系數的K-means動態聚類方法,對每類樣本數據進行聚類,根據同類樣本中聚類的分布情況,進行樣本減少。聚類簇內數據越多,說明數據特征向量相似,減少的數據相對就多;聚類數據越少說明樣本特征比較特殊,就減少相對少一些。其第i類數據集減少數據量如式(10)所示
(10)
Qi,j表示數據集中第i類數據中聚類后第j簇需要減少的數據量,|di|表示Lavg均線上的第i類數據集需要減少的數據個數。在同一簇中數據的選取方法,采用隨機選擇法,就是在Mi,j個數中隨機選取|Xi-Qi,j|個數。
卷積神經網絡(CNN)是機器學習中的經典神經網絡模型,在多個領域中都得到成功的應用。針對自然語言分析,CNN一般采用一維模型結構,可以修改為并行的文本分類卷積神經網絡TextCNN,其模型結構如圖1所示。可以有多個并行的卷積層對輸入的文本進行處理,最大池化層可以采用步長為3、4和5的方案進行數據處理,目的是提取不同單詞間隔的文本特征信息,最后通過平鋪層進行特征信息的匯總。為了保障模型的運行效率,本文根據詞向量高維度特性,設計的TextCNN模型采用具有3個并行卷積層的一維卷積模型結構,如圖2所示。模型中卷積層輸入維度為(50,300)結構,輸出為(50,256)。卷積層激活函數采用“relu”函數,輸出層激活函數采用“softmax”函數,優化器采用“adam”,損失函數采用“catego-rical_crossentropy”。

圖1 TextCNN網絡模型結構

圖2 TextCNN模型參數
文本多分類算法一般都是針對特定文本數據集進行優化。本算法的優化主要針對微博災害數據集。此數據集來自于CrisisNLP網站(https://crisisnlp.qcri.org)。其提供了2013年至2015年的2萬1千多條災害相關的微博數據,并人工對這些數據進行了多分類標注。其標注樣本數據情況見表1。標注包含受傷、死亡、失蹤、查找、人員安置、疏散等9類信息。其中最大分類樣本數量約是最小樣本分類數量的13倍,5種分類在數據集均線下,4種分類在數據集均線上,屬于典型的不平衡文本數據集。在數據集預處理方面,由于在微博文章中要求內容不能超過140個單詞,因此在文本向量化前需要先進行關鍵詞提取,為了保證提取的關鍵詞能夠代表文章的目標分類,經統計分析最終選取文章平均詞語量50作為參數,即詞頻統計前50的單詞作為文章的關鍵詞。

表1 微博災害數據集標定情況
本實驗基于個人工作站,其軟硬件配置見表2。本實驗基于Word2vec模型對微博災害數據集進行分詞向量化,每條文本維度為(50,300)。其中,50代表此文本中的關鍵詞,如果關鍵詞個數不足50,補零進行處理。300代表每個詞的維度,即詞特征向量空間為300維。實驗中共使用21 125條微博數據,其中90%用來進行模型訓練,10%用來模型測試。TextCNN模型數據輸出維度為(9,1),表示分類為9個。

表2 實驗配置條件
機器學習算法的評價指標通常采用準確率(Acc)、精確率(P)、召回率(R)和F1值。在文本多分類中,準確率、召回率和F1值可以采用算術平均(Pm、Rm和F1m)和加權平均(Pw、Rw和F1w)計算兩種方法,其計算如式(11)、式(12)所示



(11)



(12)
其中,Pi為每個分類的精確率,即“本類正確預測的數量/所有預測為本類的數量”;Ri為召回率,即“本類正確預測的數量/所有本類的數量”;F1i是“2*(Pi*Ri)/(Pi+Ri)”。αi為不同分類樣本占總樣本的比例,N為分類總數。
為驗證本算法性能,進行了4種方法進行實驗數據對比。第一種是常規方法,未對數據集進行欠采樣或過采樣;第二種是隨機欠采樣方式,以最小分類數據集數據量為標準,其它分類數據集進行隨機欠采樣;第三種是隨機過采樣方式,以最大分類數據集數據量為標準,其它分類數據集進行隨機復制過采樣;第四種是本文提出的HCSA采樣方法。4種方法實驗結果的混淆矩陣,如圖3所示。

圖3 預測結果混淆矩陣
基于各方法的混淆矩陣計算出對應各分類數據集的評價指標值見表3。從表中數據可以看出,分類5為最小數據集,在F1值中HCSA算法值最大,小樣本的預測精確率和召回率都有提升。分類7為最大數據集,在F1值中HCSA算法值最大,精確率和召回率性能都沒有下降。

表3 各方法評價指標值
圖4和圖5展示了各方法的算數平均值和加權平均值指標數據。從圖中可以看出,HCSA算法的準確率和F1值最高,過采樣與常規方法性能相近,欠采樣方法指標值最低。欠采樣由于隨機丟棄了訓練樣本數據,導致性能下降嚴重。而過采樣雖然增加了訓練數據,但是由于是隨機復制,沒能保證一定增加文本向量空間中小特征向量。另一方面,過采樣由于存在大量的復制數據,導致TextCNN模型在訓練中出現了過擬合現象。說明,雖然增加了訓練數據數量,但是如果增加的不合理,會導致模型過擬合,不能提升模型的預測性能。而在HCSA算法中,由于進行了聚類,對小樣本中小特征向量提高了復制的比例,因此能夠提升小特征的預測準確率。對大樣本數據,為了防止過擬合,進行了訓練數據集拋棄。但是沒有導致指標值像欠采樣一樣下降非常多,這是由于在數據拋棄時,是基于聚類結果,聚類的數據越多,拋棄的比例就增多。這樣最終保證各類特征在數據集中分布平衡。

圖4 算數平均指標值

圖5 加權平均指標值
上面的實驗結果可以看出,通過在HCSA算法中引入動態聚類方法,能夠進一步基于文本的高維特征對數據集進行區分,為欠采樣和過采樣提供基礎,最終實現文本訓練數據集中數據在高維向量空間中特征向量的平衡分布,為提高文本多分類性能提供支持。
本文在文本不平衡數據集的多分類算法中,引入基于輪廓系數的動態K-means聚類方法對不平衡數據集進行聚類,并利用聚類簇采用混合式采樣方式,實現文本數據集的平衡分布。以微博災害數據集為例,驗證了HCSA算法在TextCNN模型上的性能。通過實驗驗證此算法相對常規方法、過采樣和欠采樣方法在準確率和F1值等方面都有性能提升。下一步工作可以針對文本高維空間的聚類方法進行優化,提升算法的執行速度,進一步提升高維度文本向量的聚類效果,提高基于文本不平衡數據集的多分類準確性。