鄧益鵬 羅銀輝
摘要:航行通告機(jī)器識別,對于規(guī)范化的代碼處理相對簡單,但對于自然語言處理起來相對困難。針對航行通告中類別多,數(shù)據(jù)分布不平衡,中英文混合等問題,提出基于word2vec文本向量化技術(shù)的文本分類方法,針對小樣本數(shù)據(jù)采用smote算法對數(shù)據(jù)重采樣,經(jīng)過重采樣后的數(shù)據(jù)選擇使用XGBoost繼承算法模型完成分類。由中航材導(dǎo)航技術(shù)公司提供的航行通告標(biāo)簽原始數(shù)據(jù),經(jīng)實(shí)驗(yàn)表明,能夠有效規(guī)避樣本數(shù)據(jù)分布極不平衡,分類數(shù)量過多的問題,同時(shí)模型的主要評價(jià)指標(biāo)都有提高,包括模型的準(zhǔn)確率、召回率及F1值。
關(guān)鍵詞:航行通告;數(shù)據(jù)分布不平衡;word2vec;smote;XGBoost
中圖分類號: TP31? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)11-0206-04
在運(yùn)用傳統(tǒng)機(jī)器學(xué)習(xí)文本分類的領(lǐng)域,文本分類的模型算法整體上已經(jīng)成熟,在文本分類技術(shù)從理論研究到實(shí)際應(yīng)用上面臨著多方面的挑戰(zhàn),與實(shí)驗(yàn)室文檔比較,互聯(lián)網(wǎng)傳播的電子文本信息則表現(xiàn)出分類多樣,關(guān)系復(fù)雜,數(shù)據(jù)分布極為不平衡等特點(diǎn),由中航材導(dǎo)航技術(shù)公司提供的通告標(biāo)簽原始數(shù)據(jù)同樣標(biāo)簽數(shù)據(jù)分布極為不均衡,部分原始數(shù)據(jù)如表1所示。
傳統(tǒng)的文檔表示方法以詞袋法BOW為主[1],詞袋法將文檔看作是單個(gè)詞的集合,每個(gè)詞被認(rèn)為是相互獨(dú)立的。BOW將一篇文檔都表示成和訓(xùn)練詞匯文檔一樣大小的向量,向量的每個(gè)位置代表該位置所代表的詞出現(xiàn)了幾次,出現(xiàn)新的詞匯文檔,則向量維度增加。這就意味著幾個(gè)重大缺陷:1)維度過高;2)短文本的詞匯數(shù)通常是幾個(gè)到幾百,詞向量的維度卻高達(dá)數(shù)十萬,利用率不到千分之一;3)詞袋法不能很好地表示短文本的語義,忽視掉其中的順序、語義等關(guān)鍵的信息。
深度學(xué)習(xí)發(fā)展越來越好[2],2013年Mikolov提出了word2vec模型[3]來表示詞向量。word2vec模型計(jì)算文檔中詞的上下文信息并將其轉(zhuǎn)化為一個(gè)低維向量,越相似的句子則在向量空間種越接近。word2vec模型在自然語言處理領(lǐng)域應(yīng)用相當(dāng)成功。包括中文分詞[4]、情感分類[5]等。
smote算法[6]是改善數(shù)據(jù)不平衡分布的一種重采樣算法。核心是通過對少數(shù)類樣本進(jìn)行過采樣,不是直接簡單復(fù)制少數(shù)類樣本,是利用歐氏距離對少數(shù)類樣本進(jìn)行分析合成新的樣本。經(jīng)實(shí)驗(yàn),smote算法對數(shù)據(jù)的預(yù)處理更有效,能夠有效預(yù)防模型出現(xiàn)過擬合。
基于樹模型的XGBoost訓(xùn)練模型是目前在傳統(tǒng)機(jī)器學(xué)習(xí)當(dāng)中優(yōu)秀的集成學(xué)習(xí)模型,主要思想是訓(xùn)練多個(gè)準(zhǔn)確率較低的弱學(xué)習(xí)器,然后通過某種機(jī)制集成為一個(gè)強(qiáng)學(xué)習(xí)器[7]。調(diào)整參數(shù)方便,訓(xùn)練時(shí)長較短,結(jié)果較為優(yōu)秀,代價(jià)函數(shù)加入了正則項(xiàng)防止模型出現(xiàn)過擬合。
1 方法
文章為了能夠有效提高文本分類的精度,使用一種基于word2vec向量化和XGBoost的文本分類方法。其流程圖如圖1所示。
1.1 數(shù)據(jù)清洗
針對本文的中文數(shù)據(jù)采用的哈工大的jieba分詞技術(shù),停用詞庫來自哈工大數(shù)據(jù)源,經(jīng)處理過后的如表2所示。
1.2 文本向量化
詞的向量化表示是將語言中的詞進(jìn)行數(shù)學(xué)化表示,詞的向量化表示主要有四種方式:(1)one-hot文本表示;(2)分布式表示;(3)TF-IDF權(quán)重文本表示;(4)word2vec模型神經(jīng)網(wǎng)絡(luò)模型表示。
本文主要采用第四種。word2vec表示主要是兩種,包括CBOW和Skip-gram模型。圖2所示,CBOW模型利用詞w(t)前后n個(gè)詞去預(yù)測當(dāng)前詞;Skip-gram模型則反之利用當(dāng)前詞w(t)去預(yù)測前后n個(gè)詞。圖3所示Skip-gram模型。
1.3 smote數(shù)據(jù)重采樣
smote算法[8]是過采樣中提出的新算法,分析少數(shù)類樣本的特點(diǎn),模擬生成新的樣本,將新的樣本插入到數(shù)據(jù)集中,不均衡的數(shù)據(jù)集變成均衡數(shù)據(jù)集來防止模型出現(xiàn)過擬合。采樣原理如圖4所示。
1.4 XGBoost算法
XGBoost【9】是陳天奇在基于GBDT的基礎(chǔ)提出集成算法,與之相比,XGBoost對損失函數(shù)利用二階泰勒展開式增加正則項(xiàng)尋求最優(yōu)解避免過擬合,有效構(gòu)建增強(qiáng)樹,能在cpu上進(jìn)行并行運(yùn)算。樹的集成模型如下:
[yi=k=1Kfkxi fk∈F]? ? ? ? ? ? ? ? ? ? ? ? ? ?[1]
K是樹的數(shù)量,F(xiàn)是樹的集合空間,[yi]是模型的預(yù)測值,[xi]是第i個(gè)數(shù)據(jù)點(diǎn)的特征向量,[fk]是第k棵樹,與葉子節(jié)點(diǎn)的權(quán)重w有關(guān)。
XGBoost模型由三部分組成,包括學(xué)習(xí)模型,參數(shù)調(diào)整和優(yōu)化目標(biāo)函數(shù)。目標(biāo)函數(shù)優(yōu)化程度決定模型的準(zhǔn)確率,提高模型的泛化能力。故要通過損失函數(shù)最小化,增加模型復(fù)雜度的懲罰項(xiàng)實(shí)現(xiàn)對目標(biāo)函數(shù)的優(yōu)化。XGBoost模型目標(biāo)損失函數(shù)由下兩部分組成:
[L=i=1nlyi,yi+k=1KΩfk]? ? ? ? ? ? ? ? ? ? ? (2)
第一部分由真實(shí)值[yi]和預(yù)測值[yi]之間的誤差組成,第二部分[k=1KΩfk]是樹的復(fù)雜度函數(shù),用于控制模型復(fù)雜度正則項(xiàng)。[Ωfk]可表示為:
[Ωf=γT+0.5λw2]? ? ? ? ? ? ? ? ? (3)
[γ]和[λ]為懲罰因子;T為樹上的葉子數(shù)。式3在最小化序列的過程當(dāng)中,每一輪訓(xùn)練增加增量函數(shù)[fi(xi)]。因此目標(biāo)函數(shù)可以改為:
[Lt=i=1Nlyi,yit-1+fixi+Ωft]? ? ? ? ? ?(4)
t表示訓(xùn)練第t輪,對于式(4),使用二階泰勒級數(shù)展開式將第j棵樹的每片葉子中的樣本集合定義為[Ij=i|q(xi=j)]。目標(biāo)損失函數(shù)的一階導(dǎo)數(shù)是:
[gi=?yit-1lyi,yit-1]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [5]
二階導(dǎo)數(shù)是:
[hi=?2yit-1lyi,yit-1]? ? ? ? ? ? ? ? ? ? ? ? ? (6)
由此可得:
[Lt?i=1ngiftxi+0.5hif2txi+Ωft?j=1Ti∈ Ijgiwj+0.5i∈ Ijhiλw2j+γT#]
(7)
定義公式[Gj=i∈ Ijgi]、[Hj=i∈Ijhi],式7簡化為:
[Lt?j=1TGjwj+0.5Hj+λw2j+γT]? ? ? ? ? ? ? ?(8)
[wj]的偏導(dǎo)數(shù)為:
[w`j=-GjHj+λ]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(9)
權(quán)重向量w帶入到目標(biāo)損失函數(shù)得:
[Lt?-0.5j=1TG2jHj+λ+γT]? ? ? ? ? ? ? ? ? (10)
由式10可得目標(biāo)函數(shù)損失越小,模型的分類效果就越好,泛化能力越強(qiáng)。
2 實(shí)驗(yàn)
本文實(shí)驗(yàn)基于GPU圖形工作站搭建實(shí)驗(yàn)環(huán)境:操作系統(tǒng)是windows7,內(nèi)存48GB,顯卡為GTX1080Ti,編程語言為Python3.7。
2.1文本分類模型主要指標(biāo)
評估模型的指標(biāo)主要包括準(zhǔn)確率Precision、召回率Recall、F1指標(biāo)。準(zhǔn)確率是指文本分類正確的樣本數(shù)與所有分類樣本數(shù)的比例:
[Precision=aa+b]? ? ? ? ? ? ? ? ? ? ? ? ? [11]
[Recall=aa+c]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(12)
a代表被正確分類的樣本數(shù),b代表被錯(cuò)誤分類的樣本數(shù),c代表屬于該類卻沒有被分類出來的樣本數(shù)。準(zhǔn)確率和召回率是兩個(gè)矛盾的指標(biāo),為能夠真正反映模型的好壞,引入F1召回率指標(biāo),是文章主要考慮的指標(biāo)。
[F1=2Precision*RecallPrecision+Recall]? ? ? ? ? ? ? ? ? ? ? (13)
2.2 實(shí)驗(yàn)結(jié)果與實(shí)驗(yàn)分析
實(shí)驗(yàn)選擇的數(shù)據(jù)集來自中航材導(dǎo)航技術(shù)公司提供的航行通告數(shù)據(jù)集,有883093條數(shù)據(jù),類別高達(dá)1434種,類別最多的樣本數(shù)有87081個(gè),最少的僅有1個(gè),為保證模型質(zhì)量,篩選出樣本數(shù)大于5的類別樣本,剩下871010條數(shù)據(jù),992個(gè)類別。word2vec的計(jì)算采用的gensim開源軟件實(shí)現(xiàn)。主要超參數(shù)選擇為sg=1,選擇Skip-gram算法,特征向量維度為50,窗口為5,min_count為10。訓(xùn)練次數(shù)為30,最后訓(xùn)練出來的維度是50維稠密實(shí)數(shù)向量。經(jīng)過word2vec詞向量化后的數(shù)據(jù)進(jìn)行smote算法重采樣,對類別樣本數(shù)小于5000大于5的數(shù)據(jù)使用smote重采樣,將小樣本數(shù)據(jù)構(gòu)造成每種類別在10000條,保證數(shù)據(jù)集的相對均衡。XGBoost選擇基于樹的模型,分類器基分類器數(shù)量為100,最大深度為5,實(shí)驗(yàn)采用了5折交叉驗(yàn)證,評估準(zhǔn)確性是交叉驗(yàn)證的平均值處理后的數(shù)據(jù)經(jīng)模型處理其模型結(jié)果指標(biāo)如圖5-圖7所示。
3 結(jié)論
本文研究了經(jīng)word2vec神經(jīng)網(wǎng)絡(luò)向量化后的原始數(shù)據(jù)在smote算法重采樣以及XGBoost集成算法處理后的模型。與沒有經(jīng)歷過smote算法重采樣的原模型相比較,F(xiàn)1等關(guān)鍵指標(biāo)有了明顯的提升。證明word2vec神經(jīng)網(wǎng)絡(luò)向量化算法在結(jié)合smote算法,能夠很好能夠?qū)ι贁?shù)類數(shù)據(jù)進(jìn)行一個(gè)良好的識別處理。
但研究本身存在一定的局限,首先模型運(yùn)行時(shí)長相當(dāng)緩慢,僅訓(xùn)練word2vec詞向量時(shí)間就達(dá)數(shù)小時(shí),使用XGBoost算法完成分類訓(xùn)練評估時(shí)間也接近半小時(shí),模型的參數(shù)優(yōu)化有著進(jìn)一步優(yōu)化的可能。其次本次模型沒有使用樸素貝葉斯、SVM等機(jī)器學(xué)習(xí)常見的十分成熟的模型,僅僅考慮XGBoost算法,沒有考慮全面。最后分類模型沒有使用深度學(xué)習(xí)來做,如若未來能夠使用深度學(xué)習(xí)等方法,無論是模型評價(jià)指標(biāo)還是模型運(yùn)行時(shí)間應(yīng)該有進(jìn)一步提高的空間。
參考文獻(xiàn):
[1] Baeza-Yates R,Ribeiro-Neto B.Modern Information Retrieval [M].New York:ACM press,1999.
[2] Gullo F,Ponti G,Tagarelli A.Clustering uncertain data via K-medoids[M]//Lecture Notes in Computer Science.Berlin,Heidelberg:Springer Berlin Heidelberg,2008:229-242.
[3] Mikolov T,Chen K,Corrado G,et al.Efficient estimation of word representations in vector space[EB/OL].2013.
[4] Reynolds A P,Richards G,Rayward-Smith V J.The application of K-medoids and PAM to the clustering of rules[M]//Lecture Notes in Computer Science.Berlin,Heidelberg:Springer Berlin Heidelberg,2004:173-178.
[5] 周世兵,徐振源,唐旭清.新的K-均值算法最佳聚類數(shù)確定方法[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(16):27-31.
[6] Fernandez A,Garcia S,Herrera F,et al.SMOTE for learning from imbalanced data:progress and challenges,marking the 15-year anniversary[J].Journal of Artificial Intelligence Research,2018,61:863-905.
[7] 蘇兵杰,周亦鵬,梁勛鴿.基于XGBoost算法的電商評論文本情感識別模型[J].物聯(lián)網(wǎng)技術(shù),2018,8(1):54-57.
[8] Chawla N V,Bowyer K W,Hall L O,et al.SMOTE:synthetic minority over-sampling technique[J].Journal of Artificial Intelligence Research,2002,16:321-357.
[9] Chen T Q,Guestrin C.XGBoost:a scalable tree boosting system[C]//Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.San Francisco California USA.New York,NY,USA:ACM,2016:785-794.
【通聯(lián)編輯:梁書】