樸素貝葉斯算法原理

樸素貝葉斯算法原理

樸素貝葉斯分類器(Naive Bayes Classifier)的優點是運算時間短、數學原理清晰,我在MNIST和CIFAR-10數據集上測試,錯誤率分別爲15.74%和58.45%。

實在看不懂,不如先復(yu)習一下概率統計;如果覺得是我寫的太爛,周志華教授的《機器學習》書中,樸素貝葉斯分類器寫的很清楚。

樸素貝葉斯算法

定義x 爲樣本,ω 爲標記,則將樣本和標記用概率公式表示:

  • P(ω) 爲先驗概率,代表ω 在所有標記中出現的概率。
  • P(x|ω) 爲似然,代表在ω 標記下,出現樣本x 的概率。
  • P(ω|x) 爲後驗概率,代表x 出現的情況下,樣本標記爲ω 的概率。
  • P(x) 代表樣本x 出現的概率。

訓練樣本

根據Bayes公式,後驗概率可以由先驗概率和似然表示:

P(ω|x)=P(ω)P(x|ω)P(x)

在分類問題中,我們認爲P(x) 爲常數,P(ω)P(x|ω) 可由訓練樣本計算得到,P(ω|x) 即爲所求的結果(在證據x 出現的前提下,取得標記爲ω 的概率)。上式可以表示爲:
P(ω|x)P(ω)P(x|ω)

在分類時,我們通過上式計算不同ω 值所對應的P(ω)P(x|ω) ,找到最大值對應的ω ,即可完成分類。因此,我們將分類問題轉化成了根據樣本,計算先驗概率P(ω) 和似然P(x|ω) 的問題。

先驗概率P(ω) 可以用樣本中標記爲ω 的數量佔總樣本數之比表示:

P(ω)=DωD

但是,根據樣本,我們無法直接計算似然P(x|ω) 。在樸素貝葉斯分類算法中,我們假設樣本的每個維度之間相互獨立,此時似然就可以計算了。

對於離散的樣本空間,第i 個維度的似然可以表示爲:

P(xi|ω)=Dω,iDω

考慮到部分樣本取值可能沒有在全部樣本中出現,按上式計算時,沒有出現的項就會取值爲0。爲了解決此問題,P(ω)P(xi|ω) 的表達式被修正爲
P(ω)=Dω+1D+NP(xi|ω)=Dω,i+1Dω+Ni

N 爲標記ω 可能取值的總數,Ni 爲樣本x 可能取值的總數。

若樣本連續,且假設樣本滿足高斯分佈,似然可表示爲

p(xi|ω)=12πσω,iexp(xiμω,i)22σ2ω,i

高斯分佈的係數σμ 可以由最大似然估計(Maximum Likelihood Estimation, MLE)得到:
μ^=1Nj=0Nxj=x¯

σ^2=1Nj=0N(xjx¯)2

對於全部維度的似然P(x|ω)

P(x|ω)=i=1NP(xi|ω)

至此,我們即可根據給定的樣本空間,計算先驗概率P(ω) 和似然P(x|ω)

分類

在分類時,因爲先驗概率P(ω) 和似然P(x|ω) 已知,待分類數據x 已知,P(ω)P(x|ω) 可以方便地求得。

又因爲

P(ω|x)P(ω)P(x|ω)=P(ω)i=1NP(xi|ω)

找出使P(ω|x) 最大的ωiωi 即爲分類結果。

需要注意的是,在實際應用中,樣本x 的維數通常很高,而概率值均小於1。因此,爲避免浮點數連乘出現0,將上式兩邊取對數

logP(ω|x)logP(ω)+i=1NlogP(xi|ω)

對每個ωi 計算logP(ωi)+Ni=1logP(xi|ωi) ,使該式最大的ωi 即爲分類結果。

版本信息

1.0 20171118 initial commit

知識共享許可協議
本作品採用知識共享署名-相同方式共享 3.0 未本地化版本許可協議進行許可。

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