最簡單、詳細樸素貝葉斯算法原理

樸素貝葉斯的原理歸根結底就是使用先驗概率去計算後驗概率。有關先驗概率和後驗概率請參考先驗概率和後驗概率最簡單理解

1.假設有一數據集X,包含X1到Xn條數據,每條數據包含m個特徵(m維),可以表示爲:

$$ X_1:X_1^1、X_1^2、X_1^3....X_1^m $$

2.數據集輸出Y一共有k個類別,表示爲1到k。
3.現在,我們根據頻率統計得出輸出Y的概率P(y=1)、P(y=2)...P(y=k)
4.我們的問題是想求得測試集(假設有j個)的分類,即

$$ max[P(y=1|X_{test1})、P(y=2|X_{test1})、P(y=3|X_{test1})...P(y=k|X_{test1})] $$

$$ max[P(y=1|X_{testn})、P(y=2|X_{testn})、P(y=3|X_{testn})...P(y=k|X_{testn})] $$

如果測試集數據1在y=1的情況下概率最大,則數據1的輸出爲類別1,同理可得其他。
5.對於上面的目標公式,我們可以代入條件概率公式計算,即:

$$ P(y=1|X_{test1}) = \frac{P(X_{test1}|y=1)*P(y=1)}{P(X_{test1})} $$

我們已知P(y=1)的值,對於分母,因爲分母在每一個公式中

$$ P(y=1|X_{test1})、P(y=2|X_{test1})、P(y=3|X_{test1})...P(y=k|X_{test1}) $$

都出現,所以可以省略不計算,所以最後的關鍵就是計算

$$ P(X_{test1}|y=1)=P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1) $$

6.樸素貝葉斯算法在這裏假設m個特徵是相互獨立的(實際情況並不獨立,這裏只是爲了方便運算,所以算法在這一步計算會有誤差存在),公式可以進一步推導爲:

$$ P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1)=P(X_{test1}^1|y=1)*P(X_{test1}^2|y=1)*P(X_{test1}^3|y=1)...P(X_{test1}^m|y=1) $$

7.現在問題有轉化爲了求解

$$ P(X_{test1}^1|y=1) $$

$$ P(X_{test1}^2|y=1)到P(X_{test1}^m|y=1)類同 $$

對於上述公式的求解,需要分爲三種情況,第一種情況是數據集X的第一維特徵(以第一維特徵舉例)取值是離散的,則第一維特徵符合多項式分佈:

$$ P(X_{test1}^1|y=1)=\frac{訓練集中X_{test1}^1值出現的次數}{訓練集分類爲1的樣本總的特徵計數(不限於第一維)} $$

但是如果出現分子爲0的情況,則:

$$ P(X_{test1}^1|y=1)=0 $$

$$ P(X_{test1}^1,X_{test1}^2,X_{test1}^3..X_{test1}^m|y=1)=0*P(X_{test1}^2|y=1)*P(X_{test1}^3|y=1)...P(X_{test1}^m|y=1)=0 $$

僅僅因爲一個特徵取值不存在就斷定當前類別概率爲0,是不公平的,所以在這裏引入了拉普拉斯平滑:

$$ P(X_{test1}^1|y=1)=\frac{訓練集中X_{test1}^1值出現的次數+1}{訓練集分類爲1的樣本總的特徵計數(不限於第一維)+訓練集中第1維特徵的取值個數} $$

第二種情況是數據集X的第一維特徵(以第一維特徵舉例)取值是離散且稀疏的,那們我們只關心第一維特徵的取值是否存在(不爲0),如果存在記爲1,不存在記爲0。則第一維特徵符合伯努利分佈:

$$ P(X_{test1}^1|y=1) = X_{test1}\frac{訓練集中分類爲1的數據中第一維特徵X^1不爲0的數據個數}{訓練集中分類爲1的數據個數}+(1-X_{test1})(1-\frac{訓練集中分類爲1的數據中第一維特徵X^1不爲0的數據個數}{訓練集中分類爲1的數據個數}) $$

$$ 其中X_{test1}^1的取值如果不爲0,即爲1。 $$

第三種情況是數據集X的第一維特徵(以第一維特徵舉例)取值是連續的,樸素貝葉斯假設第一維特徵的先驗概率爲正態分佈:

$$ P(X_{test1}^1|y=1) = \frac{1}{\sqrt{2\pi\sigma^2_1}}exp(-\frac{(X_{test1}^1-\mu_1)^2}{2\sigma^2_1}) $$

$$ 其中\mu_1爲訓練集中第1爲特徵取值的平均值,\sigma^2_1爲訓練集中第1爲特徵取值的方差 $$

8.Xtest1的y=1的情況推導出來後,可以依此類推y=2到k的情況,數據的最終輸出爲概率最大的y的值。再以此類推其餘測試集的輸出,算法結束( ̄▽ ̄)。

參考博客:https://www.cnblogs.com/pinar...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章