晉百川,楊鴻波,胡大膽
(北京信息科技大學(xué)自動化學(xué)院,北京 100192)
互聯(lián)網(wǎng)的快速發(fā)展帶動電商與線上教育平臺融合,隨之而來的是大量的商品評價和課程評價的文本信息。企業(yè)關(guān)注的是對大量評價文本信息快速處理,精準(zhǔn)地將差評分為一類,再根據(jù)差評提取出的關(guān)鍵詞確定企業(yè)問題所在,據(jù)此快速改進(jìn)問題,彌補損失。
文本信息處理研究較多,如文獻(xiàn)[1-5]針對KNN 算法提出了一種基于密度的樣本選擇算法,對文本特征進(jìn)行處理,取得較好的分類效果;文獻(xiàn)[6-8]結(jié)合文本相似度和NaveBayes 方法,提出了新的類別區(qū)分詞特征選擇方法;文獻(xiàn)[9-11]提出了一種基于LDA 模型的文本分類算法,對傳統(tǒng)的特征降維方法進(jìn)行改進(jìn)。以上方法對數(shù)據(jù)集要求很高,對評價日常文本內(nèi)容表現(xiàn)欠佳。文獻(xiàn)[12-16]采用改進(jìn)的KNN 算法對短文本內(nèi)容進(jìn)行分類,但分類效率還有待提高;文獻(xiàn)[17-19]使用改進(jìn)的CNN 網(wǎng)絡(luò),在提高文本分類精度方面效果顯著,但在文本處理方面還有一定不足。
以上方法均為在評價文本數(shù)據(jù)方面進(jìn)行細(xì)致分類與分析。本文使用數(shù)據(jù)可視化分析方法對特征進(jìn)行重點關(guān)聯(lián)分析,采用jieba 分詞和停用詞的處理方法對文本數(shù)據(jù)進(jìn)行詞向量表示,使用PCA(主成分分析)進(jìn)行特征降維,采用XGBoost 來訓(xùn)練評價文本分類模型,使用交叉驗證方法選取模型的最優(yōu)參數(shù),對評價文本內(nèi)容進(jìn)行快速有效分類。
數(shù)據(jù)中存在一定的錯誤、缺失和一些劣質(zhì)數(shù)據(jù),劣質(zhì)數(shù)據(jù)往往會直接導(dǎo)致模型效果不佳,甚至對模型精準(zhǔn)率造成很大影響,所以在建模之前需要對數(shù)據(jù)集進(jìn)行預(yù)處理。
本文數(shù)據(jù)集來自某高校課程反饋評價,進(jìn)行了人工標(biāo)注和脫敏處理。數(shù)據(jù)集分為訓(xùn)練集和測試集兩組,其中訓(xùn)練集有9 994 條反饋內(nèi)容,測試集有1 647 條反饋內(nèi)容,數(shù)據(jù)示例如圖1 所示,特征字段解釋說明如表1 所示。特征“反饋評價”的類別有Z(中肯評價)、G(好評)、B(差評)、N(無參考價值的評價)4 種。
Fig.1 Data set example圖1 數(shù)據(jù)集示例
Table 1 Explanation of feature fields表1 特征字段解釋說明
首先判斷數(shù)據(jù)是否有重復(fù)行,這樣做目的是減少一些不必要的訓(xùn)練數(shù)據(jù),結(jié)果顯示本文數(shù)據(jù)集不存在重復(fù)數(shù)據(jù);其次查看數(shù)據(jù)是否存在缺失值,結(jié)果顯示,特征“文本評價”存在缺失值,但缺失值的數(shù)量相比樣本數(shù)目所占比例很小,最終將所有特征“反饋評價”的缺失值刪除,剩余訓(xùn)練集樣本數(shù)目為9 968。
對訓(xùn)練集的數(shù)據(jù)特征進(jìn)行可視化分析,判斷出特征“反饋評論”是最重要的,因此對特征“反饋評論”進(jìn)行可視化分析,查看該特征在每個分類類別中所占比重,結(jié)果如圖2 所示。由圖2 可以判斷數(shù)據(jù)集存在樣本不均衡問題,這樣訓(xùn)練后的模型在測試結(jié)果上會存在偏差,所以首先需對類別不均衡的數(shù)據(jù)進(jìn)行處理。處理方法有兩種:①使用過采樣方法,增加數(shù)量較少類的樣本,使正負(fù)樣本數(shù)目均衡;②使用欠采樣方法,減少數(shù)目較多類的樣本,達(dá)到類別數(shù)目均衡??紤]到數(shù)據(jù)量可以滿足模型訓(xùn)練,所以采用隨機欠采樣方法處理類別Z(中評)和N(無參考價值的評價),以達(dá)到分類數(shù)據(jù)樣本均衡的目的。
從本數(shù)據(jù)集可以看出其特征數(shù)目為7,特征數(shù)目太少容易導(dǎo)致訓(xùn)練的模型過擬合,采用對特征“學(xué)科編號”和“校區(qū)編號”進(jìn)行One-hot 編碼來增加特征數(shù)目。One-hot編碼又稱一位有效編碼,其方法是使用N 位狀態(tài)寄存器對N 個狀態(tài)進(jìn)行編碼,每個狀態(tài)都有獨立的寄存器位,并且在任意時候其中只有一位有效。One-hot 編碼有兩個好處:①解決了分類器不好處理屬性數(shù)據(jù)的問題;②在一定程度上起到了擴充特征的作用。
Fig.2 Proportion of important features in each category圖2 重要特征在每個類別中所占比重
文本評價是所有特征中最重要同時也是最難處理的特征,處理方法直接影響到最終測試結(jié)果,考慮到文本評價都是文本信息,所以首先導(dǎo)入jieba 分詞模塊,使用現(xiàn)有的jieba 分詞對該特征文本信息進(jìn)行拆分成為獨立的詞,將這些詞與現(xiàn)有的停用詞結(jié)合。分詞過程中對文本內(nèi)容存在的多余空格、空行、回車等符號進(jìn)行自動去除,然后使用sklearn 下面的文本特征提取函數(shù)CountVectorizer 將文本中的詞語轉(zhuǎn)換為詞頻矩陣,計算詞語出現(xiàn)的個數(shù)。此時文本信息處理完畢,樣本如圖3 所示,特征數(shù)目為9 345。處理后的數(shù)據(jù)進(jìn)行歸一化,這樣做的好處是可以提升模型的收斂速度和精度。
Fig.3 Processed text data graph圖3 處理后的文本數(shù)據(jù)
將特征“反饋評價”作為目標(biāo)值,其他作為特征值,對特征值進(jìn)行處理。由于特征值維度過大,達(dá)到9 384,這樣不僅訓(xùn)練時效率低下還容易導(dǎo)致維災(zāi)難,所以對特征值進(jìn)行降維處理?,F(xiàn)有的降維方法很多且相對成熟穩(wěn)定,采用PCA(主成分分析)進(jìn)行特征降維。PCA 是降維最經(jīng)典的方法,它旨在找到數(shù)據(jù)中的主成分并利用這些主成分來表征原始數(shù)據(jù),從而達(dá)到降維目的,本實驗將n_components 設(shè)置為0.9,最終將特征維度降至1 179。
使用機器學(xué)習(xí)分類算法訓(xùn)練文本特征分類器,使用預(yù)先處理好的數(shù)據(jù)集進(jìn)行逆行訓(xùn)練,最終得到訓(xùn)練好的分類模型。
XGBoost 算法是在GBDT 算法上改進(jìn)而來的。與GB?DT 相比,XGBoost 對損失函數(shù)利用二階泰勒展開式增加正則項尋求最優(yōu)解,避免過擬合。對于XGBoost 的課程評價分類模型表示為:
其中,K 為樹的總個數(shù),fk表示第k 顆樹表示樣本xi的預(yù)測結(jié)果。XGBoost 的目標(biāo)函數(shù)為:
其中,yi代表真實值代表模型的預(yù)測值,Ω(fk)為模型的復(fù)雜度,可以保證模型在訓(xùn)練過程中控制復(fù)雜度,避免過擬合。
XGBoost 在優(yōu)化過程中采用增量訓(xùn)練方法來保證每一次訓(xùn)練原來的模型不變。加入一個新的函數(shù)f到模型中,如式(4)所示:
加入f目的是使目標(biāo)函數(shù)盡量減小。因為本文的目標(biāo)是最小化obj(t)時得到模型f(x),但是obj(t)中并沒有參數(shù)f(x),所以將目標(biāo)函數(shù)更新為:
目標(biāo)函數(shù)的泰勒展開式定義為:
從式(6)可以看出,最終的目標(biāo)函數(shù)依賴每個數(shù)據(jù)點在誤差函數(shù)上的一階和二階導(dǎo)數(shù)。利用式(6)對目標(biāo)函數(shù)再次改寫成:
其中,T為葉子節(jié)點個數(shù),λ和γ為比重系數(shù),以防止過擬合產(chǎn)生。
模型訓(xùn)練過程中使用交叉驗證與網(wǎng)格搜索方法對XG?Boost 參數(shù)進(jìn)行調(diào)優(yōu),最終選取關(guān)鍵參數(shù)為:subsample=1,colsample_bytree=0.7,min_child_weight=1,max_depth=3,n_estimators=1000,alpha=0,選取過程如圖4 所示。
Fig.4 Tuning process of key parameters in XGBoost圖4 XGBoost 中關(guān)鍵參數(shù)調(diào)優(yōu)過程
根據(jù)真實類別和預(yù)測類別分為真正類(TP)、真負(fù)類(TN)、假正類(FP)和假負(fù)類(FN)。采用精準(zhǔn)率(Preci?sion)、召回率(Recall)及F1 值3 個指標(biāo)測試分類精度。
精準(zhǔn)率是預(yù)測為正的樣本數(shù)與所有實際為正的樣本數(shù)之比,召回率是預(yù)測為正的樣本數(shù)與該類實際樣本數(shù)之比,F(xiàn)1 是綜合精準(zhǔn)率和召回率考慮的文本分類精確度。
將訓(xùn)練得到的XGBoost 模型最優(yōu)參數(shù):subsample=1,colsample_bytree=0.7,min_child_weight=1,max_depth=3,n_estimators=1 000,alpha=0 等加入 到面向XGBoost 的評價文本分類模型中,得到最優(yōu)的評價文本分類模型。為了進(jìn)一步驗證模型的有效性,選用機器學(xué)習(xí)中經(jīng)典的分類模型最近鄰分類器(KNN)、貝葉斯分類器(NB)、支持向量機分類器(SVM)、lightGBM 分類器,與面向XGBoost 的評價文本分類模型進(jìn)行比較。最終通過模型的評估指標(biāo)精準(zhǔn)率(Precision)、召回率(Recall)、F1 值進(jìn)行對比,實驗結(jié)果如表2 所示。
Table 2 Comparison of experimental results表2 實驗結(jié)果對比 (%)
由于XGBoost 分類器能夠?qū)θ笔У奶卣髦颠M(jìn)行自動學(xué)習(xí)處理,為避免陷入局部最優(yōu)進(jìn)行反向剪枝,可將成百上千個分類精準(zhǔn)率低的模型組合成一個分類精準(zhǔn)率較高的模型進(jìn)行分類處理。從實驗結(jié)果可以看出XGBoost 在精準(zhǔn)率、召回率及F1 值3 個指標(biāo)上均優(yōu)于最近鄰分類器(KNN)、貝葉斯分類器(NB)、支持向量機分類器(SVM)、lightGBM 分類器,在課程評價文本分類中表現(xiàn)出較好的分類效果,具有一定的使用價值。
本文建立了一個11 641 條課程評價的數(shù)據(jù)集并進(jìn)行人工標(biāo)注和脫敏處理,使用欠采樣方法處理數(shù)據(jù)中的樣本不均衡問題,使用jieba 分詞和停用詞對文本進(jìn)行詞向量表示,使用PCA(主成分分析)進(jìn)行特征降維,通過比對一些經(jīng)典的機器學(xué)習(xí)分類學(xué)習(xí)器可以得到面向XGBoost 課程評價文本內(nèi)容的分類。
本文針對高校課程評價內(nèi)容進(jìn)行智能分類,構(gòu)建了面向XGBoost 的課程評價文本智能分類模型。該模型在評價文本的智能分類中表現(xiàn)出較好結(jié)果,對文本分類內(nèi)容進(jìn)行了一定的創(chuàng)新。但是本文還存在一些不足,如XGBoost 分類模型訓(xùn)練存在耗時問題,通常一個最優(yōu)參數(shù)的訓(xùn)練要花費很多時間,降低了效率;在分類的精度上還有待提高。后續(xù)研究會對這些缺點進(jìn)行深入研究,爭取在提高文本分類精度的同時提高模型訓(xùn)練速度,在保證模型精準(zhǔn)率的同時還要提高效率。