em演算法c
Ⅰ em演算法的EM演算法簡述
迭代使用EM步驟,直至收斂。
可以有一些比較形象的比喻說法把這個演算法講清楚。比如說食堂的大師傅炒了一份菜,要等分成兩份給兩個人吃,顯然沒有必要拿來天平一點一點的精確的去稱分量,最簡單的辦法是先隨意的把菜分到兩個碗中,然後觀察是否一樣多,把比較多的那一份取出一點放到另一個碗中,這個過程一直迭代地執行下去,直到大家看不出兩個碗所容納的菜有什麼分量上的不同為止。EM演算法就是這樣,假設我們估計知道A和B兩個參數,在開始狀態下二者都是未知的,並且知道了A的信息就可以得到B的信息,反過來知道了B也就得到了A。可以考慮首先賦予A某種初值,以此得到B的估計值,然後從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。
EM 演算法是 Dempster,Laind,Rubin 於 1977 年提出的求參數極大似然估計的一種方法,它可以從非完整數據集中對參數進行 MLE 估計,是一種非常簡單實用的學習演算法。這種方法可以廣泛地應用於處理缺損數據,截尾數據,帶有雜訊等所謂的不完全數據(incomplete data)。
假定集合Z = (X,Y)由觀測數據 X 和未觀測數據Y 組成,X 和Z = (X,Y)分別稱為不完整數據和完整數據。假設Z的聯合概率密度被參數化地定義為P(X,Y|Θ),其中Θ表示要被估計的參數。Θ的最大似然估計是求不完整數據的對數似然函數L(X;Θ)的最大值而得到的:
L(Θ;X)= log p(X|Θ) = ∫log p(X,Y|Θ)dY ;
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演算法EM演算法簡述
EM演算法是一種迭代求解參數極大似然估計的方法,由Dempster, Laind, Rubin於1977年提出。想像一下,廚師要均勻分配一份菜餚給兩個人,他不會精確稱量,而是通過反復調整,使兩份量趨於一致。EM演算法也是如此,面對未知的參數A和B,通過初始猜測,反復調整,直到兩參數估計值接近穩定。
在數據處理中,EM演算法特別適用於處理不完整數據,如缺失值、雜訊等。給定觀測數據X和未觀測數據Y,它們構成Z=(X,Y),目標是估計參數Θ。最大似然估計就是找到使不完整數據對數似然函數L(X;Θ)最大的Θ值。這個過程由E步和M步構成,E步計算完整數據對數似然函數的期望,M步則通過最大化這個期望來更新參數估計。
每次迭代,演算法首先在當前估計Θ(t)的基礎上,進行E步計算Q(Θ |Θ (t) ),然後在E步的結果基礎上進行M步更新。這個過程相當於一個逐步逼近的過程:從一個初始參數開始,通過樣本修正參數,反復迭代,直到達到某個收斂條件,參數估計逼近真實值。
盡管EM演算法簡單且穩定,但它可能陷入局部最優,這是其主要的局限性。但其作為求解後驗密度函數的工具,其在實際應用中的重要性不容忽視。