2014-04-14 20:48 5224人閱讀 評論(2) 收藏 舉報框架
分類:機器學習
數據挖掘(23) EM算法函數
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。學習
概念優化
在統計計算中,最大指望(EM)算法是在機率(probabilistic)模型中尋找參數最大似然估計或者最大後驗估計的算法,其中機率模型依賴於沒法觀測的隱藏變量(Latent Variable)。spa
最大指望常常用在機器學習和計算機視覺的數據聚類(Data Clustering)領域。.net
能夠有一些比較形象的比喻說法把這個算法講清楚。blog
好比說食堂的大師傅炒了一份菜,要等分紅兩份給兩我的吃,顯然沒有必要拿來天平一點一點的精確的去稱份量,最簡單的辦法是先隨意的把菜分到兩個碗中,而後觀察是否同樣多,把比較多的那一份取出一點放到另外一個碗中,這個過程一直迭代地執行下去,直到你們看不出兩個碗所容納的菜有什麼份量上的不一樣爲止。(來自百度百科)get
EM算法就是這樣,假設咱們估計知道A和B兩個參數,在開始狀態下兩者都是未知的,而且知道了A的信息就能夠獲得B的信息,反過來知道了B也就獲得了A。能夠考慮首先賦予A某種初值,以此獲得B的估計值,而後從B的當前值出發,從新估計A的取值,這個過程一直持續到收斂爲止。
EM算法仍是許多非監督聚類算法的基礎(如Cheeseman et al. 1988),並且它是用於學習部分可觀察馬爾可夫模型(Partially Observable Markov Model)的普遍使用的Baum-Welch前向後向算法的基礎。
介紹EM算法最方便的方法是經過一個例子。
考慮數據D是一實例集合,它由k個不一樣正態分佈的混合所得分佈所生成。該問題框架在下圖中示出,其中k=2並且實例爲沿着x軸顯示的點。
每一個實例使用一個兩步驟過程造成。
首先了隨機選擇k個正態分佈其中之一。
其次隨機變量xi按照此選擇的分佈生成。
這一過程不斷重複,生成一組數據點如圖所示。爲使討論簡單化,咱們考慮一個簡單情形,即單個正態分佈的選擇基於統一的機率進行選擇,而且k個正態分佈有相同的方差σ2,且σ2已知。
學習任務是輸出一個假設h=<μ1…μk>,它描述了k個分佈中每個分佈的均值。咱們但願對這些均值找到一個極大似然假設,即一個使P(D|h)最大化的假設h。
注意到,當給定從一個正態分佈中抽取的數據實例x1,x2, …, xm時,很容易計算該分佈的均值的極大似然假設。
其中咱們能夠證實極大似然假設是使m個訓練實例上的偏差平方和最小化的假設。
使用當表述一下式,能夠獲得:
(公式一)
然而,在這裏咱們的問題涉及到k個不一樣正態分佈的混合,並且咱們不能知道哪一個實例是哪一個分佈產生的。所以這是一個涉及隱藏變量的典型例子。
EM算法步驟
在上圖的例子中,可把每一個實例的完整描述看做是三元組<xi,zi1, zi2>,其中xi是第i個實例的觀測值,zi1和zi2表示兩個正態分佈中哪一個被用於產生值xi。
確切地講,zij在xi由第j個正態分佈產生時值爲1,不然爲0。這裏xi是實例的描述中已觀察到的變量,zi1和zi2是隱藏變量。若是zi1和zi2的值可知,就能夠用式一來解決均值μ1和μ2。由於它們未知,所以咱們只能用EM算法。
EM算法應用於咱們的k均值問題,目的是搜索一個極大似然假設,方法是根據當前假設<μ1…μk>不斷地再估計隱藏變量zij的指望值。而後用這些隱藏變量的指望值從新計算極大似然假設。這裏首先描述這一實例化的EM算法,之後將給出EM算法的通常形式。
爲了估計上圖中的兩個均值,EM算法首先將假設初始化爲h=<μ1,μ2>,其中μ1和μ2爲任意的初始值。而後重複如下的兩個步驟以重估計h,直到該過程收斂到一個穩定的h值。
步驟1:計算每一個隱藏變量zij的指望值E[zij],假定當前假設h=<μ1,μ2>成立。
步驟2:計算一個新的極大似然假設h´=<μ1´,μ2´>,假定由每一個隱藏變量zij所取的值爲第1步中獲得的指望值E[zij],而後將假設h=<μ1,μ2>替換爲新的假設h´=<μ1´,μ2´>,而後循環。
如今考察第一步是如何實現的。步驟1要計算每一個zij的指望值。此E[zij]正是實例xi由第j個正態分佈生成的機率:
所以第一步可由將當前值<μ1,μ2>和已知的xi代入到上式中實現。
在第二步,使用第1步中獲得的E[zij]來導出一新的極大似然假設h´=<μ1´,μ2´>。如後面將討論到的,這時的極大似然假設爲:
注意此表達式相似於公式一中的樣本均值,它用於從單個正態分佈中估計μ。新的表達式只是對μj的加權樣本均值,每一個實例的權重爲其由第j個正態分佈產生的指望值。
上面估計k個正態分佈均值的算法描述了EM方法的要點:即當前的假設用於估計未知變量,而這些變量的指望值再被用於改進假設。
能夠證實,在此算法第一次循環中,EM算法能使似然性P(D|h)增長,除非它已達到局部的最大。所以該算法收斂到對於<μ1,μ2>的一個局部極大可能性假設。
EM算法的通常表述
上面的EM算法針對的是估計混合正態分佈均值的問題。更通常地,EM算法可用於許多問題框架,其中須要估計一組描述基準機率分佈的參數θ,只給定了由此分佈產生的所有數據中能觀察到的一部分。
在上面的二均值問題中,感興趣的參數爲θ=<μ1,μ2>,而所有數據爲三元組<xi,zi1, zi2>,而只有xi可觀察到,通常地令X=<x1, …,xm>表明在一樣的實例中已經觀察到的數據,並令Y=X∪Z表明全體數據。注意到未觀察到的Z可被看做一隨機變量,它的機率分佈依賴於未知參數θ和已知數據X。相似地,Y是一隨機變量,由於它是由隨機變量Z來定義的。在後續部分,將描述EM算法的通常形式。使用h來表明參數θ的假設值,而h´表明在EM算法的每次迭代中修改的假設。
EM算法經過搜尋使E[lnP(Y|h´)]最大的h´來尋找極大似然假設h´。此指望值是在Y所遵循的機率分佈上計算,此分佈由未知參數θ肯定。考慮此表達式究竟意味了什麼。
首先P(Y|h´)是給定假設h´下所有數據Y的似然性。其合理性在於咱們要尋找一個h´使該量的某函數值最大化。
其次使該量的對數lnP(Y|h´)最大化也使P(Y|h´)最大化,如已經介紹過的那樣。
第三,引入指望值E[lnP(Y|h´)]是由於所有數據Y自己也是一隨機變量。
已知所有數據Y是觀察到的X和未觀察到的Z的合併,咱們必須在未觀察到的Z的可能值上取平均,並以相應的機率爲權值。換言之,要在隨機變量Y遵循的機率分佈上取指望值E[lnP(Y|h´)]。該分佈由徹底已知的X值加上Z服從的分佈來肯定。
Y聽從的機率分佈是什麼?通常來講不能知道此分佈,由於它是由待估計的θ參數肯定的。然而,EM算法使用其當前的假設h代替實際參數θ,以估計Y的分佈。現定義一函數Q(h´|h),它將E[lnP(Y|h´)]做爲h´的一個函數給出,在θ=h和所有數據Y的觀察到的部分X的假定之下。
將Q函數寫成Q(h´|h)是爲了表示其定義是在當前假設h等於θ的假定下。在EM算法的通常形式裏,它重複如下兩個步驟直至收斂。
步驟1:估計(E)步驟:使用當前假設h和觀察到的數據X來估計Y上的機率分佈以計算Q(h´|h)。
步驟2:最大化(M)步驟:將假設h替換爲使Q函數最大化的假設h´:
當函數Q連續時,EM算法收斂到似然函數P(Y|h´)的一個不動點。若此似然函數有單個的最大值時,EM算法能夠收斂到這個對h´的全局的極大似然估計。不然,它只保證收斂到一個局部最大值。所以,EM與其餘最優化方法有一樣的侷限性,如以前討論的梯度降低,線性搜索和變形梯度等。
總結來講,EM算法就是經過迭代地最大化完整數據的對數似然函數的指望,來最大化不完整數據的對數似然函數。