基于協(xié)同訓(xùn)練的半監(jiān)督文本分類算法

標(biāo)簽: 半監(jiān)督學(xué)習(xí),文本分類
作者:煉己者


本博客所有內(nèi)容以學(xué)習(xí)、研究和分享為主,如需轉(zhuǎn)載,請(qǐng)聯(lián)系本人,標(biāo)明作者和出處,并且是非商業(yè)用途,謝謝!


半監(jiān)督學(xué)習(xí)文本分類系列

用半監(jiān)督算法做文本分類(sklearn)
sklearn半監(jiān)督學(xué)習(xí)
基于自訓(xùn)練的半監(jiān)督文本分類算法


一. 摘要

本文主要講述基于協(xié)同訓(xùn)練的半監(jiān)督算法做文本分類,用三個(gè)差異性比較大的分類器對(duì)未標(biāo)注數(shù)據(jù)進(jìn)行標(biāo)注,它們可以進(jìn)行交叉驗(yàn)證,大大提升了對(duì)未標(biāo)注數(shù)據(jù)標(biāo)記的置信度(簡(jiǎn)單理解就是三個(gè)分類器同時(shí)對(duì)一個(gè)未標(biāo)注數(shù)據(jù)標(biāo)記一樣的標(biāo)簽,那么這個(gè)標(biāo)簽就可信了),從而提高分類器標(biāo)注的準(zhǔn)確率

二. 操作流程

1. 文本預(yù)處理

這里就不再贅述,參考這篇文章:中文文本預(yù)處理流程
這上面的流程很完整,而且有代碼,你只需要按著那個(gè)操作來(lái)即可

2. 協(xié)同訓(xùn)練的操作方法

操作思路:

  1. 數(shù)據(jù)data平均分成三份data1,data2,data3(也就是把上面操作之后得到的文本向量均分成三份)
  2. 寫一個(gè)函數(shù):包含三個(gè)分類算法。就是構(gòu)建三個(gè)差異性較大的分類器,我采用的是SVM,貝葉斯,xgboost三種算法。
  3. 用data1訓(xùn)練SVM分類器,用data2訓(xùn)練貝葉斯分類器,用data3訓(xùn)練xgboost分類器。這樣我們就得到了三個(gè)初步訓(xùn)練好的分類器。
  4. 接下來(lái)就是對(duì)剩下的所有未標(biāo)注數(shù)據(jù)進(jìn)行操作了,未標(biāo)注數(shù)據(jù)一條一條過(guò)
    操作思路:假設(shè)有10條未標(biāo)注數(shù)據(jù),第一條取出來(lái)了,三個(gè)分類器對(duì)它進(jìn)行預(yù)測(cè)。有以下三種可能:
  • 如果大家預(yù)測(cè)的都一樣,那就把它連同預(yù)測(cè)的標(biāo)簽加入到總的訓(xùn)練集data里。
  • 如果有兩個(gè)預(yù)測(cè)的一樣,另外一個(gè)分類器預(yù)測(cè)的不一樣,比如SVM和貝葉斯預(yù)測(cè)的一樣,xgboost的不一樣,就把它們倆的標(biāo)注結(jié)果放到data3里,然后再讓xgboost對(duì)更新的data3進(jìn)行訓(xùn)練。
  • 如果大家都預(yù)測(cè)的不一樣,就把它放回未標(biāo)注數(shù)據(jù)中

這樣操作的目的就是為了不斷地訓(xùn)練三個(gè)分類器,讓它們最終對(duì)未標(biāo)注數(shù)據(jù)預(yù)測(cè)的結(jié)果一樣。這樣一條一條未標(biāo)注數(shù)據(jù)地過(guò),直到未標(biāo)注數(shù)據(jù)為空,最終過(guò)完。

3. 測(cè)試結(jié)果

我選了5000條數(shù)據(jù)進(jìn)行預(yù)測(cè)。

測(cè)試的操作流程

  1. 把測(cè)試數(shù)據(jù)用同樣的方法轉(zhuǎn)化成文本向量
  2. 上面訓(xùn)練過(guò)程中會(huì)保存模型,怎么操作可以看這篇文章 :
    如何保存sklearn訓(xùn)練好的算法模型
  3. 你把所有的模型都保存到一個(gè)目錄下了,那么我們進(jìn)行預(yù)測(cè)的時(shí)候怎么批量地讀取這些模型呢?簡(jiǎn)單地說(shuō)就是怎么把目錄下所有的文件的文件名讀取到一個(gè)列表上??催@里—— python如何獲取目錄下的所有文件名
  4. 讀取模型,調(diào)用sklearn里的函數(shù)計(jì)算精度。因?yàn)楸4娴哪P吞嗔耍沂敲糠N模型取100個(gè)左右,做測(cè)試,然后畫(huà)折線圖,看看精度的變化情況。

先放圖,看結(jié)果

1)這是svm的結(jié)果,我們發(fā)現(xiàn)訓(xùn)練到后面,模型的效果在降低

svm

2)這是bayes的結(jié)果,一開(kāi)始有點(diǎn)詭異,但后面趨于穩(wěn)定

bayes

3)這是xgboost的結(jié)果,很鬼畜,不知道為什么會(huì)如此波動(dòng)

xgboost

從模型效果上來(lái)講,我選出了每種模型效果最好的情況

SVM:0.62
bayes:0.67
xgboost:0.75

4.結(jié)論

從圖中觀察,我們發(fā)現(xiàn):svm先升后降,bayes先升后穩(wěn)定,而xgboost很鬼畜。但是效果xgboost是最強(qiáng)的。這里面的原因我知識(shí)有限,暫時(shí)無(wú)法解釋,大伙要是有什么想法可以在底下評(píng)論,我們可以交流交流

以下是我所有文章的目錄,大家如果感興趣,也可以前往查看
??戳右邊:打開(kāi)它,也許會(huì)看到很多對(duì)你有幫助的文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容