如何理解EM演算法

2021-08-19 08:06:05 字數 1336 閱讀 1513

em演算法是極大似然解的一種演算法。當使用基於極大似然估計的模型時,模型中存在隱變數,就要用到em演算法進行引數估計。

以投硬幣為例說明:

現有兩枚硬幣1和2,隨機投擲正面朝上的概率是p1和p2,然後為了估計這兩個概率做了上面的實驗,我們可以很容易得出

p1 = (3+1+2)/15 = 0.4

p2 = (2+3)/10 = 0.5

為了使用我們的em演算法,我們加入隱變數,即還是上面的實驗,但是我們抹去每輪投擲的硬幣標記,繼續求p1和p2

這時我們怎麼做呢?先隨機初始化乙個p1和p2,拿這個去估計新加入的隱變數z,這裡可以認為是乙個5維的向量(z1,z2,z3,z4,z5)

假設p1 = 0.2,p2 = 0.7,對於第一輪投擲,硬幣1得到3正2反的概率是(0.2)^3 * (0.7)^2 = 0.00512, 硬幣2得到3正2反的概率是(0.7)^3 * (0.3)^2 = 0.03087

重複上面操作得到5輪的概率,根據最大似然法則z應該是(2,1,1,2,1),然後根據新得到的z回去計算p1和p2,得到0.33和0.6,可以看出進一步逼近了真實的0.4和0.5。這樣重複計算不斷接近真實概率,但最後能不能收斂取決於我們給的初值。

em演算法的完全版則是,在用z估計p1和p2時加入權重:

這一步計算z的概率分布就是em演算法的e(expectation)步,我們現在認為第一輪有0.14的概率是硬幣1,0.86的概率是硬幣2,而不是之前的非此即彼。

此時我們按照最大似然法則估計p1和p2,得(以估計p1為例):

第一輪三正兩反:0.14 * 3 = 0.42   0.14 * 2 = 0.28

p1 = 4.22 / (4.22 + 7.98) = 0.35

由e步得到的z去用最大似然法則估計p1和p2,就是m(maximization)步。

這麼估計出來的p1和p2比之前要更接近真實的p1和p2。

參考:

理解EM演算法

em演算法應對的問題 隨機變數x 中y為觀測變數,存在一部分不能直接觀測的變數z,因此不能直接使用最大似然方法估計引數。em基本思路 1 expectation 直接假設分布引數的初始值,求隱變數z期望,從而 補全 不完全觀測資料,相當於得到了完全變數x的觀測樣本。2 maximization 利用...

如何感性地理解EM演算法?

作者milter 關注 2017.03.30 19 15 字數 2326 閱讀 2779 喜歡 31 讚賞 1 如果使用基於最大似然估計的模型,模型中存在隱變數,就要用em演算法做引數估計。個人認為,理解em演算法背後的idea,遠比看懂它的數學推導重要。idea會讓你有乙個直觀的感受,從而明白演算...

如何感性地理解EM演算法?

如果使用基於最大似然估計的模型,模型中存在隱變數,就要用em演算法做引數估計。個人認為,理解em演算法背後的idea,遠比看懂它的數學推導重要。idea會讓你有乙個直觀的感受,從而明白演算法的合理性,數學推導只是將這種合理性用更加嚴謹的語言表達出來而已。打個比方,乙個梨很甜,用數學的語言可以表述為糖...