文本分類的14種算法

向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號???
機(jī)器學(xué)習(xí)AI算法工程?? 公眾號:datayx
之前介紹了14種文本分類中的常用算法,包括8種傳統(tǒng)算法:k臨近、決策樹、多層感知器、樸素貝葉斯(包括伯努利貝葉斯、高斯貝葉斯和多項(xiàng)式貝葉斯)、邏輯回歸和支持向量機(jī);4種集成學(xué)習(xí)算法:隨機(jī)森林、AdaBoost、lightGBM和xgBoost;2種深度學(xué)習(xí)算法:前饋神經(jīng)網(wǎng)絡(luò)和LSTM。
各篇鏈接如下:
測試環(huán)境搭建與數(shù)據(jù)預(yù)處理:
https://blog.csdn.net/qq_43012160/article/details/94993382
決策樹、樸素貝葉斯(伯努利貝葉斯、高斯貝葉斯和多項(xiàng)式貝葉斯):
https://blog.csdn.net/qq_43012160/article/details/95366183
k臨近、邏輯回歸、SVM支持向量機(jī):https://blog.csdn.net/qq_43012160/article/details/95506126
隨機(jī)森林、AdaBoost、多層感知器:
https://blog.csdn.net/qq_43012160/article/details/95762591
lightGBM、xgBoost:
https://blog.csdn.net/qq_43012160/article/details/96016265
前饋神經(jīng)網(wǎng)絡(luò)、LSTM(包括pycharm深度學(xué)習(xí)環(huán)境搭建):
https://blog.csdn.net/qq_43012160/article/details/96101078
性能評估
先放代碼和數(shù)據(jù)集:
關(guān)注微信公眾號 datayx ?然后回復(fù)??文本分類? 即可獲取。
所有14種算法我都跑了一遍,其中4種算法要么把我電腦跑死機(jī)了,要么時(shí)間長的令人發(fā)指,就沒跑完。整理了跑出來的10種算法的正確率和耗時(shí)如下:

下面這篇博文有一個(gè)區(qū)別度更大、更完整的排名:
https://www.kesci.com/home/project/5cbbe1668c90d7002c810f79

這種簡單的文本分類練習(xí),不同算法的性能分層還是比較明顯的。
知識總結(jié)
1.機(jī)器學(xué)習(xí)、集成學(xué)習(xí)和深度學(xué)習(xí):
1)機(jī)器學(xué)習(xí)泛指所有的使機(jī)器通過建立和調(diào)整模型從而實(shí)現(xiàn)特定功能的算法。2)深度學(xué)習(xí)是運(yùn)用了多層的人工神經(jīng)網(wǎng)絡(luò)(ANN)的機(jī)器學(xué)習(xí)方法。3)集成學(xué)習(xí)是指通過將多個(gè)弱分類器的分類結(jié)果進(jìn)行整合,獲得比單個(gè)弱分類器更好效果的機(jī)器學(xué)習(xí)方法。
集成學(xué)習(xí)和深度學(xué)習(xí)屬于機(jī)器學(xué)習(xí)。
2.集成學(xué)習(xí)的bagging和boosting思想:
bagging中的各個(gè)弱分類器取值是相互獨(dú)立的、無關(guān)的,常使用有放回抽樣實(shí)現(xiàn)。
boosting中的弱分類器是在基分類器/前一個(gè)分類器的基礎(chǔ)上通過迭代不斷優(yōu)化/調(diào)整出來的。
3.三種樸素貝葉斯:
高斯貝葉斯GaussianNB、多項(xiàng)式貝葉斯MultinomialNB和伯努利貝葉斯BernoulliNB。
分別對應(yīng)數(shù)據(jù)滿足高斯分布(正態(tài)分布)、多項(xiàng)式分布和伯努利分布的訓(xùn)練集數(shù)據(jù)。
1)伯努利貝葉斯即特征的取值只有取和不取兩類(0和1),對應(yīng)樸素貝葉斯公式中,
p(yi)=標(biāo)簽為yi的文本數(shù)(句子數(shù))/文本總數(shù)(句子總數(shù))
p(xj|yi)=(標(biāo)簽為yi的文本中出現(xiàn)了單詞xj的文本數(shù)+1)/(標(biāo)簽為yi的文本數(shù)+2)。
2)多項(xiàng)式貝葉斯其實(shí)就是伯努利貝葉斯的特征取值由簡單的0-1擴(kuò)展為多個(gè)值的情況,
p(yi)=標(biāo)簽為yi的文本中的單詞總數(shù)/訓(xùn)練集中的單詞總數(shù)
p(xj|yi)=(標(biāo)簽為yi的文本中單詞xj的出現(xiàn)次數(shù)+1)/(標(biāo)簽為yi的文本中的單詞總數(shù)+詞袋單詞種數(shù))。
3)高斯貝葉斯常被用來處理連續(xù)數(shù)據(jù)(如身高)。
4.AdaBoost、lightGBM(GBDT)和xgBoost
AdaBoosting是Boosting框架+任意基學(xué)習(xí)器算法+指數(shù)損失函數(shù)。
GBDT是Boosting框架+CART回歸樹模型+任意損失函數(shù)。
AdaBoosting利用前一輪迭代弱學(xué)習(xí)器的誤差率來更新訓(xùn)練集的權(quán)重,而GBDT采用梯度下降法:丟掉大梯度的數(shù)據(jù)而收納梯度較小的數(shù)據(jù)加入目標(biāo)決策樹以使樹回歸(貼近真實(shí)值)。
xgBoost的損失函數(shù)還考慮了樹不能太復(fù)雜且要分配均衡:一棵樹太復(fù)雜,鶴立雞群,就容易產(chǎn)生弱分類器間的過擬合;一棵樹內(nèi)部的節(jié)點(diǎn)間不均衡,就容易導(dǎo)致大節(jié)點(diǎn)代表的分類特征/分裂閾值的權(quán)重過大,就會(huì)產(chǎn)生樹內(nèi)部節(jié)點(diǎn)之間的過擬合。
值得注意的是AdaBoosting的誤差率、權(quán)重和GBDT的梯度都是在弱分類器之間的關(guān)系上的,是在分類器迭代時(shí)起作用的,而不是用在單個(gè)弱分類器的節(jié)點(diǎn)分裂層面上的,但其實(shí)是有影響的。
這里就要說到損失函數(shù)、決策樹節(jié)點(diǎn)分裂閾值和弱分類器迭代、生成之間的關(guān)系了。節(jié)點(diǎn)分裂閾值和分類特征的選定是根據(jù)損失函數(shù)來確定的——假設(shè)損失函數(shù)為L(w),w為目標(biāo)決策樹的葉節(jié)點(diǎn)分裂閾值向量,我們使損失函數(shù)最小,求得此時(shí)的min(w)作為目標(biāo)決策樹的節(jié)點(diǎn)分裂閾值。
在這個(gè)過程中我們雖然做的是對于單一決策樹的節(jié)點(diǎn)分裂特征/閾值選定,但如果一棵樹的節(jié)點(diǎn)分裂特征/閾值全都確定了,這棵樹也就確定了。所以我們就可以通過使損失函數(shù)L(w)取最小值的方式,確定w,同時(shí)優(yōu)化決策樹的節(jié)點(diǎn)分裂(通過w)和不同弱分類器間的迭代優(yōu)化(通過使L(w)最小)。即通過w確定目標(biāo)決策樹,通過w的取值帶動(dòng)L(w)取最小,進(jìn)而實(shí)現(xiàn)弱分類器的迭代優(yōu)化。
閱讀過本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《基于深度學(xué)習(xí)的自然語言處理》中/英PDF
Deep Learning 中文版初版-周志華團(tuán)隊(duì)
【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!
《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf
《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼
python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼
《深度學(xué)習(xí)之pytorch》pdf+附書源碼
PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)
李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
將機(jī)器學(xué)習(xí)模型部署為REST API
FashionAI服裝屬性標(biāo)簽圖像識別Top1-5方案分享
重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識別
同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?
前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測
【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類
VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識別分類工程項(xiàng)目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號添加:?datayx??
機(jī)大數(shù)據(jù)技術(shù)與機(jī)器學(xué)習(xí)工程
?搜索公眾號添加:?datanlp
長按圖片,識別二維碼
