樸素貝葉斯法

介紹

樸素貝葉斯法是一種經典的生成模型。所謂生成模型,就是通過學習輸入數據和輸出數據的聯合概率分佈P(X,Y)P(X,Y)來求得後驗概率P(YX)P(Y|X)。再具體一點就是利用訓練數據來學習P(Y)P(Y)P(XY)P(X|Y)的估計,然後得到聯合概率分佈(公式1):
P(X,Y)=P(Y)P(XY)P(X,Y) = P(Y)P(X|Y).
以上公式的各部分的含義分別爲:P(Y)P(Y)類先驗概率,P(X|Y)是樣本XX相對於類別YY類條件概率,或者叫似然。因此,如果我們能求得類先驗概率分佈和類條件概率分佈也就可以確定聯合概率分佈。但是,對於條件概率分佈來講,它涉及X\mathbf X所有屬性的聯合概率,加入X\mathbf Xdd和屬性,每個屬性取值有2種,那麼一共就有2d2^d中取值。這種指數級別的參數估計在實際是不可行的。
爲此,樸素貝葉斯的一個核心思想就是條件獨立性假設:即用於分類的的特徵在類確定的條件下都是條件獨立的,公式表示爲(公式2):
P(X=xY=ck)=j=1P(X(j)=x(j)Y=ck)P(\mathbf X=\mathbf x | Y=c_{k}) = \prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})
樸素貝葉斯進行分類時,會計算出樣本是每一個類別的概率,概率最大的那個類別即是該樣本的類別。也就是求後驗概率分佈 P(Y=ckX=x)P(Y=c_{k}|\mathbf X=\mathbf x),可以通過貝葉斯定理求得(公式3):
P(Y=ckX=x)=P(Y=ck,X=x)P(X=x)=P(X=xY=ck)P(Y=ck)P(X=x)P(Y=c_{k}|\mathbf X=\mathbf x) = \frac{P(Y=c_{k},\mathbf X=\mathbf x) }{P(\mathbf X=\mathbf x) }=\frac{P(\mathbf X=\mathbf x|Y=c_{k})P(Y=c_{k}) }{P(\mathbf X=\mathbf x) }
P(X=x)P(\mathbf X=\mathbf x)可以改寫成kP(X=xY=ck)P(Y=ck)\sum_{k} P(\mathbf X=\mathbf x|Y=c_{k})P(Y=c_{k})。將公式2代入公式3,有(公式5)P(Y=ckX=x)=P(Y=ck)j=1P(X(j)=x(j)Y=ck)kP(Y=ck)j=1P(X(j)=x(j)Y=ck)P(Y=c_{k}|\mathbf X=\mathbf x) =\frac{P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})}{\sum_{k}P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})}
至此,就比較明朗了,公式分子部分表示當前樣本x\mathbf xckc_{k}類的概率,分母表示樣本是每一個類別的概率之和。因此,分子部分最大的情況下的類別就是當前樣本的類別,即(公式6):
y=f(x)=argmaxckP(Y=ck)j=1P(X(j)=x(j)Y=ck)y=f(x)=argmax_{c_{k}} P(Y=c_{k})\prod_{j=1} P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})

參數估計

得到了目標函數後,我們即需要進行參數估計,即學習P(Y=ck)P(Y=c_{k})P(X(j)=x(j)Y=ck)P(\mathbf X^{(j)} = \mathbf x^{(j)} |Y=c_{k})。下面介紹兩種方法。

極大似然估計

用極大似然估計去求上述兩種參數都是通過頻率來求,比如求P(Y=ck)P(Y=c_{k}),那麼只需(公式7):
P(Y=ck)=i=1I(yi=ck)NP(Y=c_{k}) = \frac{\sum_{i=1}I(y_{i}=c_{k})}{N}
其中I(.)I(.)爲指示函數。類似的,有(公式8):
P(X(j)=ajlY=ck)=i=1I(xi(j)=ajl,yi=ck)i=1I(yi=ck)P(\mathbf X^{(j)} = a_{jl} |Y=c_{k}) = \frac{\sum_{i=1}I(\mathbf x_{i}^{(j)}=a_{jl},y_{i}=c_{k})}{\sum_{i=1}I(y_{i}=c_{k})}
其中ajla_{jl}表示樣本每一個屬性的每一個取值,說白了就是上式就是求獨立屬性取值的概率。求得以上所有參數之後就可以對測試樣本進行預測,概率最大對應的類別即爲預測測試樣本的類別。

貝葉斯估計

極大似然估計有一個很嚴重的弊端就是測試樣本中某個屬性的某個取值概率爲0,那麼這樣就會對後續概率計算產生偏差,因此這裏採用拉普拉斯平滑來規避這樣的問題:
P(X(j)=ajlY=ck)=i=1I(xi(j)=ajl,yi=ck)+λi=1I(yi=ck)+SjλP(\mathbf X^{(j)} = a_{jl} |Y=c_{k}) = \frac{\sum_{i=1}I(\mathbf x_{i}^{(j)}=a_{jl},y_{i}=c_{k})+\lambda}{\sum_{i=1}I(y_{i}=c_{k})+S_{j}\lambda}
其中λ>=0\lambda>=0,且當λ=0\lambda=0時爲極大似然估計,一般取λ=1\lambda=1SjS_{j}表示第j個屬性可能取值數。類似的,先驗概率分佈修正爲:
P(Y=ck)=i=1I(yi=ck)+λN+KλP(Y=c_{k}) = \frac{\sum_{i=1}I(y_{i}=c_{k})+\lambda}{N+K\lambda}
其中K爲類別的個數。

Reference

  1. 機器學習_周志華
  2. 統計學習方法_李航
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章