NO IMAGE

0.寫在前面

樸素貝葉斯實際上是非常簡單的一種機器學習方法,我們在之前的很多地方都講過了,所以這裡我們不再闡述具體的原理,可以移步:樸素貝葉斯
但是,對於討論班裡,爭論最多的就是課後的2個習題,因此,我們重點放在這兩個習題上。他們分別是:

4.1 用極大似然估計法推出樸素貝葉斯法中的概率估計公式(4.8)及公式(4.9)。
4.2 用貝葉斯估計法推出樸素貝葉斯法中的概率估計公式(4.10)及公式(4.11)。

1. 極大似然估計法

極大似然估計方法是非常常見的估計方法(MLE)。而這裡的公式4.8和公式4.9分別是:

P(Y=ck)=∑i=1NI(yi=ck)N(4.8)

P(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N} (4.8)

P(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck)N(4.9)

P(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k)}{N} (4.9)

這裡的4.9我簡化了一下,其實道理都是一樣的,那個j只不過是表示第幾個特徵。
那麼我們怎麼推呢,首先我們來推公式4.8。
目的式:P(Y=ck)=∑i=1NI(yi=ck)NP(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N}
為了方便計算,我們令P(Y=ck)=θk,Nk=∑i=1NI(yi=ck)P(Y=c_k)=\theta_k,N_k=\displaystyle \sum_{i=1}^{N}I(y_i=c_k),N為樣本總數。

我們想求的是極大似然函式值,那麼這就是求極值的問題,而這個又有一個約束條件:∑i=1Nθi=1\displaystyle \sum_{i=1}^{N}\theta_i=1
於是,我們就可以使用拉格朗日乘子法來解決帶有約束條件的極值問題。

不知道大家還記得拉格朗日乘子法怎麼做麼。首先就是把約束條件作為其中一項,然後乘以λ\lambda後與原函式相加,求導等於0,解方程即可。

對於這題,我們的似然函式是:

L(θk,y1,y2,…,yn)=∏i=1np(yi)=∏i=1nθNkk

L(\theta_k,y_1,y_2,…,yn)=\prod_{i=1}^np(y_i)=\prod_{i=1}^n\theta_k^{N_k}

取對數,稱為對數似然函式,結果為:l(θk)=Ln(L(θk))=∑k=1NNkInθkl(\theta_k)=Ln(L(\theta_k))=\displaystyle \sum_{k=1}^{N}N_kIn\theta_k

最終的拉格朗日乘子法得到的函式為l(θk,λ)=∑k=1NNkInθk λ(∑i=1Nθi−1)l(\theta_k,\lambda)=\displaystyle \sum_{k=1}^{N}N_kIn\theta_k \lambda(\sum_{i=1}^{N}\theta_i-1)

那麼求導:

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∂l∂θ1=N1θ1 λ=0∂l∂θ2=N2θ2 λ=0∂l∂θ3=N3θ3 λ=0⋅⋅⋅∂l∂θn=Nnθn λ=0∑k=1nθk=1

\begin{cases}
\frac{\partial l}{\partial \theta_1}=\frac{N_1}{\theta_1} \lambda=0\\
\frac{\partial l}{\partial \theta_2}=\frac{N_2}{\theta_2} \lambda=0\\
\frac{\partial l}{\partial \theta_3}=\frac{N_3}{\theta_3} \lambda=0\\
···\\
\frac{\partial l}{\partial \theta_n}=\frac{N_n}{\theta_n} \lambda=0\\
\displaystyle \sum_{k=1}^{n}\theta_k=1
\end{cases}

我們先對每一個θi\theta_i求值,然後全部加起來後,得到λ=−N\lambda=-N,帶入約束條件就求得我們需要的值了:

θk=NkN

\theta_k=\frac{N_k}{N}

P(Y=ck)=∑i=1NI(yi=ck)N

P(Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}{N}

同樣的,具有條件概率的寫法也是如此。
我們假設:μlk=p(x=al|y=ck)\mu_{lk}=p(x=a_l|y=c_k),其他的假設如上述所說。
則似然函式:

L(μ;(x1,y1),(x2,y2),…,(xn,yn))=∏i=1Np(xi,yi)=∏l=1L∏k=1K(μlk⋅θk)Nlk

L(\mu;(x_1,y_1),(x_2,y_2),…,(x_n,y_n))=\prod_{i=1}^Np(x_i,y_i)=\prod_{l=1}^L\prod_{k=1}^K(\mu_{lk}·\theta_k)^{N_{lk}}
同樣的,取似然估計以後,得出的結論和之前的一樣,因此我們也會得出相同的結論:μlk=NlkNk\mu_{lk}=\frac{N_{lk}}{N_k}。

2. 貝葉斯估計法

對於第二題,我想,大家應該知道貝葉斯公式:

p(X=al|Y=ck)=p(X=al,Y=ck)p(Y=ck)

p(X=a_l|Y=c_k)=\frac{p(X=a_l,Y=c_k)}{p(Y=c_k)}
其實如果上下都約掉N就可得:

p(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck)∑i=1NI(yi=ck)

p(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k)}{\displaystyle \sum_{i=1}^{N}I(y_i=c_k)}
看過這篇語言模型的同學都會知道,這裡是為了防止0概率的出現而設定的資料平滑處理:

p(X=al|Y=ck)=∑i=1NI(xi=al,yi=ck) λ∑i=1NI(yi=ck) Sjλ

p(X=a_l|Y=c_k)=\frac{\displaystyle \sum_{i=1}^{N}I(x_i=a_l,y_i=c_k) \lambda}{\displaystyle \sum_{i=1}^{N}I(y_i=c_k) S_j\lambda}

同樣的4.11也是一樣可以得到,這裡就不贅述了。

3. 極大似然估計與貝葉斯估計的不同。

貝葉斯估計與極大似然估計的一個主要不同就在於,貝葉斯估計有一個先驗概率,而極大似然估計沒有,準確說是每種可能的先驗估計都相等,也就忽略了。

但是貝葉斯的先驗估計也並非是一直準確的,如果對於先驗估計有一個很透徹的瞭解,那麼貝葉斯估計應當是比較好用的。但是實際上,很多情況下,我們並不知道先驗概率分佈,這就導致很多時候,先驗概率分佈也是一種猜測,猜得對了,效果好,猜的不對,效果就不好。

有的說,極大似然估計是對點估計,而貝葉斯估計是對分佈估計。我覺得其實是差不多的。