EM演算法學習(三)

雲時之間發表於2018-01-15

在前兩篇文章中,我們已經大致的講述了關於EM演算法的一些基本理論和一些基本的性質,以及針對EM演算法的缺點進行的優化改進的新型EM演算法,研究之後大致就能夠進行初步的瞭解.現在在這最後一篇文章,我想對EM演算法的應用進行一些描述:

EM演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這樣典型的應用情境下,我將主要研究EM演算法在二元正態分佈下的應用.

1:二元正態分佈的介紹:

設二維的隨機變數(X,Y)的概率密度為:

EM演算法學習(三)

其中u1,u2,p,&1,&2都是常數,並且&1>0,%2>0,-1

因為接下來的推導需要幾個性質,現在先給出幾個重要的性質:

性質1:二元正態分佈的邊際分佈

證:

EM演算法學習(三)

由於

EM演算法學習(三)

於是得到:

EM演算法學習(三)

在這裡設一個引數t:

EM演算法學習(三)

即可以得到:

EM演算法學習(三)

同理:

EM演算法學習(三)

哼,證明證明出來了

性質2:正態分佈的條件分佈仍是正態分佈

二元正態分佈(X,Y) ~N(u,M),其中:

EM演算法學習(三)

求證:

EM演算法學習(三)

證明過程如下:

EM演算法學習(三)

2:對於二元正態分佈均值的MCEM估計:

設總體Z=(X,Y)~N(u,M),其中:

EM演算法學習(三)

現在有如下的觀測資料:

EM演算法學習(三)

顯然這個資料是缺失的,如果資料完整的話,那麼這個引數估計起來很簡單,用極大似然估計就OK,但是這樣的資料不完整的情況下,用極大似然估計求引數是非常困難的,現在我們知道EM演算法對於缺失資料是非常有利的,現在我們用EM演算法來求:

假設協方差矩陣

EM演算法學習(三)

估計未知引數:

EM演算法學習(三)

首先以u=[2,4]為例產生二元正態分佈隨機數,並將產生的隨機數扣掉一部分資料,將扣掉的這一部分資料當成未知的缺失資料M=[M1,M2],剩下的資料作為觀測資料Z=[X,Y]

假設在第K+1次迭代中有u的估計值u(k)=[u1(k),u2(k)],在上邊的性質中,可以應用得到:

EM演算法學習(三)

然後按照上邊的條件分佈生成n個隨機數:

M1=(m1(1),m1(2),……..m1(n))

M2=(m2(1),m2(2)…….m2(n))

計算E步,得出Q函式:

EM演算法學習(三)

這樣M1與觀察資料構成完全資料(M1(K),X),在M步中,對於函式Q的未知引數u1求導進行極大似然估計,想當是對在完全資料下的u1求極大似然估計,即:

EM演算法學習(三)

這裡的M1表示在完全資料下的均值,u2的估計值求法與此相似.

有興趣的同學可以用MATLAB這樣的工具試一試,實驗室的小夥伴試驗後表示在u1,u2初始值都為1,迭代20次以後,最終都會收斂,u1=2.0016,u2=3,9580

EM演算法學習(三)

3:高斯混合分佈的定義;

混合模型是指隨機變數X的概率密度函式為下式:

EM演算法學習(三)

這個式子表現的是這個混合模型有M個分支組成,每個分支的權值為ak,當每個分支的分佈都是高斯分佈時,則稱混合分佈為有M個分支的高斯混合分佈(GMM)

現在進行假設:

設樣本觀測值為X={x1,x2,,,,,xN},由上邊的式子的到,高斯分佈混合分佈的對數似然函式可以寫成:

EM演算法學習(三)

我們現在進行簡化:

EM演算法學習(三)

把上式中的累加求和去掉,,如果直接對對數似然函式求導來尋求極值是不可行的。但是如果我們知道每一個觀測值甄具體是來自M個分支的哪一個分支的,則問題的難度就會下降很多。因此,從這個想法出發,我們引進隱含變 量y,它是這麼定義的:設Y={y1,y2,,,,yN}且y(i)∈{1,2,…,M},i= 1,2,…,N。則當y(i)=k時,表示第i個樣本觀測值x(i)是由高斯混合分佈的第k個分支產生的。因此,引入變數y後,對數似然函式可以改寫成為:

EM演算法學習(三)

改寫似然函式之後,我們就可以考慮用EM演算法來對模型進行引數估計。

在演算法的E步中,需要求完全資料的對數似然函式的期望。假設在第t一

1次迭代開始時,X已知,而Y是變數,對Y積分有:

EM演算法學習(三)

已知第i個觀察x(i)來自第K個分支的概率為p,因此下邊的式子可以寫為:

EM演算法學習(三)

而由貝葉斯公式可知

EM演算法學習(三)

在接下來M步中,我們要求極大化式函式:

首先為了求u(k),可以將Q對u(k)進行求偏導並令其為零,即:

EM演算法學習(三)

可得:

EM演算法學習(三)

同理求&k平方:

EM演算法學習(三)

最後,為了求ak,我們引入拉格朗日乘子:

EM演算法學習(三)

因此有:

EM演算法學習(三)

將這個式子進行求和得到:

EM演算法學習(三)

最後將入=-N帶入上式,得到:

EM演算法學習(三)

至此,我們得到所有引數的更新公式,通過程式設計可以實現迭代得到引數估 計。

4:至於HMM隱馬爾科夫模型演算法,我也是正在學習,以後再專門一篇文章進行講述

總結:在寫這一系列文章中,發現了EM演算法當前存在的一些問題,但是自己的能力實在不行,比如儘管提到了使用N-R和aitken演算法進行加速,但是計算還是太複雜,更有意思的是如何巧妙地擴充引數空間進行加速收斂.還有在高斯混合模型研究中,本文是因為事先知道GMM分支的數量來 進行估計的,但是如果給的是一堆雜亂的資料,需要解決如何確定分支的問題,才能更好的擬合樣本,這是一個有待考慮的問題 .最後還有EM演算法在其他模型中的應用,在其他方向的應用,如不止可以用來進行引數估計,還

可以進行假設檢驗等。

通過近期對EM演算法的研究,可以看出EM演算法在處理資料缺失問題中優勢明顯,演算法和原理簡單,收斂穩定,適用性廣,當然其也存在諸多缺點(比如收斂速度慢;E步、M步計算困難)等,但是相信隨著更多的學者對EM演算法進行深入的研究,EM演算法會得到更大的推廣和改進,這些問題也都會逐步得到解決。

也希望這方面的相關人士可以給我一些指教,不勝感激.

相關文章