Introduction
naive:假設特徵與特徵之間是相互獨立的
較常用於文檔的分類,求出一個文本佔不同類別的概率多少,並找出最大的概率
- 例如在獲得一文檔時,文檔為科技類別的概率
- 使用
sklearn.naive_bayes.MultinomialNB
概率
概率定義為一件事情發生的可能性
- $P(x)$介於0至1之間
聯合概率
包含多個條件,且所有條件同時成立的概率
記作
- 上述條件要是成立,則稱事件A與事件B相互獨立
條件概率
事件A在另外一個事件B已經發生的條件下發生的概率
記作
特性:
- 在B條件下,A1條件成立及A2條件成立的概率
- 注意:上述條件概率的成立,須建立在A1與A2必須互相獨立(條件之間互不相影響)
- 在使用naive bayes演算法時也需確保條件獨立
Bayes Equation
Background
當你在獲得一文檔時,會進行分詞,得到詞1、詞2……等詞,這些詞彙會有不同的重要性
因此便不是像上述 條件概率 所提到的 在單個條件B下發生A1及A2事件的概率
而是得到詞1、詞2……等詞的多個條件下,這些詞屬於單一類別的概率
- 例如:得到一篇文檔重要性較高的詞為 “雲計算”、”大數據”、”機器學習”,其為科技類別的概率
可寫成如下:
公式
因此我們需要Bayes Equation來幫我們計算
- W為給定文檔的特徵值(不同詞的頻數統計)
- C為文檔類別
可以理解成
- $F$為不同的詞彙
- $C$為類別
- 在比較不同類別時,分母的$P(W)$是可以忽略的
從上述的式子可以簡單的分為三部分來看
$P(C)$:每個文檔類別的概率
$P(W|C)$:給定類別下特徵的概率(特徵:被預測文檔中所出現的詞)
計算方法:- $Ni$為該$F1$詞在$C$類別所有文檔中出現的次數
- $N$為所屬類別$C$下的文檔 所有詞出現的次數和
- $P(F1,F2,…)$:預測文檔中每個詞的概率
Laplace Smoothing
但在預測文檔中的詞彙 有可能出現在某一類別時概率為0的情況
我們也並不能說此篇文檔與該類別完全沒有關係(不合理)
而是應該說該篇預測文檔屬於該類別的概率較低
要解決分類造成零概率的問題,可使用Laplace Smoothing如下所示
- $\alpha$:為指定係數一般為1
- $m$:為訓練文檔中統計出的特徵詞個數
naive_bayes.MultinomialNB(alpha=1.0)
- 為naive bayes的一種分類演算法
- alpha:為Laplace Smoothing係數(並非超參數,對結果不會有影響)
Example
1 | from sklearn.naive_bayes import MultinomialNB |
result
1 | 預測的文章類別為: |
tips
- 訓練集的誤差大(詞彙並沒有精準的反應文章主題),預測效果也會低落
- 使用naive bayes算法不需進行調參
優缺點
- 優點
- 其模型發源於古典數學理論,有較穩定的分類效率
- 對缺失數據不太敏感,算法也比較簡單易懂,常用於文本分類
- 文章中缺少某部分句子影響文意,也不會造成太大影響
- 分類準確度高,速度快
- 缺點
- 由於使用了樣本屬性皆獨立的假設,所以如果樣本屬性有關聯時其效果不好
- 文章當中具代表性詞彙彼此之間是沒有關係的(假設)
- 由於是在訓練集當中進行統計詞頻,要是使用含有多樣性內容的文章做訓練集就會對預測造成干擾
- 挑選類別準確性或代表性較強的文章作為訓練集
- 由於使用了樣本屬性皆獨立的假設,所以如果樣本屬性有關聯時其效果不好