文本分類的14種算法

2021-02-23 機器學習AI算法工程


向AI轉型的程式設計師都關注了這個號👇👇👇

機器學習AI算法工程   公眾號:datayx

之前介紹了14種文本分類中的常用算法,包括8種傳統算法:k臨近、決策樹、多層感知器、樸素貝葉斯(包括伯努利貝葉斯、高斯貝葉斯和多項式貝葉斯)、邏輯回歸和支持向量機;4種集成學習算法:隨機森林、AdaBoost、lightGBM和xgBoost;2種深度學習算法:前饋神經網絡和LSTM。
各篇連結如下:


測試環境搭建與數據預處理:
https://blog.csdn.net/qq_43012160/article/details/94993382


決策樹、樸素貝葉斯(伯努利貝葉斯、高斯貝葉斯和多項式貝葉斯):
https://blog.csdn.net/qq_43012160/article/details/95366183


k臨近、邏輯回歸、SVM支持向量機:https://blog.csdn.net/qq_43012160/article/details/95506126

隨機森林、AdaBoost、多層感知器:
https://blog.csdn.net/qq_43012160/article/details/95762591

lightGBM、xgBoost:
https://blog.csdn.net/qq_43012160/article/details/96016265

前饋神經網絡、LSTM(包括pycharm深度學習環境搭建):
https://blog.csdn.net/qq_43012160/article/details/96101078


性能評估

先放代碼和數據集:

關注微信公眾號 datayx  然後回復  文本分類  即可獲取。

所有14種算法我都跑了一遍,其中4種算法要麼把我電腦跑死機了,要麼時間長的令人髮指,就沒跑完。整理了跑出來的10種算法的正確率和耗時如下:

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

這種簡單的文本分類練習,不同算法的性能分層還是比較明顯的。

知識總結1.機器學習、集成學習和深度學習:

1)機器學習泛指所有的使機器通過建立和調整模型從而實現特定功能的算法。2)深度學習是運用了多層的人工神經網絡(ANN)的機器學習方法。3)集成學習是指通過將多個弱分類器的分類結果進行整合,獲得比單個弱分類器更好效果的機器學習方法。



集成學習和深度學習屬於機器學習。

2.集成學習的bagging和boosting思想:

bagging中的各個弱分類器取值是相互獨立的、無關的,常使用有放回抽樣實現。
boosting中的弱分類器是在基分類器/前一個分類器的基礎上通過迭代不斷優化/調整出來的。

3.三種樸素貝葉斯:

高斯貝葉斯GaussianNB、多項式貝葉斯MultinomialNB和伯努利貝葉斯BernoulliNB。
分別對應數據滿足高斯分布(正態分布)、多項式分布和伯努利分布的訓練集數據。

1)伯努利貝葉斯即特徵的取值只有取和不取兩類(0和1),對應樸素貝葉斯公式中,
p(yi)=標籤為yi的文本數(句子數)/文本總數(句子總數)
p(xj|yi)=(標籤為yi的文本中出現了單詞xj的文本數+1)/(標籤為yi的文本數+2)。

2)多項式貝葉斯其實就是伯努利貝葉斯的特徵取值由簡單的0-1擴展為多個值的情況,
p(yi)=標籤為yi的文本中的單詞總數/訓練集中的單詞總數
p(xj|yi)=(標籤為yi的文本中單詞xj的出現次數+1)/(標籤為yi的文本中的單詞總數+詞袋單詞種數)。

3)高斯貝葉斯常被用來處理連續數據(如身高)。

4.AdaBoost、lightGBM(GBDT)和xgBoost

AdaBoosting是Boosting框架+任意基學習器算法+指數損失函數。
GBDT是Boosting框架+CART回歸樹模型+任意損失函數。
AdaBoosting利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,而GBDT採用梯度下降法:丟掉大梯度的數據而收納梯度較小的數據加入目標決策樹以使樹回歸(貼近真實值)。
xgBoost的損失函數還考慮了樹不能太複雜且要分配均衡:一棵樹太複雜,鶴立雞群,就容易產生弱分類器間的過擬合;一棵樹內部的節點間不均衡,就容易導致大節點代表的分類特徵/分裂閾值的權重過大,就會產生樹內部節點之間的過擬合。

值得注意的是AdaBoosting的誤差率、權重和GBDT的梯度都是在弱分類器之間的關係上的,是在分類器迭代時起作用的,而不是用在單個弱分類器的節點分裂層面上的,但其實是有影響的。

這裡就要說到損失函數、決策樹節點分裂閾值和弱分類器迭代、生成之間的關係了。節點分裂閾值和分類特徵的選定是根據損失函數來確定的——假設損失函數為L(w),w為目標決策樹的葉節點分裂閾值向量,我們使損失函數最小,求得此時的min(w)作為目標決策樹的節點分裂閾值。


在這個過程中我們雖然做的是對於單一決策樹的節點分裂特徵/閾值選定,但如果一棵樹的節點分裂特徵/閾值全都確定了,這棵樹也就確定了。所以我們就可以通過使損失函數L(w)取最小值的方式,確定w,同時優化決策樹的節點分裂(通過w)和不同弱分類器間的迭代優化(通過使L(w)最小)。即通過w確定目標決策樹,通過w的取值帶動L(w)取最小,進而實現弱分類器的迭代優化。

閱讀過本文的人還看了以下文章:

TensorFlow 2.0深度學習案例實戰

基於40萬表格數據集TableBank,用MaskRCNN做表格檢測

《基於深度學習的自然語言處理》中/英PDF

Deep Learning 中文版初版-周志華團隊

【全套視頻課】最全的目標檢測算法系列講解,通俗易懂!

《美團機器學習實踐》_美團算法團隊.pdf

《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼

特徵提取與圖像處理(第二版).pdf

python就業班學習視頻,從入門到實戰項目

2019最新《PyTorch自然語言處理》英、中文版PDF+源碼

《21個項目玩轉深度學習:基於TensorFlow的實踐詳解》完整版PDF+附書代碼

《深度學習之pytorch》pdf+附書源碼

PyTorch深度學習快速實戰入門《pytorch-handbook》

【下載】豆瓣評分8.1,《機器學習實戰:基於Scikit-Learn和TensorFlow》

《Python數據分析與挖掘實戰》PDF+完整源碼

汽車行業完整知識圖譜項目實戰視頻(全23課)

李沐大神開源《動手學深度學習》,加州伯克利深度學習(2019春)教材

筆記、代碼清晰易懂!李航《統計學習方法》最新資源全套!

《神經網絡與深度學習》最新2018版中英PDF+源碼

將機器學習模型部署為REST API

FashionAI服裝屬性標籤圖像識別Top1-5方案分享

重要開源!CNN-RNN-CTC 實現手寫漢字識別

yolo3 檢測出圖像中的不規則漢字

同樣是機器學習算法工程師,你的面試為什麼過不了?

前海徵信大數據算法:風險概率預測

【Keras】完整實現『交通標誌』分類、『票據』分類兩個項目,讓你掌握深度學習圖像分類

VGG16遷移學習,實現醫學圖像識別分類工程項目

特徵工程(一)

特徵工程(二) :文本數據的展開、過濾和分塊

特徵工程(三):特徵縮放,從詞袋到 TF-IDF

特徵工程(四): 類別特徵

特徵工程(五): PCA 降維

特徵工程(六): 非線性特徵提取和模型堆疊

特徵工程(七):圖像特徵提取和深度學習

如何利用全新的決策樹集成級聯結構gcForest做特徵工程並打分?

Machine Learning Yearning 中文翻譯稿

螞蟻金服2018秋招-算法工程師(共四面)通過

全球AI挑戰-場景分類的比賽源碼(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(列印收藏)

python+flask搭建CNN在線識別手寫中文網站

中科院Kaggle全球文本匹配競賽華人第1名團隊-深度學習與特徵工程

不斷更新資源

深度學習、機器學習、數據分析、python

 搜索公眾號添加: datayx  

機大數據技術與機器學習工程

 搜索公眾號添加: datanlp

長按圖片,識別二維碼

相關焦點

  • 14種機器學習常見算法分類匯總!
    在機器學習或者人工智慧領域,人們首先會考慮算法的學習方式。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來獲得最好的結果。
  • 機器學習自動文本分類
    正如 Jeff Bezos 在給股東的年度公開信中所說:在過去的幾十年中,計算機已將程式設計師可以用清晰的規則和算法來描述的任務自動化。而對於精確描述規則困難得多的任務,現代機器學習技術同樣可以自動化。說到自動化文本分類,我們寫過文章介紹它背後的技術及其應用。在這裡,我們改進一下文本分類器。在這篇文章中,我們將討論與自動化文本分類 API 相關的技術、應用、定製和細分。
  • 淺談機器學習分類算法
    >今天我就在這邊為大家介紹 4 種主要的分類算法。樸素貝葉斯分類樸素貝葉斯分類是基於貝葉斯定理與特徵條件獨立假設的分類方法,發源於古典數學理論,擁有穩定的數學基礎和分類效率。它是一種十分簡單的分類算法,當然簡單並不一定不好用。
  • 數據挖掘——淺析分類算法
    文本分類,所謂的文本分類就是把文本進行歸類,不同的文章根據文章的內容應該屬於不同的類別,文本分類離不開分詞,要將一個文本進行分類,首先需要對該文本進行分詞,利用分詞之後的的項向量作為計算因子,再使用一定的算法和樣本中的詞彙進行計算
  • 天池比賽--新聞文本分類(一)
    賽題分析本賽題是一個入門級的文本多分類問題,賽題數據是新聞文本數據,為了防止人工標註按照字符級別進行了匿名處理
  • 一文看懂詞嵌入 word embedding(2種主流算法+與其他文本表示比較)
    文本表示的作用就是將這些非結構化的信息轉化為結構化的信息,這樣就可以針對文本信息做計算,來完成我們日常所能見到的文本分類,情感判斷等任務。文本表示的方法有很多種,下面只介紹 3 類方式:獨熱編碼 | one-hot representation整數編碼詞嵌入 | word embedding
  • 基於CNN的中文文本分類算法(可應用於垃圾文本過濾、情感分析等場景)
    向AI轉型的程式設計師都關注了這個號👇👇👇機器學習AI算法工程
  • 基於關鍵詞的文本內容過濾算法的研究與應用
    在國外文本過濾相關技術研究方面,Belkin和Croft提出了用戶特徵過濾對文本過濾系統的影響和積極意義;Lam等人對個人興趣飄逸探測算法進行研究;Yang和Chute基於實例和最小平方利益的線性模型改進了文本分類器;Mosafa構造了智能信息過濾的多層次分解模型。
  • 短文本分類常見技術:文本表示
    在chatbot的構建過程中,對用戶的意圖進行識別是其中比較重要的一個部分,而意圖識別的核心問題是如何對短文本進行分類。短文本由於自身內容的長度相較於長文本而言比較短,包含信息量少、容易存在語義歧義,這些都是短文本分類時需要考慮的問題。為了對短文本進行分析,我們首先需要將其轉化為便於計算機處理的數據形式,下面介紹一些常見的建模方法。
  • 以BBC新聞文章為例:應用XGBoost等算法進行文本分類
    全文共7034字,預計學習時長14分鐘圖片來源:unsplash.com/@knightwill本文將以BBC新聞文章分類為例,討論不同的文本分類技術。同時,本文將討論如何用不同向量空間模型代表文本數據。
  • 文本分類又來了,用 Scikit-Learn 解決多類文本分類問題
    然而大部分的文本分類文章和網上教程是二進位的文本分類,像垃圾郵件過濾(spam vs. ham)、情感分析(積極的和消極的)。在大量實例中,我們現實世界的問題要比這些複雜的多。因此,這是我們今天要做的:將消費者的財務投訴分成12個預定義的類。這些數據可以從 data.gov 下載。
  • 文本對分類以及多標籤分類問題的解決思路
    現實生活中,有大量的文本需要人工區分類,而自然語言相關技術的發展使得人們可以通過算法的手段代替手工,極大的加速了社會的發展.而文本分類任務一直是NLP一隻老掉牙的事,從常規的新聞文本分類到特定領域的多類分類(Multiclass classification)  和多標籤分類(Multilabel classification).
  • 中文文本分類:你需要了解的10項關鍵內容
    繼上一篇《這5個例子,小學生都能秒懂分類算法》(點擊查看詳情)初步分享了幾種常見的分類算法是什麼,今天和大家聊聊做好中文文本分類的10項關鍵點。文本分類指的是計算機通過算法對輸入的文本按照一定的類目體系進行自動化歸類的過程。
  • 文本分類六十年
    這些文獻中已經提出了許許多多的算法模型、基準數據集一集評測指標,因此需要一個對這個領域進行全面而且跟進趨勢的調查。這裡我們介紹基於機器學習和深度學習的文本分類,主要內容來自北航、伊利諾伊大學等學者聯合發表論文 A Survey on Text Classification: From Shallow to Deep Learning。
  • 2020最新文本檢測算法TextFuseNet
    該算法用三個層次的特徵來表示文本,字符、單詞和全局級別,然後引入一種新的文本融合技術融合這些特徵,來幫助實現魯棒的任意文本檢測。另外提出了一個弱監督學習機制,可以生成字符級別的標註,在缺乏字符級注釋的數據集情況下也可以進行訓練。
  • NLP基礎任務:文本分類近年發展匯總,68頁超詳細解析
    近年來,複雜文檔和文本的數量呈指數級增長,需要對機器學習方法有更深刻的理解,才能在許多應用中準確地對文本進行分類。許多機器學習方法在自然語言處理方面取得了卓越的成績。這些學習算法的成功依賴於它們理解複雜模型和數據中的非線性關係的能力。然而,為文本分類找到合適的結構、體系和技術對研究人員來說是一個挑戰。本文簡要介紹了文本分類算法。
  • 決策樹分類算法之ID3算法與C4.5算法
    ,聚類的時候,我們並不關心某一類是什麼,我們需要實現的目標只是把相似的東西聚到一起,因此,一個聚類算法通常只需要知道如何計算相似 度就可以開始工作了,因此 clustering 通常並不需要使用訓練數據進行學習,這在 Machine Learning 中被稱作 unsupervised learning (無監督學習).
  • 多標籤文本分類模型總結
    什麼是多標籤文本分類學術上常用的說法有兩個,一個是ExtremeMulti-label Learning, 簡稱XML,另一個是Extreme Multi-label Text Classification,簡稱XMTC,本質上都是對文本進行多標籤分類,即對於一個給定的文本,可能有多個標籤,我們需要設計一個模型預測其標籤。
  • 基於TorchText的PyTorch文本分類
    文本分類是自然語言處理的重要應用之一。在機器學習中有多種方法可以對文本進行分類。但是這些分類技術大多需要大量的預處理和大量的計算資源。在這篇文章中,我們使用PyTorch來進行多類文本分類,因為它有如下優點:PyTorch提供了一種強大的方法來實現複雜的模型體系結構和算法,其預處理量相對較少,計算資源(包括執行時間)的消耗也較少。
  • 文本分類綜述 | 邁向NLP大師的第一步(上)
    (文末 下期預告 別錯過)綜述內涉及的所有文本分類必讀論文清單,我們已經為大家整理打包好啦,訂閱號後臺回復『文本分類』即可獲取喔~文本分類綜述A Survey on Text Classification: From Shallow to Deep Learning,2020[1]文本分類是自然語言處理中最基本,也是最重要的任務