EM算法也就是Expectation Maximization Algorithm,它是基於極大似然估計方法,如果大家還不是很熟悉極大似然估計可以看看這篇文章https://blog.csdn.net/blank_tj/article/details/82015361
EM的理解
首先極大似然估計解決了一個什麼樣的問題呢?極大似然估計是一個已知模型也就是什麼樣的分佈,但是不知道這個分佈中參數的具體多少。就像是我知道班級裏同學的身高服從正態分佈,但是正態分佈的 和 我們不知道,然後我們通過極大似然估計來求這個參數,通過已有的數據樣本,它是參數估計的一種方法。
那麼EM算法是解決什麼樣子的事情呢?其實呀,EM算法可以理解爲是極大似然估計的複雜版,也就是多個極大似然估計組合成了EM算法。
舉個例子:一班的成績服從 ,二班的成績服從 都是正態分佈。首先,我們給出一班的樣本和這個模型,通過極大似然估計方法能把 估計出來,同理給二班的樣本和模型也能把 求出來。對吧,這就是極大似然估計的用處。那麼EM算法是什麼樣呢?現在如果我把一班和二班的樣本混合在一起,挑出來了一個人,但是我們不知道這個人是屬於一班還是屬於二班的,也就是說,我們隨便選一個人,但是我們不知道這個人是屬於哪個班級,所以也就不知道該往哪個模型套用極大似然估計方法。這就是EM算法所要解決的問題,由兩個或者多個混合的模型及其樣本組成,來估算出整個混合模型的參數。
用到的公式:Jenson不等式
是一個隨機變量, 是一個凸函數(二階導數大或等於0),那麼有:
當且僅當 是常數的時候等號成立。
如果 是凹函數,不等號反向。
橫座標是參數,縱座標是似然函數,首先我們初始化一個θ1,根據它求似然函數一個緊的下界,也就是圖中第一條黑短線,黑短線上的值雖然都小於似然函數的值,但至少有一點可以滿足等號(所以稱爲緊下界),最大化小黑短線我們就hit到至少與似然函數剛好相等的位置,對應的橫座標就是我們的新的θ2,如此進行,只要保證隨着θ的更新,每次最大化的小黑短線值都比上次的更大,那麼算法收斂,最後就能最大化到似然函數的極大值處。(別人的圖)
EM的數學推導
以兩個模型組合來說,即 z=0,z=1代表兩個模型。所以當混合時,z就不知道是哪個模型的了,所以z是一個隱變量。因此,需要最大化的似然函數爲:
接着上圖來說,構造這個小黑短線,就要靠Jensen不等式。注意我們這裏的log函數是個凹函數,所以我們使用的Jensen不等式的凹函數版本。
根據Jensen函數,需要把log裏面的東西寫成一個數學期望的形式,注意到log裏的和是關於隱變量Z的和,於是自然而然,這個數學期望一定是和Z有關,如果設Q(z)是Z的分佈函數,那麼可以這樣構造:
設 ,則
則
所以 裏其實構造了一個隨機變量 , 是 的函數。
構造好了數學期望,下一步根據Jensen不等式進行縮放:
這個時候保證這個似然函數下界是緊的,需要使等號成立。由Jensen不等式,等式成立的條件是隨機變量是常數:
因爲 是 的分佈函數,所以:
把 乘過去,可得C就是 對 求和,所以我們終於知道了:
得到 , 就是 ,或者寫成 都一樣,代表第 個數據是來自 的概率。
EM算法的流程:
首先,初始化參數
1)E-step:根據參數 計算每個樣本屬於 的概率,即這個同學是一班或者二班的概率,這個概率是Q
2)M-step:根據計算得到的Q,求出含有 的似然函數的下界並最大化它,得到新的參數
重複1)和2),直到收斂。
需要額外說明的是,EM算法在一般情況是收斂的,但是不保證收斂到全局最優,即有可能進入局部的最優。
EM算法在混合高斯模型(GMM),隱馬爾科夫模型(HMM)中都有應用,是著名的數據挖掘十大算法之一。