在前兩篇文章中,我們已經大致的講述了關於em演算法的一些基本理論和一些基本的性質,以及針對em演算法的缺點進行的優化改進的新型em演算法,研究之後大致就能夠進行初步的了解.現在在這最後一篇文章,我想對em演算法的應用進行一些描述:
em演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這樣典型的應用情境下,我將主要研究em演算法在二元正態分佈下的應用.
1:二元正態分佈的介紹:
設二維的隨機變數(x,y)的概率密度為:
其中u1,u2,p,&1,&2都是常數,並且&1>0,%2>0,-1
因為接下來的推導需要幾個性質,現在先給出幾個重要的性質:
性質1:二元正態分佈的邊際分布證:
由於 於是得到:
在這裡設乙個引數t:
即可以得到:
同理:哼,證明證明出來了
性質2:正態分佈的條件分布仍是正態分佈
二元正態分佈(x,y) ~n(u,m),其中:
求證:證明過程如下:
2:對於二元正態分佈均值的mcem估計:
設總體z=(x,y)~n(u,m),其中:
現在有如下的觀測資料:
顯然這個資料是缺失的,如果資料完整的話,那麼這個引數估計起來很簡單,用極大似然估計就ok,但是這樣的資料不完整的情況下,用極大似然估計求引數是非常困難的,現在我們知道em演算法對於缺失資料是非常有利的,現在我們用em演算法來求:
假設協方差矩陣
估計未知引數:
首先以u=[2,4]為例產生二元正態分佈隨機數,並將產生的隨機數扣掉一部分資料,將扣掉的這一部分資料當成未知的缺失資料m=[m1,m2],剩下的資料作為觀測資料z=[x,y]
假設在第k+1次迭代中有u的估計值u(k)=[u1(k),u2(k)],在上邊的性質中,可以應用得到:
然後按照上邊的條件分布生成n個隨機數:
m1=(m1(1),m1(2),……..m1(n))
m2=(m2(1),m2(2)…….m2(n))
計算e步,得出q函式:
這樣m1與觀察資料構成完全資料(m1(k),x),在m步中,對於函式q的未知引數u1求導進行極大似然估計,想當是對在完全資料下的u1求極大似然估計,即:
這裡的m1表示在完全資料下的均值,u2的估計值求法與此相似.
有興趣的同學可以用matlab這樣的工具試一試,實驗室的小夥伴試驗後表示在u1,u2初始值都為1,迭代20次以後,最終都會收斂,u1=2.0016,u2=3,9580
3:高斯混合分布的定義;
混合模型是指隨機變數x的概率密度函式為下式:
這個式子表現的是這個混合模型有m個分支組成,每個分支的權值為ak,當每個分支的分布都是高斯分布時,則稱混合分布為有m個分支的高斯混合分布(gmm)
現在進行假設:
設樣本觀測值為x=,由上邊的式子的到,高斯分布混合分布的對數似然函式可以寫成:
我們現在進行簡化:
把上式中的累加求和去掉,,如果直接對對數似然函式求導來尋求極值是不可行的。但是如果我們知道每乙個觀測值甄具體是來自m個分支的哪乙個分支的,則問題的難度就會下降很多。因此,從這個想法出發,我們引進隱含變 量y,它是這麼定義的:設y=且y(i)∈,i= 1,2,…,n。則當y(i)=k時,表示第i個樣本觀測值x(i)是由高斯混合分布的第k個分支產生的。因此,引入變數y後,對數似然函式可以改寫成為:
改寫似然函式之後,我們就可以考慮用em演算法來對模型進行引數估計。
在演算法的e步中,需要求完全資料的對數似然函式的期望。假設在第t一
1次迭代開始時,x已知,而y是變數,對y積分有:
已知第i個觀察x(i)來自第k個分支的概率為p,因此下邊的式子可以寫為:
而由貝葉斯公式可知
在接下來m步中,我們要求極大化式函式:
首先為了求u(k),可以將q對u(k)進行求偏導並令其為零,即:
可得:同理求&k平方:
最後,為了求ak,我們引入拉格朗日乘子:
因此有:
將這個式子進行求和得到:
最後將入=-n帶入上式,得到:
至此,我們得到所有引數的更新公式,通過程式設計可以實現迭代得到引數估 計。
4:至於hmm隱馬爾科夫模型演算法,我也是正在學習,以後再專門一篇文章進行講述
總結:在寫這一系列文章中,發現了em演算法當前存在的一些問題,但是自己的能力實在不行,比如儘管提到了使用n-r和aitken演算法進行加速,但是計算還是太複雜,更有意思的是如何巧妙地拓展引數空間進行加速收斂.還有在高斯混合模型研究中,本文是因為事先知道gmm分支的數量來 進行估計的,但是如果給的是一堆雜亂的資料,需要解決如何確定分支的問題,才能更好的擬合樣本,這是乙個有待考慮的問題 .最後還有em演算法在其他模型中的應用,在其他方向的應用,如不止可以用來進行引數估計,還
可以進行假設檢驗等。
通過近期對em演算法的研究,可以看出em演算法在處理資料缺失問題中優勢明顯,演算法和原理簡單,收斂穩定,適用性廣,當然其也存在諸多缺點(比如收斂速度慢;e步、m步計算困難)等,但是相信隨著更多的學者對em演算法進行深入的研究,em演算法會得到更大的推廣和改進,這些問題也都會逐步得到解決。
也希望這方面的相關人士可以給我一些指教,不勝感激.
EM演算法學習筆記詳解
基於李航的 統計學習方法 對em演算法學習的介紹性筆記。一.預備知識 在正式介紹em演算法之前,先介紹推導em演算法用到的數學基礎知識,包括凹凸函式,jensen不等式。上凸函式 函式f x 滿足對定義域上任意兩個數a,b都有f a b 2 f a f b 2 下凸函式 函式f x 滿足對定義域上任...
EM演算法學習筆記 1 對EM演算法的簡單理解
因做實驗的需要,最近在學習 em演算法,演算法介紹的資料網上是有不少,可是沒有一篇深入淺出的介紹,演算法公式太多,比較難懂,畢竟她是 ml領域 10大經典演算法之一 且一般是結合 gmm模型的引數估計來介紹 em的。看過不少 em的資料,現將自己對 em演算法用稍微通俗點的文字寫下來,當然你可以用 ...
機器學習 03 EM演算法學習筆記
假設有兩枚硬幣a和b,每次選乙個硬幣來拋10次。現在已經進行了5輪 也就是選了5次硬幣,並分別拋了10次 結果如下 h表示正面,t表示反面 假定隨機拋擲後正面朝上概率分別為pa,pb。為了估計這兩個硬幣朝上的概率,咱們輪流拋硬幣a和b,每一輪都連續拋5次,總共5輪 硬幣結果統計a 正正反正反 3正 ...