摘自:https://www.zhihu.com/question/27976634
簡單說一下為什麼要用EM算法
現在一個班裡有50個男生,50個女生,且男生站左,女生站右。我們假定男生的身高服從正态分布

,女生的身高則服從另一個正态分布:
。這時候我們可以用極大似然法(MLE),分别通過這50個男生和50個女生的樣本來估計這兩個正态分布的參數。
但現在我們讓情況複雜一點,就是這50個男生和50個女生混在一起了。我們擁有100個人的身高資料,卻不知道這100個人每一個是男生還是女生。
這時候情況就有點尴尬,因為通常來說,我們隻有知道了精确的男女身高的正态分布參數我們才能知道每一個人更有可能是男生還是女生。但從另一方面去考量,我們隻有知道了每個人是男生還是女生才能盡可能準确地估計男女各自身高的正态分布的參數。
這個時候有人就想到我們必須從某一點開始,并用疊代的辦法去解決這個問題:我們先設定男生身高和女生身高分布的幾個參數(初始值),然後根據這些參數去判斷每一個樣本(人)是男生還是女生,之後根據标注後的樣本再反過來重新估計參數。之後再多次重複這個過程,直至穩定。這個算法也就是EM算法。
為什麼要用EM算法?
一般我們要利用一個最大似然法求(MLE)一個最大似然機率,那麼問題來了,對原函數的MLE很可能求不出(函數太複雜,資料缺失等)。因為資料缺失而不能直接使用MLE方法的時候,我們可以用這個缺失資料的期望值來代替缺失的資料,而這個缺失的資料期望值和它的機率分布有關。那麼我們可以通過對似然函數關于缺失資料期望的最大化,來逼近原函數的極大值(數學證明複雜),是以EM的兩個步驟也是很明顯了。
推一篇Nature Biotech的EM tutorial文章,用了一個投硬币的例子來講EM算法的思想。
Do, C. B., & Batzoglou, S. (2008). What is the expectation maximization algorithm?. Nature biotechnology, 26(8), 897.
現在有兩個硬币A和B,要估計的參數是它們各自翻正面(head)的機率。觀察的過程是先随機選A或者B,然後扔10次。以上步驟重複5次。
如果知道每次選的是A還是B,那可以直接估計(見下圖a)。如果不知道選的是A還是B(隐變量),隻觀測到5次循環共50次投币的結果,這時就沒法直接估計A和B的正面機率。EM算法此時可起作用(見下圖b)。
推薦讀原文,沒有複雜的數學公式,通俗易懂。
摘自:http://blog.csdn.net/zouxy09/article/details/8537620
EM算法另一種了解
坐标上升法(Coordinate ascent):
圖中的直線式疊代優化的路徑,可以看到每一步都會向最優值前進一步,而且前進路線是平行于坐标軸的,因為每一步隻優化一個變量。
這猶如在x-y坐标系中找一個曲線的極值,然而曲線函數不能直接求導,是以什麼梯度下降方法就不适用了。但固定一個變量後,另外一個可以通過求導得到,是以可以使用坐标上升法,一次固定一個變量,對另外的求極值,最後逐漸逼近極值。對應到EM上,E步:固定θ,優化Q;M步:固定Q,優化θ;交替将極值推向最大。
本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/bonelee/p/7054986.html,如需轉載請自行聯系原作者