假設有兩枚硬幣a和b,每次選乙個硬幣來拋10次。現在已經進行了5輪(也就是選了5次硬幣,並分別拋了10次)結果如下(h表示正面,t表示反面):
假定隨機拋擲後正面朝上概率分別為pa,pb。為了估計這兩個硬幣朝上的概率,咱們輪流拋硬幣a和b,每一輪都連續拋5次,總共5輪:
硬幣結果統計a
正正反正反
3正-2反
b反反正正反
2正-3反
a正反反反反
1正-4反
b正反反正正
3正-2反
a反正正反反
2正-3反
硬幣a被拋了15次,在第一輪、第三輪、第五輪分別出現了3次正、1次正、2次正,所以很容易估計出pa,類似的,pb也很容易計算出來,如下:
pa = (3+1+2)/ 15 = 0.4
pb= (2+3)/10 = 0.5
問題來了,如果我們不知道拋的硬幣是a還是b呢(即硬幣種類是隱變數),然後再輪流拋五輪,得到如下結果:
硬幣結果
統計unknown
正正反正反
3正-2反
unknown
反反正正反
2正-3反
unknown
正反反反反
1正-4反
unknown
正反反正正
3正-2反
unknown
反正正反反
2正-3反
ok,問題變得有意思了。現在我們的目標沒變,還是估計pa和pb,需要怎麼做呢?
顯然,此時我們多了乙個硬幣種類的隱變數,設為z,可以把它認為是乙個5維的向量(z1,z2,z3,z4,z5),代表每次投擲時所使用的硬幣,比如z1,就代表第一輪投擲時使用的硬幣是a還是b。我們不妨這樣,先隨便給pa和pb賦乙個值,比如:但是,這個變數z不知道,就無法去估計pa和pb,所以,我們必須先估計出z,然後才能進一步估計pa和pb。
可要估計z,我們又得知道pa和pb,這樣我們才能用極大似然概率法則去估計z,這不是雞生蛋和蛋生雞的問題嗎,如何破?
答案就是先隨機初始化乙個pa和pb,用它來估計z,然後基於z,還是按照最大似然概率法則去估計新的pa和pb,如果新的pa和pb和我們初始化的pa和pb一樣,請問這說明了什麼?
這說明我們初始化的pa和pb是乙個相當靠譜的估計!
就是說,我們初始化的pa和pb,按照最大似然概率就可以估計出z,然後基於z,按照最大似然概率可以反過來估計出p1和p2,當與我們初始化的pa和pb一樣時,說明是p1和p2很有可能就是真實的值。這裡面包含了兩個互動的最大似然估計。
如果新估計出來的pa和pb和我們初始化的值差別很大,怎麼辦呢?就是繼續用新的p1和p2迭代,直至收斂。
硬幣a正面朝上的概率pa = 0.2
硬幣b正面朝上的概率pb = 0.7
然後,我們看看第一輪拋擲最可能是哪個硬幣。
如果是硬幣a,得出3正2反的概率為 0.20.20.20.80.8 = 0.00512
如果是硬幣b,得出3正2反的概率為0.70.70.70.30.3=0.03087
然後依次求出其他4輪中的相應概率。做成**如下(標粗表示其概率更大):
輪數若是硬幣a
若是硬幣b
10.00512,即0.2 0.2 0.2 0.8 0.8,3正-2反
0.03087,3正-2反
20.02048,即0.2 0.2 0.8 0.8 0.8,2正-3反
0.01323,2正-3反
30.08192,即0.2 0.8 0.8 0.8 0.8,1正-4反
0.00567,1正-4反
40.00512,即0.2 0.2 0.2 0.8 0.8,3正-2反
0.03087,3正-2反
50.02048,即0.2 0.2 0.8 0.8 0.8,2正-3反
0.01323,2正-3反
按照最大似然法則:
第1輪中最有可能的是硬幣b
第2輪中最有可能的是硬幣a
第3輪中最有可能的是硬幣a
第4輪中最有可能的是硬幣b
第5輪中最有可能的是硬幣a
我們就把概率更大,即更可能是a的,即第2輪、第3輪、第5輪出現正的次數2、1、2相加,除以a被拋的總次數15(a拋了三輪,每輪5次),作為z的估計值,b的計算方法類似。然後我們便可以按照最大似然概率法則來估計新的pa和pb。
pa = (2+1+2)/15 = 0.33
pb =(3+3)/10 = 0.6
設想我們是全知的神,知道每輪拋擲時的硬幣就是如本文本節開頭標示的那樣,那麼,pa和pb的最大似然估計就是0.4和0.5(下文中將這兩個值稱為pa和pb的真實值)。那麼對比下我們初始化的pa和pb和新估計出的pa和pb:
初始化的pa
估計出的pa
真實的pa
初始化的pb
估計出的pb
真實的pb
0.20.33
0.40.7
0.60.5
看到沒?我們估計的pa和pb相比於它們的初始值,更接近它們的真實值了!就這樣,不斷迭代 不斷接近真實值,這就是em演算法的奇妙之處。
可以期待,我們繼續按照上面的思路,用估計出的pa和pb再來估計z,再用z來估計新的pa和pb,反覆迭代下去,就可以最終得到pa = 0.4,pb=0.5,此時無論怎樣迭代,pa和pb的值都會保持0.4和0.5不變,於是乎,我們就找到了pa和pb的最大似然估計。
EM演算法學習筆記詳解
基於李航的 統計學習方法 對em演算法學習的介紹性筆記。一.預備知識 在正式介紹em演算法之前,先介紹推導em演算法用到的數學基礎知識,包括凹凸函式,jensen不等式。上凸函式 函式f x 滿足對定義域上任意兩個數a,b都有f a b 2 f a f b 2 下凸函式 函式f x 滿足對定義域上任...
EM演算法學習 三
在前兩篇文章中,我們已經大致的講述了關於em演算法的一些基本理論和一些基本的性質,以及針對em演算法的缺點進行的優化改進的新型em演算法,研究之後大致就能夠進行初步的了解.現在在這最後一篇文章,我想對em演算法的應用進行一些描述 em演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這...
機器學習 EM演算法
em演算法 最大期望演算法 expectation maximization algorithm,em 是為處理缺失資料的引數的估計問題,主要分為e步和m步交替組成,對給定的初始引數依賴較大。from numpy import import numpy as np import matplotlib...