-
em算法
EM 算法是 Dempster,Laind,Rubin 於 1977 年提出的求參數極大似然估計的一種方法,它可以從非完整數據集中對參數進行 MLE 估計,是一種非常簡單實用的學習算法。這種方法可以廣泛地應用於處理缺損數據,截尾數據,帶有噪聲等所謂的不完全數據(incomplete data)。
例子一:
可以有一些比較形象的比喻說法把這個算法講清楚。比如說食堂的大師傅炒了一份菜,要等分成兩份給兩個人吃,顯然沒有必要拿來天平一點一點的精確的去稱分量,最簡單的辦法是先隨意的把菜分到兩個碗中,然后觀察是否一樣多,把比較多的那一份取出一點放到另一個碗中,這個過程一直迭代地執行下去,直到大家看不出兩個碗所容納的菜有什么分量上的不同為止。EM算法就是這樣,假設我們估計知道A和B兩個參數,在開始狀態下二者都是未知的,並且知道了A的信息就可以得到B的信息,反過來知道了B也就得到了A。可以考慮首先賦予A某種初值,以此得到B的估計值,然后從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。
#==
假定集合Z = (X,Y)由觀測數據 X 和未觀測數據Y 組成
EM算法包括兩個步驟:由E步和M步組成,它是通過迭代地最大化完整數據的對數似然函數Lc(X;Θ)的期望來最大化不完整數據的對數似然函數,其中:
Lc(X;Θ) =log p(X,Y |Θ) ;
假設在算法第t次迭代后Θ獲得的估計記為Θ(t) ,則在(t+1)次迭代時,
E-步:計算完整數據的對數似然函數的期望,記為:
Q(Θ|Θ (t)) = E{Lc(Θ;Z)|X;Θ(t)};
M-步:通過最大化Q(Θ|Θ(t) ) 來獲得新的Θ 。
通過交替使用這兩個步驟,EM算法逐步改進模型的參數,使參數和訓練樣本的似然概率逐漸增大,最后終止於一個極大點。直觀地理解EM算法,它也可被看作為一個逐次逼近算法:事先並不知道模型的參數,可以隨機的選擇一套參數或者事先粗略地給定某個初始參數λ0 ,確定出對應於這組參數的最可能的狀態,計算每個訓練樣本的可能結果的概率,在當前的狀態下再由樣本對參數修正,重新估計參數λ,並在新的參數下重新確定模型的狀態,這樣,通過多次的迭代,循環直至某個收斂條件滿足為止,就可以使得模型的參數逐漸逼近真實參數。
EM算法的主要目的是提供一個簡單的迭代算法計算后驗密度函數,它的最大優點是簡單和穩定,但容易陷入局部最優。
------------------------------------引用至百度百科
EM算法的推導過程
https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
http://blog.csdn.net/zouxy09/article/details/8537620
http://blog.csdn.net/pipisorry/article/details/42550815
https://math.stackexchange.com/questions/25111/how-does-expectation-maximization-work
A的正面的概率是0.6,10次的概率是0.6^5+0.6^4=0.088
B:0.5^5*2= 0.0625
B預設的概率:
1 - (A/A+B) = 1- (0.088/(0.088+0.0625))=0.4152824