朴素貝葉斯算法(Naive Bayes)


1. 前言

說到朴素貝葉斯算法,首先牽扯到的一個概念是判別式和生成式

  • 判別式:就是直接學習出特征輸出\(Y\)和特征\(X\)之間的關系,如決策函數\(Y=f(X)\),或者從概率論的角度,求出條件分布\(P(Y|X)\)。代表算法有決策樹、KNN、邏輯回歸、支持向量機、隨機條件場CRF等
  • 生成式:就是直接找出特征輸出Y和特征X的聯合分布\(P(X,Y)\),然后用\(P(Y|X)=\frac{P(X,Y)}{P(X)}\)得出。代表算法有朴素貝葉斯、隱式馬爾可夫鏈等。

2. 朴素貝葉斯原理

朴素貝葉斯算法基於貝葉斯定理和特征條件獨立假設

  • 貝葉斯定理
  • 特征條件獨立:特征條件獨立假設\(X\)\(n\)個特征在類確定的條件下都是條件獨立的。大大簡化了計算過程,但是因為這個假設太過嚴格,所以會相應犧牲一定的准確率。這也是為什么稱呼為朴素的原因

3. 朴素貝葉斯算法

輸入:訓練集為\(m\)個樣本\(n\)個維度\(T={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}\),共有K個特征輸出類別,分別為\(y\in{\{c_1,c_2,...,c_K}\}\).

輸出:為實例\(x_{(test)}\)的分類。

算法流程如下:

  1. 首先計算計算\(Y\)\(K\)先驗概率

\[P(Y=c_k) \]

  1. 然后計算條件概率分布:

\[P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k) \]

由於上式的參數是指數級別,無法計算。所以根據特征條件獨立假設,可以化簡為下式。

\[P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) \]

  1. 根據貝葉斯原理,計算后驗概率

\[P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)} \]

帶入\(P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)\)
得到

\[P(Y=c_k|X=x)=\frac{\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k)}{\sum_k\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k)} \]

由於分母相同,上式再變為如下:

\[P(Y=c_k|X=x)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k) \]

  1. 計算\(X_{(test)}\)的類別

\[y_{(test)}=arg\ max_{c_k}\prod_{j=1}^nP(X^{(j)}=x_{(test)}^{(j)}|Y=c_k)P(Y=c_k) \]

從上面的計算可以看出,沒有復雜的求導和矩陣運算,因此效率很高。

4. 朴素貝葉斯算法小結

朴素貝葉斯算法的主要原理基本已經做了總結,這里對朴素貝葉斯的優缺點做一個總結。

4.1 朴素貝葉斯的主要優點

  1. 朴素貝葉斯模型發源於古典數學理論,有穩定的分類效率
  2. 對小規模的數據表現很好,能個處理多分類任務,適合增量式訓練,尤其是數據量超出內存時,我們可以一批批的去增量訓練。
  3. 對缺失數據不太敏感,算法也比較簡單,常用於文本分類。

4.2 朴素貝葉斯的主要缺點

  1. 朴素貝葉斯模型的特征條件獨立假設在實際應用中往往是不成立的
  2. 如果樣本數據分布不能很好的代表樣本空間分布,那先驗概率容易測不准。
  3. 對輸入數據的表達形式很敏感。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM