樸素貝葉斯與文本分類

2021-01-11 NLP學習筆記

樸素貝葉斯 (Naive Bayesian algorithm) 是一種基於概率統計的分類方法,主要用到了貝葉斯定理和特徵條件獨立性假設。樸素貝葉斯具有悠久的歷史,其算法邏輯比較簡單,有健壯的性能,通常可以用於文本分類、信用評估等方面。

貝葉斯

1、樸素貝葉斯

1.1 貝葉斯公式

給定一個樣本,我們用 X 表示樣本的特徵,用 Y 表示樣本的類別,我們首先可以計算出 X 和 Y 的聯合概率 P(X,Y):

X 和 Y 的聯合概率

從聯合概率 P(X,Y) 可以推導出則貝葉斯公式:

貝葉斯公式

其中 P(Y) 稱為先驗概率,P(Y|X) 稱為後驗概率。

對於二分類問題,若 P(Y = 0|X) > P(Y = 1|X),則判斷樣本 X 的類標為 Y = 0。因為對於任意 X,P(X) 是固定的,則我們只需要比較 P(X|Y = 0)P(Y = 0) 與 P(X|Y = 1)P(Y = 1) 的大小即可以知道 X 屬於哪一個類。

P(Y = 0) 與 P(Y = 1) 可以用下面的公式計算,其中 D 表示整個數據集,D0 表示屬於第 0 類的所有數據,D1 表示屬於第 1 類的所有數據:

類標 Y 的先驗概率

而 P(X|Y = 0) 和 P(X|Y = 1) 一般不容易進行計算,因此樸素貝葉斯採用了條件獨立性假設,使 P(X|Y) 更容易計算,而且也具有比較好的魯棒性。

1.2 條件獨立性假設

假定特徵 X 有 N 維,X = [X1, X2, ..., XN],則貝葉斯公式可以表示為

貝葉斯公式

而 P(X|Y = 0) 和 P(X|Y = 1) 可以表示為:

樸素貝葉斯採用條件獨立性假設計算上面的公式,條件獨立性假設是指,樣本 X 的特徵之間出現與否是互相獨立的。

條件獨立性假設

而 P(Xi = x|Y = y) 的概率對於不同的數據和任務有不同方式計算,常見的有:

D(Xi=x,Y=y) 表示數據集中類標等於 y 且第 i 個屬性值為 x 的所有數據,|D| 表示求數據集 D 裡面數據個數。通過上面的方法,我們就可以計算出 P(Y) 和 P(X|Y),然後用於對比 P(Y|X) 的大小,從而找出樣本所屬的類。

2、樸素貝葉斯優化技巧

2.1 取對數相加代替概率相乘

在條件獨立性假設裡,我們將 P(X|Y) 轉換成了對於每一位特徵的概率相乘。由於概率是小於 1 的數,多次相乘後的數可能會很小,另外乘法的運算時間相對也長一點,因此通常採用取對數,然後相加的方式。

計算對數的時間花銷也是比較大的,因此通常會事先計算出大量概率值 P 對應的 log P 並保存下來,在後續計算時從保存的表中直接讀取 log P 的值。

2.2 轉為特徵權重相加

我們要比較 P(Y = 0|X) 與 P(Y = 1|X),等價於比較 log P(Y = 0|X) 和 log P(Y = 1|X),如果 log P(Y = 0|X) - log P(Y = 1|X) > 0 則 X 屬於 Y=0 的概率更大。

最終可以轉換為:

我們可以將第 i 個特徵所有選項 xi 的權重保存在 hash 表中,使用時查找,加快算法速度。

2.3 平滑處理

原始的 P(X|Y) 的計算方法為:

使用上面的公式計算概率 P(X|Y) 有可能出現概率為 0 的情況,此時後驗概率 P(Y|X) 的值就變為 0 了。因此在實際使用時,通常要進行平滑處理。

假設第 i 個特徵 Xi 有 k 種可能的取值,則可以使用下面的公式進行平滑處理。

平滑處理

3、文本分類

我們以垃圾郵件分類為例子,了解樸素貝葉斯在文本分類中的應用。

3.1 垃圾郵件

我們的樣本是一封郵件,則樣本的特徵 X 為郵件的內容,類標 Y 表示郵件是否是垃圾郵件。

X = 內容,如"上次的股票賺了吧,加微信獲取更多股票信息"

Y = 類別,如 "垃圾郵件"、"正常郵件"

那麼給定一封郵件 "上次的股票賺了吧,加微信獲取更多股票信息",就可以根據貝葉斯公式計算出這封郵件屬於垃圾郵件的概率。

3.2 分詞以及去掉停用詞

直接在數據集上統計 P("上次的股票賺了吧,加微信獲取更多股票信息"|"垃圾郵件") 是不實際的,因為每封郵件的內容都不一樣,下次郵件內容換成 "上次的股票賺了吧,加QQ獲取更多股票信息",則得到的概率為 0。

因此通常需要進行分詞處理以及去掉停用詞,停用詞指一些對於我們分類沒有幫助的詞,通常是一些非常中性的詞,如 "了"、"我"。

分詞:"上次", "的", "股票", "賺了", "吧", "加", "微信", "獲取", "更多", "股票", "信息"

去掉停用詞:"上次", "股票", "賺了", "微信", "獲取", "更多"、"股票", "信息"

則最終 P("上次的股票賺了吧,加微信獲取更多股票信息"|"垃圾郵件")可以轉換為

根據條件獨立性假設,最終變為:

經過上述的步驟,我們可以計算出 P(Y="垃圾郵件"|X) 和 P(Y="正常郵件"|X) 的概率,最終判斷郵件 X 是不是垃圾郵件。

4、總結

樸素貝葉斯是一種比較簡單的算法,具有不錯的魯棒性。

樸素貝葉斯主要使用了貝葉斯公式和條件獨立性假設。

樸素貝葉斯文本分類器實際上是詞袋模型,也就是把文本看成是一個包含很多單詞的袋子,與文本單詞順序無關。因此句子 "我喜歡聽張學友唱歌" 和 "張學友喜歡聽我唱歌" 在樸素貝葉斯看來是沒有區別的。

參考文獻

李航《統計學習方法》

相關焦點

  • 樸素貝葉斯分類器詳解及中文文本輿情分析(附代碼實踐)
    內容包括:1.樸素貝葉斯數學原理知識2.naive_bayes用法及簡單案例3.中文文本數據集預處理4.樸素貝葉斯中文文本輿情分析本篇文章為基礎性文章,樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況,是基於概率論的一種機器學習分類(監督學習)方法,被廣泛應用於情感分類領域的分類器。
  • 樸素貝葉斯實戰篇之新浪新聞分類
    這樣,我們的樸素貝葉斯分類器就改進完畢了。三、樸素貝葉斯之過濾垃圾郵件在上篇文章那個簡單的例子中,我們引入了字符串列表。使用樸素貝葉斯解決一些現實生活中的問題時,需要先從文本內容得到字符串列表,然後生成詞向量。下面這個例子中,我們將了解樸素貝葉斯的一個最著名的應用:電子郵件垃圾過濾。
  • 科普丨樸素貝葉斯了解一下
    您可能聽說過文檔檢索系統、基於文本的情感分類器等任務是使用樸素貝葉斯算法的最佳應用場景。但為什麼?這是因為我們從文檔中提取的大多數單詞是相互獨立的。而且,樸素貝葉斯的工作很快,即使有很多功能和基於文本的分類器,你可以輕鬆獲得超過40000–50000個獨特的單詞,這意味著40k-50k的特徵!樸素貝葉斯如同閃電般快速的原因是它只計算概率,計算成本低廉。
  • 基於貝葉斯定理的算法——樸素貝葉斯分類
    不過今天我們介紹的樸素貝葉斯分類器通過獨立假設簡化了概率的計算,節省了內存,可以很好地用於數據量大的情況。下面我們首先來了解這一算法的數理背景——貝葉斯定理。這一算法是由我們在概率論中學到的貝葉斯定理延伸出來的。我們知道貝葉斯公式為:其中,
  • 樸素貝葉斯算法及其應用
    在這篇文章中,我們將嘗試以簡單的方式理解什麼是樸素貝葉斯,它是如何工作的以及我們如何應用樸素貝葉斯分類器將文本或評論分類為「肯定」或「否定」,我們將通過電影評論案例進行研究。什麼是樸素貝葉斯?貝葉斯定理是由Reverend Bayes開發的最早的概率推理算法之一(他過去常常嘗試推斷上帝的存在)並且對於某些用例仍然表現得非常好。
  • python實現高斯樸素貝葉斯分類器
    python實現高斯樸素貝葉斯分類器    在這篇文章中,我們將使用我最喜歡的機器學習庫scikit-learn在Python中實現樸素貝葉斯分類器。接下來,我們將使用經過訓練的樸素貝葉斯(監督分類法)模型來預測人口收入。
  • 為什麼樸素貝葉斯定理會被叫做樸素的?
    樸素貝葉斯算法是一種基於著名貝葉斯定理的分類算法。那麼讓我們先了解一下Bayes定理是怎麼說的,並為樸素貝葉斯算法定理建立自己的理解,它是如何工作的,它為什麼被稱作樸素的?貝葉斯定理在深入研究貝葉斯定理之前,我們需要了解一些術語-獨立事件和從屬事件邊際概率聯合概率條件概率獨立事件和從屬事件考慮兩個事件A和B。
  • 「NLP」經典分類模型樸素貝葉斯解讀
    貝葉斯分類器在早期的自然語言處理任務中有著較多實際的應用,例如大部分的垃圾郵件處理都是用的貝葉斯分類器。貝葉斯分類器的理論對於理解後續的NLP模型有很大的進益,感興趣的小夥伴一定要好好看看,本文會詳細的講述貝葉斯分類器的原理。本文會是我們NLP基礎系列最後一篇機器學習模型的講解,後面會進入深度學習相關的內容。
  • 樸素貝葉斯詳解及中文輿情分析(附代碼實踐)
    內容包括:1.樸素貝葉斯數學原理知識2.naive_bayes用法及簡單案例3.中文文本數據集預處理4.樸素貝葉斯中文文本輿情分析本篇文章為基礎性文章,樸素貝葉斯(Naive Bayesian)是基於貝葉斯定理和特徵條件獨立假設的分類方法,它通過特徵計算分類的概率,選取概率大的情況,是基於概率論的一種機器學習分類(監督學習)方法,被廣泛應用於情感分類領域的分類器。
  • 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(
  • 樸素貝葉斯(Naive Bayes)和校正曲線(Calibration Curve)
    算法回顧圖片來源:medium.com貝葉斯分類算法屬於有監督機器學習(Supervised Learning)。貝葉斯分類器是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。其中樸素貝葉斯分分類是貝葉斯分類中最簡單的,也是最常見的一種分類方法。樸素貝葉斯分類算法的核心如下公式:P(A):它是先驗(Prior Probability),是A發生的概率。P(B): 是邊際可能性(Marginal Likelihood):是B發生的概率。
  • 解讀實踐中最廣泛應用的分類模型:樸素貝葉斯算法
    貝葉斯模型在機器學習以及人工智慧中都有出現,cherry 分類器使用了樸素貝葉斯模型算法,經過簡單的優化,使用 1000 個訓練數據就能得到 97.5% 的準確率。雖然現在主流的框架都帶有樸素貝葉斯模型算法,大多數開發者只需要直接調用 api 就能使用。但是在實際業務中,面對不同的數據集,必須了解算法的原理,實現以及懂得對結果進行分析,才能達到高準確率。
  • 樸素貝葉斯:幫助AI產品經理「小步快跑,快速迭代」
    一、樸素貝葉斯登場貝葉斯分類是一類分類算法的總稱,這類算法均以「貝葉斯定理」為基礎,以「特徵條件獨立假設」為前提。而樸素貝葉斯分類是貝葉斯分類中最常見的一種分類方法,同時它也是最經典的機器學習算法之一。在很多場景下處理問題直接又高效,因此在很多領域有著廣泛的應用,如垃圾郵件過濾、文本分類與拼寫糾錯等。
  • 聚類算法簡析(一):樸素貝葉斯算法的場景案例
    本文作者通過一些場景案例,帶領大家了解一下樸素貝葉斯算法作為聚類算法中的一員,如何來區分各類數組。通過一組參數模型來區分互斥群組中的個體十分常見,我們可以使用樸素貝葉斯分析來應用於這種場景,取決於模型的相似矩陣算法常常運用在估算決策論框架的矩陣中。
  • 貝葉斯模型下
    引言上一篇文章我們主要從理論上梳理了樸素貝葉斯方法進行文本分類的基本思路。這篇文章我們主要從實踐上探討一些應用過程中的tricks,並進一步分析貝葉斯方法,最後以情緒褒貶分析和拼寫糾錯為例展示這種簡單強大的方法在自然語言處理問題上的具體應用。2. 為什麼不直接匹配關鍵詞來識別垃圾郵件?看了上一篇文章的一些同學可能會問:「何必費這麼大勁算那麼多詞的概率?
  • 文本分類六十年
    文本分類文本分類流程在許多自然語言處理(NLP)下遊任務中,例如情感分析,主題標記,自動問答和對話行為分類,文本分類(給文本指定某一預定義標籤的過程)是一項意義重大且十分必要的任務。文本分類發展歷程從1960年代到2010年代,基於淺層學習的文本分類模型佔主導地位。這裡的淺層學習指的是基於統計的模型,例如樸素貝葉斯方法(NaveBayes,NB),K近鄰(K- Nearest Neighbor,KNN)和支持向量機(Support Vector Machine,SVM)。
  • 【華泰金工林曉明團隊】金工:人工智慧選股之樸素貝葉斯模型
    本報告對樸素貝葉斯模型及線性判別分析、二次判別分析進行系統測試  「生成模型」是機器學習中監督學習方法的一類。本文中,我們從樸素貝葉斯算法入手,分析比較了幾種常見的生成模型(包括線性判別分析和二次判別分析)應用於多因子選股的異同,希望對本領域的投資者產生有實用意義的參考價值。  樸素貝葉斯模型構建細節:月頻滾動訓練,結合基於時間序列的交叉驗證  樸素貝葉斯模型的構建包括特徵和標籤提取、特徵預處理、訓練集合成和滾動訓練等步驟。
  • 樸素貝葉斯算法及應用案例
    作者:陳千鶴 來源:人工智慧學習圈本篇主要介紹樸素貝葉斯算法及應用案例。以Tatinic數據集為例進行應用,同時介紹數據處理,數據集的劃分,算法效果評估等內容。一、簡介樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法 。
  • 基於人工智慧的貝葉斯分類算法
    基於人工智慧的貝葉斯分類算法  貝爾斯算法的應用:  1.百度實時路況  2.騰訊新聞分類  3.數據清洗:數據補全  4.數據歸類  5.垃圾郵箱  什麼是貝爾斯算法  貝爾斯算法就是貝葉斯所研究的逆向概率: 給出一個條件