十大機器學習算法之EM算法講解及推導

EM算法也就是Expectation Maximization Algorithm,它是基於極大似然估計方法,如果大家還不是很熟悉極大似然估計可以看看這篇文章https://blog.csdn.net/blank_tj/article/details/82015361


EM的理解

首先極大似然估計解決了一個什麼樣的問題呢?極大似然估計是一個已知模型也就是什麼樣的分佈,但是不知道這個分佈中參數的具體多少。就像是我知道班級裏同學的身高服從正態分佈,但是正態分佈的μσ 我們不知道,然後我們通過極大似然估計來求這個參數,通過已有的數據樣本,它是參數估計的一種方法。

那麼EM算法是解決什麼樣子的事情呢?其實呀,EM算法可以理解爲是極大似然估計的複雜版,也就是多個極大似然估計組合成了EM算法。
舉個例子:一班的成績服從μ1,σ1 ,二班的成績服從μ2,σ2 都是正態分佈。首先,我們給出一班的樣本和這個模型,通過極大似然估計方法能把μ1,σ1 估計出來,同理給二班的樣本和模型也能把μ2,σ2 求出來。對吧,這就是極大似然估計的用處。那麼EM算法是什麼樣呢?現在如果我把一班和二班的樣本混合在一起,挑出來了一個人,但是我們不知道這個人是屬於一班還是屬於二班的,也就是說,我們隨便選一個人,但是我們不知道這個人是屬於哪個班級,所以也就不知道該往哪個模型套用極大似然估計方法。這就是EM算法所要解決的問題,由兩個或者多個混合的模型及其樣本組成,來估算出整個混合模型的參數。


用到的公式:Jenson不等式

X 是一個隨機變量,f(X) 是一個凸函數(二階導數大或等於0),那麼有:

E[f(x)]f[E(x)]

當且僅當X 是常數的時候等號成立。
如果f(X) 是凹函數,不等號反向。
這裏寫圖片描述
橫座標是參數,縱座標是似然函數,首先我們初始化一個θ1,根據它求似然函數一個緊的下界,也就是圖中第一條黑短線,黑短線上的值雖然都小於似然函數的值,但至少有一點可以滿足等號(所以稱爲緊下界),最大化小黑短線我們就hit到至少與似然函數剛好相等的位置,對應的橫座標就是我們的新的θ2,如此進行,只要保證隨着θ的更新,每次最大化的小黑短線值都比上次的更大,那麼算法收斂,最後就能最大化到似然函數的極大值處。(別人的圖)


EM的數學推導

以兩個模型組合來說,即 z=0,z=1代表兩個模型。所以當混合時,z就不知道是哪個模型的了,所以z是一個隱變量。因此,需要最大化的似然函數爲:

l(θ)=i=1mlog p(xi;θ)=i=1mlogzp(xi,z;θ)

接着上圖來說,構造這個小黑短線,就要靠Jensen不等式。注意我們這裏的log函數是個凹函數,所以我們使用的Jensen不等式的凹函數版本。
根據Jensen函數,需要把log裏面的東西寫成一個數學期望的形式,注意到log裏的和是關於隱變量Z的和,於是自然而然,這個數學期望一定是和Z有關,如果設Q(z)是Z的分佈函數,那麼可以這樣構造:

logZp(xi,z;θ)=logZQ(z)p(xi,z;θ)Q(z)

Y=p(xi,z;θ)Q(z) ,則P(Y=p(xi,z;θ)Q(z))=Q

logZQp(xi,z;θ)Q=logYP(Y)Y=logE(Y)

所以log 裏其實構造了一個隨機變量YYZ 的函數。
構造好了數學期望,下一步根據Jensen不等式進行縮放:

logE(Y)E(logY)=YP(Y)logY=ZQ(Z)logp(xi,z;θ)Q(Z)

l(θ)=i=1mlogZp(xi,z;θ)i=1mZQ(Z)logp(xi,z;θ)Q(Z)

這個時候保證這個似然函數下界是緊的,需要使等號成立。由Jensen不等式,等式成立的條件是隨機變量是常數:

Y=p(xi,z;θ)Q(Z)=C

因爲Q(Z)Z 的分佈函數,所以:

ZQ(Z)=Zp(xi,z;θ)C=1

C 乘過去,可得C就是p(xi,z)z 求和,所以我們終於知道了:

Q(Z)=p(xi,z;θ)C=p(xi,Z;θ)Zp(xi,z;θ)=p(xi,z;θ)p(xi)=p(z|xi;θ)

得到Q(Z)Q(Z) 就是p(zi|xi) ,或者寫成p(zi) 都一樣,代表第i 個數據是來自zi 的概率。


EM算法的流程:

首先,初始化參數 θ
1)E-step:根據參數θ 計算每個樣本屬於zi 的概率,即這個同學是一班或者二班的概率,這個概率是Q
2)M-step:根據計算得到的Q,求出含有 θ 的似然函數的下界並最大化它,得到新的參數 θ
重複1)和2),直到收斂。

需要額外說明的是,EM算法在一般情況是收斂的,但是不保證收斂到全局最優,即有可能進入局部的最優。
EM算法在混合高斯模型(GMM),隱馬爾科夫模型(HMM)中都有應用,是著名的數據挖掘十大算法之一。

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