「NLP」經典分類模型樸素貝葉斯解讀

2021-01-11 有三AI

貝葉斯分類器在早期的自然語言處理任務中有著較多實際的應用,例如大部分的垃圾郵件處理都是用的貝葉斯分類器。貝葉斯分類器的理論對於理解後續的NLP模型有很大的進益,感興趣的小夥伴一定要好好看看,本文會詳細的講述貝葉斯分類器的原理。

本文會是我們NLP基礎系列最後一篇機器學習模型的講解,後面會進入深度學習相關的內容。

作者 | 小Dream哥

編輯 | 言有三

1 貝葉斯決策論

貝葉斯決策論是在統計概率框架下進行分類決策的基本方法。對於分類任務來說,在所有相關概率都已知的情況下,貝葉斯決策論考慮如何基於這些概率和誤判損失來預測分類。

假設在一個分類任務中,有N種可能的分類,y={c1,c2,c3,...,cN}。我們會這樣定義將一個樣本預測為ci的期望損失,又叫「條件風險」:

1、其中lambda_i_j,是將一個第j類樣本預測為i類的損失

2、P(c_j|x)表示為將樣本x預測為j類的概率

那麼學習的任務是什麼呢?

學習任務是尋找一個判定準則,利用該判定準則(分類器)進行分類預測,能夠最小化條件風險:

如果我們針對每個樣本x都最小化其條件風險,那麼整體的風險也會最小。

這就是所謂的貝葉斯判定準則:為最小化總體風險,只需在每個樣本上選擇那個能使條件風險最小的類別標記,即

h*稱為貝葉斯最優分類器。

講了這些理論,估計大家更是雲裡霧裡,那我們不妨來看看實際的樸素貝葉斯分類器是怎麼構建的。

我們先假設lambda_i_j有這樣的形式:

那麼

這樣的話,最小化分類錯誤率的貝葉斯最優分類器為:

怎麼理解呢?小Dream哥的理解是,根據貝葉斯判定準則,我們要預測一個樣本屬於哪一個類別,計算所有的後驗概率P(c|x),概率最大的那一個類別的後驗概率就是預測到的類別了。

那麼該如何去計算後驗概率P(c|x)呢?

貝葉斯模型是一種生成模型,先計算聯合概率P(c,x),再通過聯合概率計算後驗概率,也就是利用如下的貝葉斯公式:

OK,那聯合概率和先驗概率該怎麼計算呢?樸素貝葉斯模型就該登場了。

2 樸素貝葉斯分類器

我們再來仔細的分析貝葉斯公式,在有一個訓練集的情況下:

1、P(c)為樣本為某個類別的概率,給定樣本及其label後容易計算

2、P(x)為某個樣本(所有屬性相同)出現的概率,給定樣本後,容

易得到

比較難計算的是P(x|c):

其中m為樣本屬性的個數,例如預測西瓜是不是甜的模型,如果基於西瓜的花紋是否清晰、敲起來響聲是否清亮這兩個屬性來判斷的話,屬性個數為2,也就是m=2。

在樸素貝葉斯模型中,有一個樣本屬性條件獨立性假設,即:

這樣貝葉斯公式就變成了:

那麼,樸素貝葉斯模型得公式就調整為:

對於所有類別來說,P(x)相同,所以上式可以簡化為:

好了,這就是樸素貝葉斯模型基礎理論的所有內容了。

到這裡,反應快的同學就會說:「你說了這麼多原理和公式,那麼這個模型到底是怎麼訓練和預測的呢?」下面我們就來討論這個問題。

3 樸素貝葉斯模型的訓練和預測

我們好好看看樸素貝葉斯模型最後的表達式,帶計算的參數有P(c),P(x_i|c)。訓練的過程,其實就是計算所有的P(c),P(x_i|c)的過程。

假設數據集為D,Dc表示數據集中C類樣本組成得集合。|D|表示數據集中樣本的個數,|Dc|表示C類樣本的個數。

那麼P(c)可以如下表示:

P(x_i|c)可以用下式表示:

|Dc,x_i|表示樣本屬於c類,第i個屬性為x_i的樣本的數目。在已知數據集的情況下,上面兩個式字都很容易計算,得到所有P(c)和P(x_i|c)後,就完成了學習的過程。

那麼,當來了一個新樣本,該如何對該樣本的類別進行預測呢?

假設新樣本X(x_1,x_2,_x_3,....x_m),總共有n個類別。根據最終的貝葉斯公式

預測步驟如下:

(1)根據訓練獲得的概率值矩陣,第1個類別的P(c_1)和P(x_1|c_1),P(x_2|c_1),...P(x_m|c_1),並計算他們的乘積,得到屬於第一個類別的概率

(2)同上,計算樣本屬於其他類別的概率

(3)取概率最大的類別為預測樣本的類別

這裡總結一下:

樸素貝葉斯模型在訓練過程,利用數據集D,計算P(c),P(x_i|c)。在預測時,輸入樣本,利用貝葉斯公式,計算n個類別的概率,最後輸出概率最大的那個類別,作為預測的類別。

總結

整個看下來,樸素貝葉斯模型的本質是針對樣本屬性的統計概率模型。要想樸素貝葉斯模型的效果好,前期的特徵工程和數據清洗是非常重要的工作。早期的機器學習分類模型,特徵選擇是至關重要的工作,直接決定了模型的效果,這點與現在的深度學模型有很大的差別。神經網絡中,通常是在模型內進行特徵提取與學習,這就大大減少了特徵工程方面的工作。

這是NLP基礎理論系列文章中最後一篇機器學習方面的文章了,後面開始介紹深度學習相關的內容了。其他經典的模型,例如SVM,決策樹,EM等,如有需要,大家可以留言,小Dream哥視情況,要不要再補上。

下期預告:遞歸神經網絡RNN

相關焦點

  • 解讀實踐中最廣泛應用的分類模型:樸素貝葉斯算法
    貝葉斯模型在機器學習以及人工智慧中都有出現,cherry 分類器使用了樸素貝葉斯模型算法,經過簡單的優化,使用 1000 個訓練數據就能得到 97.5% 的準確率。雖然現在主流的框架都帶有樸素貝葉斯模型算法,大多數開發者只需要直接調用 api 就能使用。但是在實際業務中,面對不同的數據集,必須了解算法的原理,實現以及懂得對結果進行分析,才能達到高準確率。
  • 樸素貝葉斯與文本分類
    樸素貝葉斯 (Naive Bayesian algorithm) 是一種基於概率統計的分類方法,主要用到了貝葉斯定理和特徵條件獨立性假設。樸素貝葉斯具有悠久的歷史,其算法邏輯比較簡單,有健壯的性能,通常可以用於文本分類、信用評估等方面。
  • 基於貝葉斯定理的算法——樸素貝葉斯分類
    不過今天我們介紹的樸素貝葉斯分類器通過獨立假設簡化了概率的計算,節省了內存,可以很好地用於數據量大的情況。下面我們首先來了解這一算法的數理背景——貝葉斯定理。這一算法是由我們在概率論中學到的貝葉斯定理延伸出來的。我們知道貝葉斯公式為:其中,
  • python實現高斯樸素貝葉斯分類器
    python實現高斯樸素貝葉斯分類器    在這篇文章中,我們將使用我最喜歡的機器學習庫scikit-learn在Python中實現樸素貝葉斯分類器。接下來,我們將使用經過訓練的樸素貝葉斯(監督分類法)模型來預測人口收入。
  • 數據分析經典模型——樸素貝葉斯
    編輯導語:做過數據分析的人,想必對貝葉斯模型都不會陌生。貝葉斯預測模型是運用貝葉斯統計進行的一種預測,不同於一般的統計方法,其不僅利用模型信息和數據信息,而且充分利用先驗信息。通過實證分析的方法,將貝葉斯預測模型與普通回歸預測模型的預測結果進行比較,結果表明貝葉斯預測模型具有明顯的優越性。
  • 科普丨樸素貝葉斯了解一下
    您可能聽說過文檔檢索系統、基於文本的情感分類器等任務是使用樸素貝葉斯算法的最佳應用場景。但為什麼?這是因為我們從文檔中提取的大多數單詞是相互獨立的。而且,樸素貝葉斯的工作很快,即使有很多功能和基於文本的分類器,你可以輕鬆獲得超過40000–50000個獨特的單詞,這意味著40k-50k的特徵!樸素貝葉斯如同閃電般快速的原因是它只計算概率,計算成本低廉。
  • 【華泰金工林曉明團隊】金工:人工智慧選股之樸素貝葉斯模型
    本報告對樸素貝葉斯模型及線性判別分析、二次判別分析進行系統測試  「生成模型」是機器學習中監督學習方法的一類。與「判別模型」學習決策函數和條件概率不同,生成模型主要學習的是聯合概率分布。本文中,我們從樸素貝葉斯算法入手,分析比較了幾種常見的生成模型(包括線性判別分析和二次判別分析)應用於多因子選股的異同,希望對本領域的投資者產生有實用意義的參考價值。
  • 樸素貝葉斯實戰篇之新浪新聞分類
    這樣,我們的樸素貝葉斯分類器就改進完畢了。三、樸素貝葉斯之過濾垃圾郵件在上篇文章那個簡單的例子中,我們引入了字符串列表。使用樸素貝葉斯解決一些現實生活中的問題時,需要先從文本內容得到字符串列表,然後生成詞向量。下面這個例子中,我們將了解樸素貝葉斯的一個最著名的應用:電子郵件垃圾過濾。
  • NLP之文本分類:「Tf-Idf、Word2Vec和BERT」三種模型比較
    之文本分類:「Tf-Idf、Word2Vec和BERT」三種模型比較英語原文:Text Classification with NLP: Tf-Idf vs Word2Vec vs BERT翻譯:雷鋒字幕組(關山、wiige)概要在本文中,我將使用
  • 樸素貝葉斯(Naive Bayes)和校正曲線(Calibration Curve)
    算法回顧圖片來源:medium.com貝葉斯分類算法屬於有監督機器學習(Supervised Learning)。貝葉斯分類器是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。其中樸素貝葉斯分分類是貝葉斯分類中最簡單的,也是最常見的一種分類方法。樸素貝葉斯分類算法的核心如下公式:P(A):它是先驗(Prior Probability),是A發生的概率。P(B): 是邊際可能性(Marginal Likelihood):是B發生的概率。
  • 聚類算法簡析(一):樸素貝葉斯算法的場景案例
    本文作者通過一些場景案例,帶領大家了解一下樸素貝葉斯算法作為聚類算法中的一員,如何來區分各類數組。通過一組參數模型來區分互斥群組中的個體十分常見,我們可以使用樸素貝葉斯分析來應用於這種場景,取決於模型的相似矩陣算法常常運用在估算決策論框架的矩陣中。
  • 「機器學習」機器學習算法優缺點對比(匯總篇)
    然而,隨著你訓練集的增長,模型對於原數據的預測能力就越好,偏差就會降低,此時低偏差/高方差的分類器就會漸漸的表現其優勢(因為它們有較低的漸近誤差),而高偏差分類器這時已經不足以提供準確的模型了。「為什麼說樸素貝葉斯是高偏差低方差?」
  • 樸素貝葉斯分類器詳解及中文文本輿情分析(附代碼實踐)
    樸素貝葉斯數學原理知識該基礎知識部分引用文章"機器學習之樸素貝葉斯(NB)分類算法與Python實現"(https://blog.csdn.net/moxigandashu/article/details/71480251),也強烈推薦大家閱讀博主moxigandashu的文章,寫得很好。同時作者也結合概率論講解,提升下自己較差的數學。
  • 樸素貝葉斯算法及其應用
    在這篇文章中,我們將嘗試以簡單的方式理解什麼是樸素貝葉斯,它是如何工作的以及我們如何應用樸素貝葉斯分類器將文本或評論分類為「肯定」或「否定」,我們將通過電影評論案例進行研究。什麼是樸素貝葉斯?貝葉斯定理是由Reverend Bayes開發的最早的概率推理算法之一(他過去常常嘗試推斷上帝的存在)並且對於某些用例仍然表現得非常好。
  • C#與人工智慧(第4講)創建樸素貝葉斯分類器
    今天,我給大家帶來C#與人工智慧的第4講——創建樸素貝葉斯分類器。#人工智慧#本文先實現一個簡單的貝葉斯分類器,輸入二進位,判斷0-7。後續文章會講述它的高級應用——貝葉斯推理機。C#與人工智慧(第3講)創建神經網絡C#與人工智慧(第2講)創建WinForm程序C#與人工智慧(第1講)安裝C#編程環境託馬斯·貝葉斯是18世紀英國數學家,概率論、貝葉斯統計的創立者。貝葉斯方法基於貝葉斯原理,對樣本數據集進行分類。它綜合了先驗概率、後驗概率,避免僅用先驗概率產生的主觀偏見。
  • 機器學習算法之樸素貝葉斯
    假設抽出紅球的概率為B選中容器A的概率為A則有:P(B) = 8/20,P(A) = 1/2,P(B|A) = 7/10按照公式,則有:P(A|B) = (7/10)*(1/2) / (8/20) = 0.875故得出結論:這個球來自容器A的概率是0.875三、樸素貝葉斯貝葉斯公式: P(
  • PTMs|2020最新NLP預訓練模型綜述
    提出了一種預訓練模型的分類體系,通過四種分類維度來劃分目前已有的預訓練模型。由於篇幅原因,本文主要針對前面兩點進行梳理,即「目前主流的預訓練模型」和「預訓練模型的分類體系」。1. 背景「nlp、cv領域的傳統方法極度依賴於手動特徵工程」。
  • 為什麼樸素貝葉斯定理會被叫做樸素的?
    樸素貝葉斯算法是一種基於著名貝葉斯定理的分類算法。那麼讓我們先了解一下Bayes定理是怎麼說的,並為樸素貝葉斯算法定理建立自己的理解,它是如何工作的,它為什麼被稱作樸素的?貝葉斯定理在深入研究貝葉斯定理之前,我們需要了解一些術語-獨立事件和從屬事件邊際概率聯合概率條件概率獨立事件和從屬事件考慮兩個事件A和B。
  • 這套1600贊的NLP課程已開放,面向實戰,視頻代碼都有丨資源
    這套課程內容包括主題建模、情緒分類,語言建模和翻譯等,是舊金山大學今年春天的最新碩士課程,此前已經有300多名學生上過此課並畢業。裡面融合了此前經典NLP課程的基礎內容,比如正則表達、SVD、樸素貝葉斯,還加入了最近興起的神經網絡中新方法,比如RNN、seq2seq、注意力機制和Transformer架構。
  • 貝葉斯模型下
    引言上一篇文章我們主要從理論上梳理了樸素貝葉斯方法進行文本分類的基本思路。這篇文章我們主要從實踐上探討一些應用過程中的tricks,並進一步分析貝葉斯方法,最後以情緒褒貶分析和拼寫糾錯為例展示這種簡單強大的方法在自然語言處理問題上的具體應用。2. 為什麼不直接匹配關鍵詞來識別垃圾郵件?看了上一篇文章的一些同學可能會問:「何必費這麼大勁算那麼多詞的概率?