在前兩篇文章中,我們已經大致的講述了關於EM演算法的一些基本理論和一些基本的性質,以及針對EM演算法的缺點進行的優化改進的新型EM演算法,研究之後大致就能夠進行初步的瞭解.現在在這最後一篇文章,我想對EM演算法的應用進行一些描述:
EM演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這樣典型的應用情境下,我將主要研究EM演算法在二元正態分佈下的應用.
1:二元正態分佈的介紹:
設二維的隨機變數(X,Y)的概率密度為:
![EM演算法學習(三)](https://i.iter01.com/images/b1c46849a1dac504e2119951923f3d1b9eac9247368b50ac9c7abe661c47a71b.png)
其中u1,u2,p,&1,&2都是常數,並且&1>0,%2>0,-1
因為接下來的推導需要幾個性質,現在先給出幾個重要的性質:
性質1:二元正態分佈的邊際分佈
證:
![EM演算法學習(三)](https://i.iter01.com/images/ee38a36fb992fcaf8c0e47a5e14f88249cd752743b7da76e543a17f7d2271087.png)
由於
![EM演算法學習(三)](https://i.iter01.com/images/c4e5883e930076378fae01541d6a80f76e3cc08c833819d3aa663d31eb4e4e57.png)
於是得到:
![EM演算法學習(三)](https://i.iter01.com/images/a3b5418ad48f03f6d5ea8fe32a858c71c1c24c33f38ada8730474d160ac3f658.png)
在這裡設一個引數t:
![EM演算法學習(三)](https://i.iter01.com/images/cb36e8a1c51ea2e351878aecdee98b7f6c57889de0d1e455eeb9ff9094e28c09.png)
即可以得到:
![EM演算法學習(三)](https://i.iter01.com/images/ebd60c2e2657707c4d89ba3e3f6364d2d85dddded0a17b227dbd35aeffc4a85d.png)
同理:
![EM演算法學習(三)](https://i.iter01.com/images/9033f5796c401c4c51ed79e4a32113be09652e5f72e66c798010b2e4dd852f99.png)
哼,證明證明出來了
性質2:正態分佈的條件分佈仍是正態分佈
二元正態分佈(X,Y) ~N(u,M),其中:
![EM演算法學習(三)](https://i.iter01.com/images/2f127c855560d6ee4db3f0e79feefe5f0e73ce6bb3ae2c1075704662c915d5ce.png)
求證:
![EM演算法學習(三)](https://i.iter01.com/images/187ad40910bba5576e27d0a7bddde0b15e8d1f342c4d9b9bdb7a680ad732400e.png)
證明過程如下:
![EM演算法學習(三)](https://i.iter01.com/images/6d77a151af8445484e78c90dc0a1ab985a29e3e945d4c393277aaac48a612f15.png)
2:對於二元正態分佈均值的MCEM估計:
設總體Z=(X,Y)~N(u,M),其中:
![EM演算法學習(三)](https://i.iter01.com/images/34b7ada6f0a56e901d1c2f8815e17105ac5a545f4ed2e4202314ed58c54fc100.png)
現在有如下的觀測資料:
![EM演算法學習(三)](https://i.iter01.com/images/e78b1f047b482c603a4c79712c1f88514d2da92d840583dc74187c6b673ef4ac.png)
顯然這個資料是缺失的,如果資料完整的話,那麼這個引數估計起來很簡單,用極大似然估計就OK,但是這樣的資料不完整的情況下,用極大似然估計求引數是非常困難的,現在我們知道EM演算法對於缺失資料是非常有利的,現在我們用EM演算法來求:
假設協方差矩陣
![EM演算法學習(三)](https://i.iter01.com/images/f6142b220d7b88c47ee4c4ac8988f90d5300f94812ca9fc9dec560b5f8cc06e6.png)
估計未知引數:
![EM演算法學習(三)](https://i.iter01.com/images/d19f7e8059d76205506643ab6e1963ccc0866130f2d937595d5f69c5e3538f01.png)
首先以u=[2,4]為例產生二元正態分佈隨機數,並將產生的隨機數扣掉一部分資料,將扣掉的這一部分資料當成未知的缺失資料M=[M1,M2],剩下的資料作為觀測資料Z=[X,Y]
假設在第K+1次迭代中有u的估計值u(k)=[u1(k),u2(k)],在上邊的性質中,可以應用得到:
![EM演算法學習(三)](https://i.iter01.com/images/2b740b1e8566b8e0f6ab8f42a8fc0b2f8a6065f600b7ecf48c55c47ba55dec4e.png)
然後按照上邊的條件分佈生成n個隨機數:
M1=(m1(1),m1(2),……..m1(n))
M2=(m2(1),m2(2)…….m2(n))
計算E步,得出Q函式:
![EM演算法學習(三)](https://i.iter01.com/images/76f84103cf6f9e2580e4faca13afa226f65712ec8991468b3e7771bf746666eb.png)
這樣M1與觀察資料構成完全資料(M1(K),X),在M步中,對於函式Q的未知引數u1求導進行極大似然估計,想當是對在完全資料下的u1求極大似然估計,即:
![EM演算法學習(三)](https://i.iter01.com/images/41efc5f422064d37f0247e52efee036adbe67c9bda1d997fd5164d61d5addd27.png)
這裡的M1表示在完全資料下的均值,u2的估計值求法與此相似.
有興趣的同學可以用MATLAB這樣的工具試一試,實驗室的小夥伴試驗後表示在u1,u2初始值都為1,迭代20次以後,最終都會收斂,u1=2.0016,u2=3,9580
![EM演算法學習(三)](https://i.iter01.com/images/264e94cce0506757a672ec1adcb22c42bcd9847963fb1760094e21ecf7072c5b.png)
3:高斯混合分佈的定義;
混合模型是指隨機變數X的概率密度函式為下式:
![EM演算法學習(三)](https://i.iter01.com/images/98697d277e393246f47fc7738e949b520266b383c1ca56107ac643227cefb44c.png)
這個式子表現的是這個混合模型有M個分支組成,每個分支的權值為ak,當每個分支的分佈都是高斯分佈時,則稱混合分佈為有M個分支的高斯混合分佈(GMM)
現在進行假設:
設樣本觀測值為X={x1,x2,,,,,xN},由上邊的式子的到,高斯分佈混合分佈的對數似然函式可以寫成:
![EM演算法學習(三)](https://i.iter01.com/images/7501511a1d2aaae05fd40db826f0719d9c9a107fa59c5f5f2aa2a044580defd6.png)
我們現在進行簡化:
![EM演算法學習(三)](https://i.iter01.com/images/64d4391114a073546a750e7c8129ac23c34b5895dbb87df548937e00721a5608.png)
把上式中的累加求和去掉,,如果直接對對數似然函式求導來尋求極值是不可行的。但是如果我們知道每一個觀測值甄具體是來自M個分支的哪一個分支的,則問題的難度就會下降很多。因此,從這個想法出發,我們引進隱含變 量y,它是這麼定義的:設Y={y1,y2,,,,yN}且y(i)∈{1,2,…,M},i= 1,2,…,N。則當y(i)=k時,表示第i個樣本觀測值x(i)是由高斯混合分佈的第k個分支產生的。因此,引入變數y後,對數似然函式可以改寫成為:
![EM演算法學習(三)](https://i.iter01.com/images/d18bbea4d114368ad80d65fc59f4359263c160076c83ba9bde2bbaacfa611922.png)
改寫似然函式之後,我們就可以考慮用EM演算法來對模型進行引數估計。
在演算法的E步中,需要求完全資料的對數似然函式的期望。假設在第t一
1次迭代開始時,X已知,而Y是變數,對Y積分有:
![EM演算法學習(三)](https://i.iter01.com/images/98fb27c085795ae31c1e4255d6602f3d3bf224183d50f0cc22511a6a2b7c106e.png)
已知第i個觀察x(i)來自第K個分支的概率為p,因此下邊的式子可以寫為:
![EM演算法學習(三)](https://i.iter01.com/images/4ef8ec2d85c64fbbd9dd06f9ddbc7d6adf4da6f53dda04fc5f315e89aaad7d7f.png)
而由貝葉斯公式可知
![EM演算法學習(三)](https://i.iter01.com/images/10ac06a48154ef0dc499339e99cc47725ef220261c51912eff35136831ee3e8c.png)
在接下來M步中,我們要求極大化式函式:
首先為了求u(k),可以將Q對u(k)進行求偏導並令其為零,即:
![EM演算法學習(三)](https://i.iter01.com/images/269f18af3c329328af9c03e8ac1b2fc7480c3f62cefa2466321907ed72d98c34.png)
可得:
![EM演算法學習(三)](https://i.iter01.com/images/f28264066ba3bc121b30c6d3086bca61457c2a505dba9c322ad7f0b789c3f49a.png)
同理求&k平方:
![EM演算法學習(三)](https://i.iter01.com/images/4a5f97aef92730ad852562eeb5f47d2200384d931527a9c208a9a6adf2aa22c4.png)
最後,為了求ak,我們引入拉格朗日乘子:
![EM演算法學習(三)](https://i.iter01.com/images/d7db7504cb47ce7578fc76295c0dc0aaa66942bd0a7f24798b2655b6cc5f4f86.png)
因此有:
![EM演算法學習(三)](https://i.iter01.com/images/724893e6b701820b935988c7ff63bf1009df9a7f52c8d116ecaa14b32822d8cd.png)
將這個式子進行求和得到:
![EM演算法學習(三)](https://i.iter01.com/images/be90e49e16083b9c7b99fa60918261588083fe1b75bb022701b39b27f0784ea6.png)
最後將入=-N帶入上式,得到:
![EM演算法學習(三)](https://i.iter01.com/images/5a2624e361e314179f1ee20c8d0323bdf944c620772d2e911c2947d25abdfa18.png)
至此,我們得到所有引數的更新公式,通過程式設計可以實現迭代得到引數估 計。
4:至於HMM隱馬爾科夫模型演算法,我也是正在學習,以後再專門一篇文章進行講述
總結:在寫這一系列文章中,發現了EM演算法當前存在的一些問題,但是自己的能力實在不行,比如儘管提到了使用N-R和aitken演算法進行加速,但是計算還是太複雜,更有意思的是如何巧妙地擴充引數空間進行加速收斂.還有在高斯混合模型研究中,本文是因為事先知道GMM分支的數量來 進行估計的,但是如果給的是一堆雜亂的資料,需要解決如何確定分支的問題,才能更好的擬合樣本,這是一個有待考慮的問題 .最後還有EM演算法在其他模型中的應用,在其他方向的應用,如不止可以用來進行引數估計,還
可以進行假設檢驗等。
通過近期對EM演算法的研究,可以看出EM演算法在處理資料缺失問題中優勢明顯,演算法和原理簡單,收斂穩定,適用性廣,當然其也存在諸多缺點(比如收斂速度慢;E步、M步計算困難)等,但是相信隨著更多的學者對EM演算法進行深入的研究,EM演算法會得到更大的推廣和改進,這些問題也都會逐步得到解決。
也希望這方面的相關人士可以給我一些指教,不勝感激.