em演算法混合模型
❶ em演算法是什麼
最大期望演算法(Expectation-Maximization algorithm, EM),或Dempster-Laird-Rubin演算法,是一類通過迭代進行極大似然估計(Maximum Likelihood Estimation, MLE)的優化演算法 ,通常作為牛頓迭代法(Newton-Raphson method)的替代用於對包含隱變數(latent variable)或缺失數據(incomplete-data)的概率模型進行參數估計。
EM演算法的標准計算框架由E步(Expectation-step)和M步(Maximization step)交替組成,演算法的收斂性可以確保迭代至少逼近局部極大值 。EM演算法是MM演算法(Minorize-Maximization algorithm)的特例之一,有多個改進版本,包括使用了貝葉斯推斷的EM演算法、EM梯度演算法、廣義EM演算法等 。
由於迭代規則容易實現並可以靈活考慮隱變數,EM演算法被廣泛應用於處理數據的缺測值 ,以及很多機器學習(machine learning)演算法,包括高斯混合模型(Gaussian Mixture Model, GMM) 和隱馬爾可夫模型(Hidden Markov Model, HMM) 的參數估計。
❷ EM演算法和混合高斯模型(一)
EM(Expectation Maximization)演算法是一種迭代演算法,用於含有隱變數的概率模型參數的極大似然估計,或極大後驗估計。EM演算法的每次迭代由兩步組成:E步,求期望(expectation);M步,求極大值,因而被稱為期望極大演算法,簡稱EM演算法。
本文從EM演算法的引入說起,簡單介紹EM演算法的推導過程,以及其在高斯混合模型中的應用。更多的關於EM演算法的推導細節,可參見 人人都懂EM演算法 。
假設我們需要調查我們學校學生的身高分布。我們先假設學校所有學生的身高服從正態分布 。( 注意:極大似然估計的前提一定是要假設數據總體的分布,如果不知道數據分布,是無法使用極大似然估計的 ),這個分布的均值μ和標准差為σ 未知,如果我們估計出這兩個參數,那我們就得到了最終的結果。那麼怎樣估計這兩個參數呢?
學校的學生這么多,我們不可能挨個統計吧?這時候我們需要用到概率統計的思想,也就是抽樣,根據樣本估算總體。假設我們隨機抽到了 200 個人(也就是 200 個身高的樣本數據,為了方便表示,下面「人」的意思就是對應的身高)。然後統計抽樣這 200 個人的身高。根據這 200 個人的身高估計均值 μ和方差σ 。例子來自 人人都懂EM演算法 。
現在我們假設這200個人的身高服從一個正態分布N(μ,σ),因此可以直接使用極大似然估計方法估計出這個分布的參數μ和σ。
但是,這200個人的身高真的是服從同一個正態分布嗎?實際情況並不是這樣的,男生和女生分別服從兩種不同的正態分布,即男生 女生各服從一個正態分布 ,( 注意:EM演算法和極大似然估計的前提是一樣的,都要假設數據總體的分布,如果不知道數據分布,是無法使用EM演算法的 ),而且假設我們現在只有身高數據,丟失了性別數據,那麼該怎樣評估學生的身高分布呢?
這個時候,對於每一個樣本或者你抽取到的人,就有兩個問題需要估計了,一是這個人是男的還是女的,二是男生和女生對應的身高的正態分布的參數是多少。這兩個問題是相互依賴的:
但是現在我們既不知道每個學生是男生還是女生,也不知道男生和女生的身高分布。這就成了一個先有雞還是先有蛋的問題了。雞說,沒有我,誰把你生出來的啊。蛋不服,說,沒有我,你從哪蹦出來啊。為了解決這個你依賴我,我依賴你的循環依賴問題,總得有一方要先打破僵局,不管了,我先隨便整一個值出來,看你怎麼變,然後我再根據你的變化調整我的變化,然後如此迭代著不斷互相推導,最終就會收斂到一個解(草原上的狼和羊,相生相剋)。這就是EM演算法的基本思想了。
EM的意思是「Expectation Maximization」,具體方法為:
上面的學生屬於男生還是女生我們稱之為隱含參數,女生和男生的身高分布參數稱為模型參數。
EM 演算法解決這個的思路是使用啟發式的迭代方法,既然我們無法直接求出模型分布參數,那麼我們可以先猜想隱含參數(EM 演算法的 E 步),接著基於觀察數據和猜測的隱含參數一起來極大化對數似然,求解我們的模型參數(EM演算法的M步)。由於我們之前的隱含參數是猜測的,所以此時得到的模型參數一般還不是我們想要的結果。我們基於當前得到的模型參數,繼續猜測隱含參數(EM演算法的 E 步),然後繼續極大化對數似然,求解我們的模型參數(EM演算法的M步)。以此類推,不斷的迭代下去,直到模型分布參數基本無變化,演算法收斂,找到合適的模型參數。
在開始介紹EM演算法之前,讓我們先來了解一個重要的定理——Jensen不等式。
如下圖,如果函數f(x)是凸函數,x是隨機變數,有 0.5 的概率是 a,有 0.5 的概率是 b, x的期望值就是 a 和 b 的中值了,那麼:
對於m個相互獨立的樣本:
假如沒有隱含變數z, 我們僅需要找到合適的θ極大化對數似然函數即可:
現在我們給定一個θ值(初始化θ),那麼logL(θ)的值就取決於Q i (z)和P(x (i) ,z (i) )。我們可以通過調整這兩個概率使下屆逼近logL(θ)的真實值,當不等式變為等式時,說明我們調整後的下屆就等於logL(θ)了。由Jeson不等式可知,等式成立的條件是隨機變數是常數,則有:
如果Q i (z (i) ) = P(z (i) |x (i) , θ),則(2)式使我們包含隱藏數據的對數似然函數的一個下屆。如果我們能極大化這個下屆,則也在嘗試極大化我們的對數似然函數。即我們需要極大化下式:
由於對logaf(x)求導的結果與f(x)的系數無關((ln(ax))'= (lna + lnx)'=1/x),因此對θ求極大似然時,可以去掉式中的常數部分Q i (z (i) ):
現在,讓我們來總結一下EM演算法的流程。
輸入:觀察數據x = (x (1) , x (2) , ... , x (m) ), 聯合分布P(x, z|θ),條件分布P(z|x,θ),極大迭代次數J。
(1)隨機初始化模型參數θ值;
(2)迭代求解各個分布模型的參數以及各個模型的概率:
for j from 1 to J:
輸出:模型參數θ
圖中的直線式迭代優化的路徑,可以看到每一步都會向最優值前進一步,而且前進路線是平行於坐標軸的,因為每一步只優化一個變數。
這猶如在x-y坐標系中找一個曲線的極值,然而曲線函數不能直接求導,因此什麼梯度下降方法就不適用了。但固定一個變數後,另外一個可以通過求導得到,因此可以使用坐標上升法,一次固定一個變數,對另外的求極值,最後逐步逼近極值。對應到EM上,E步:固定 θ,優化Q;M步:固定 Q,優化 θ;交替將極值推向極大。
E步 :初始化θ A =0.6和θ B =0.5(θ A 和θ B 分別表示兩個硬幣出現正面的概率),計算每次擲硬幣選擇A和B的概率,例如第一個實驗中選擇A的概率為:
M步 :求出似然函數下屆Q(θ,θ i ), y i 代表第j次試驗正面朝上的個數,μ j 代表第j次試驗選擇硬幣A的概率,1-μ j 代表第j次試驗選擇硬幣B的概率。
參考:
人人都懂EM演算法
《統計學習方法》. 李航
❸ 數據挖掘十大經典演算法之EM
EM(Expectation-Maximum)演算法也稱期望最大化演算法,它是最常見的隱變數估計方法,在機器學習中有極為廣泛的用途,例如常被用來學習高斯混合模型(Gaussian mixture model,簡稱GMM)的參數;隱式馬爾科夫演算法(HMM)、LDA主題模型的變分推斷等等。
EM演算法是一種迭代優化策略,由於它的計算方法中每一次迭代都分兩步,其中一個為期望步(E步),另一個為極大步(M步),一輪輪迭代更新隱含數據和模型分布參數,直到收斂,即得到我們需要的模型參數。
1. EM演算法推導過程
補充知識:Jensen不等式:
如果f是凸函數,函數的期望 大於等於 期望的函數。當且僅當下式中X是常量時,該式取等號。(應用於凹函數時,不等號方向相反)
2. EM演算法流程
3. EM演算法的其他問題
上面介紹的傳統EM演算法對初始值敏感,聚類結果隨不同的初始值而波動較大。總的來說,EM演算法收斂的優劣很大程度上取決於其初始參數。
EM演算法可以保證收斂到一個穩定點,即EM演算法是一定收斂的。
EM演算法可以保證收斂到一個穩定點,但是卻不能保證收斂到全局的極大值點,因此它是局部最優的演算法,當然,如果我們的優化目標是凸的,則EM演算法可以保證收斂到全局最大值,這點和梯度下降法這樣的迭代演算法相同。
EM演算法的簡單實例: https://zhuanlan.hu.com/p/40991784
參考:
https://zhuanlan.hu.com/p/40991784
https://blog.csdn.net/u011067360/article/details/24368085
❹ 高斯混合模型(GMM)和EM演算法
學號:20021110074 電院 姓名:梁雪玲
【嵌牛導讀】:GMM與EM演算法的學習與推導。
【嵌牛鼻子】:GMM EM
【嵌牛提問】:GMM是什麼?EM演算法是什麼?二者之間的關系?演算法的推導?如何深入學習?
【嵌牛正文】:
在深度學習的路上,從頭開始了解一下各項技術。本人是DL小白,連續記錄我自己看的一些東西,大家可以互相交流。
本文參考:
http://www.ituring.com.cn/article/497545(GMM)
https://blog.csdn.net/xmu_jupiter/article/details/50889023(GMM)
http://www.cnblogs.com/wjy-lulu/p/7010258.html(EM演算法)
https://blog.csdn.net/zouxy09/article/details/8537620(EM演算法)
一、前言
高斯混合模型(Gaussian Mixture Model)簡稱GMM,是一種業界廣泛使用的聚類演算法。它是多個高斯分布函數的線性組合,理論上GMM可以擬合出任意類型的分布,通常用於解決同一集合下的數據包含多種不同的分布的情況。高斯混合模型使用了期望最大(Expectation Maximization, 簡稱EM)演算法進行訓練,故此我們在了解GMM之後,也需要了解如何通過EM演算法訓練(求解)GMM。
二、高斯混合模型(GMM)
在了解高斯混合模型之前,我們先了解一下這種模型的具體參數模型-高斯分布。高斯分布又稱正態分布,是一種在自然界中大量存在的,最為常見的分布形式。
如上圖,這是一個關於身高的生態分布曲線,關於175-180對稱,中間高兩邊低,相信大家在高中已經很了解了,這里就不再闡述。
現在,我們引用《統計學習方法》-李航 書中的定義,如下圖:
根據定義,我們可以理解為,GMM是多個高斯分布的加權和,並且權重α之和等於1。這里不難理解,因為GMM最終反映出的是一個概率,而整個模型的概率之和為1,所以權重之和即為1。高斯混合模型實則不難理解,接下來我們介紹GMM的訓練(求解)方法。
PS.從數學角度看,對於一個概率模型的求解,即為求其最大值。從深度學習角度看,我們希望降低這個概率模型的損失函數,也就是希望訓練模型,獲得最大值。訓練和求解是不同專業,但相同目標的術語。
三、最大似然估計
想要了解EM演算法,我們首先需要了解最大似然估計這個概念。我們通過一個簡單的例子來解釋一下。
假設,我們需要調查學校男女生的身高分布。我們用抽樣的思想,在校園里隨機抽取了100男生和100女生,共計200個人(身高樣本數據)。我們假設整個學校的身高分布服從於高斯分布。但是這個高斯分布的均值u和方差∂2我們不知道,這兩個參數就是我們需要估計的值。記作θ=[u, ∂]T。
由於每個樣本都是獨立地從p(x|θ)中抽取的,並且所有的樣本都服從於同一個高斯分布p(x|θ)。那麼我們從整個學校中,那麼我抽到男生A(的身高)的概率是p(xA|θ),抽到男生B的概率是p(xB|θ)。而恰好抽取出這100個男生的概率,就是每個男生的概率乘積。用下式表示:
這個概率反映了,在概率密度函數的參數是θ時,得到X這組樣本的概率。在公式中,x已知,而θ是未知,所以它是θ的函數。這個函數放映的是在不同的參數θ取值下,取得當前這個樣本集的可能性,因此稱為參數θ相對於樣本集X的似然函數(likehood function)。記為L(θ)。
我們先穿插一個小例子,來闡述似然的概念。
某位同學與一位獵人一起外出打獵,一隻野兔從前方竄過。只聽一聲槍響,野兔應聲到下,如果要你推測,這一發命中的子彈是誰打的?你就會想,只發一槍便打中,由於獵人命中的概率一般大於這位同學命中的概率,看來這一槍是獵人射中的。
這個例子所作的推斷就體現了極大似然法的基本思想,我們並不知道具體是誰打的兔子,但是我們可以估計到一個看似正確的參數。回到男生身高的例子中。在整個學校中我們一次抽到這100個男生(樣本),而不是其他的人,那麼我們可以認為這100個男生(樣本)出現的概率最大,用上面的似然函數L(θ)來表示。
所以,我們就只需要找到一個參數θ,其對應的似然函數L(θ)最大,也就是說抽到這100個男生(的身高)概率最大。這個叫做θ的最大似然估計量,記為:
因為L(θ)是一個連乘函數,我們為了便於分析,可以定義對數似然函數,運用對數的運算規則,把連乘轉變為連加:
PS.這種數學方法在MFCC中我們曾經用過,可以回溯一下上一篇文章。
此時,我們要求θ,只需要使θ的似然函數L(θ)極大化,然後極大值對應的θ就是我們的估計。在數學中求一個函數的最值問題,即為求導,使導數為0,解方程式即可(前提是函數L(θ)連續可微)。在深度學習中,θ是包含多個參數的向量,運用高等數學中的求偏導,固定其中一個變數的思想,即可求出極致點,解方程。
總結而言:
最大似然估計,只是一種概率論在統計學的應用,它是參數估計的方法之一。說的是已知某個隨機樣本滿足某種概率分布,但是其中具體的參數不清楚,參數估計就是通過若干次試驗,觀察其結果,利用結果推出參數的大概值。最大似然估計是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以乾脆就把這個參數作為估計的真實值。
求最大似然函數估計值的一般步驟:
(1)寫出似然函數;
(2)對似然函數取對數,並整理;(化乘為加)
(3)求導數,令導數為0,得到似然方程;
(4)解似然方程,得到的參數即為所求。
四、EM演算法
期望最大(Expectation Maximization, 簡稱EM)演算法,稱為機器學習十大演算法之一。它是一種從不完全數據或有數據丟失的數據集(存在隱含變數)中求解概率模型參數的最大似然估計方法。
現在,我們重新回到男女生身高分布的例子。我們通過抽取100個男生身高,並假設身高分布服從於高斯分布,我們通過最大化其似然函數,可以求的高斯分布的參數θ=[u, ∂]T了,對女生同理。但是,假如這200人,我們只能統計到其身高數據,但是沒有男女信息(其實就是面對200個樣本,抽取得到的每個樣本都不知道是從哪個分布抽取的,這對於深度學習的樣本分類很常見)。這個時候,我們需要對樣本進行兩個東西的猜測或者估計了。
EM演算法就可以解決這個問題。假設我們想估計知道A和B兩個參數,在開始狀態下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反過來知道了B也就得到了A。可以考慮首先賦予A某種初值,以此得到B的估計值,然後從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。
在男女生身高分布的例子中,我們運用EM演算法的思想。首先隨便猜一下男生的高斯分布參數:均值和方差。假設均值是1.7米,方差是0.1米,然後計算出每個人更可能屬於第一個還是第二個正態分布中。這是第一步,Expectation。在分開了兩類之後,我們可以通過之前用的最大似然,通過這兩部分,重新估算第一個和第二個分布的高斯分布參數:均值和方差。這是第二步,Maximization。然後更新這兩個分布的參數。這是可以根據更新的分布,重新調整E(Expectation)步驟...如此往復,迭代到參數基本不再發生變化。
這里原作者提到了一個數學思維,很受啟發,轉給大家看一眼(比較雞湯和啰嗦,大家可以跳過)
這時候你就不服了,說你老迭代迭代的,你咋知道新的參數的估計就比原來的好啊?為什麼這種方法行得通呢?有沒有失效的時候呢?什麼時候失效呢?用到這個方法需要注意什麼問題呢?呵呵,一下子拋出那麼多問題,搞得我適應不過來了,不過這證明了你有很好的搞研究的潛質啊。呵呵,其實這些問題就是數學家需要解決的問題。在數學上是可以穩當的證明的或者得出結論的。那咱們用數學來把上面的問題重新描述下。(在這里可以知道,不管多麼復雜或者簡單的物理世界的思想,都需要通過數學工具進行建模抽象才得以使用並發揮其強大的作用,而且,這裡面蘊含的數學往往能帶給你更多想像不到的東西,這就是數學的精妙所在啊)
五、EM演算法的簡單理解方式
在提出EM演算法的推導過程之前,先提出中形象的理解方式,便於大家理解整個EM演算法,如果只是實現深度學習模型,個人認為可以不需要去看後面的演算法推導,看這個就足夠了。
坐標上升法(Coordinate ascent):
圖中的直線式迭代優化的途徑,可以看到每一步都會向最優值靠近,而每一步前進的路線都平行於坐標軸。那麼我們可以將其理解為兩個未知數的方程求解。倆個未知數求解的方式,其實是固定其中一個未知數,求另一個未知數的偏導數,之後再反過來固定後者,求前者的偏導數。EM演算法的思想,其實也是如此。使用坐標上升法,一次固定一個變數,對另外的求極值,最後逐步逼近極值。對應到EM上,E步:固定θ,優化Q;M步:固定Q,優化θ;交替將極值推向最大。
六、EM演算法推導
現在很多深度學習框架可以簡單調用EM演算法,實際上這一段大家可以不用看,直接跳過看最後的總結即可。但是如果你希望了解一些內部的邏輯,可以看一下這一段推導過程。
假設我們有一個樣本集{x(1),…,x(m)},包含m個獨立的樣本(右上角為樣本序號)。但每個樣本i對應的類別z(i)是未知的(相當於聚類),也即隱含變數。故我們需要估計概率模型p(x,z)的參數θ(在文中可理解為高斯分布),但是由於裡麵包含隱含變數z,所以很難用最大似然求解,但如果z知道了,那我們就很容易求解了。
首先放出似然函數公式,我們接下來對公式進行化簡:
對於參數估計,我們本質上的思路是想獲得一個使似然函數最大化的參數θ,現在多出一個未知變數z,公式(1)。那麼我們的目標就轉變為:找到適合的θ和z讓L(θ)最大。
對於多個未知數的方程分別對未知的θ和z分別求偏導,再設偏導為0,即可解方程。
因為(1)式是和的對數,當我們在求導的時候,形式會很復雜。
這里我們需要做一個數學轉化。我們對和的部分,乘以一個相等的函數,得到(2)式,利用Jensen不等式的性質,將(2)式轉化為(3)式。(Jensen不等式數學推到比較復雜,知道結果即可)
Note:
Jensen不等式表述如下:
如果f是凸函數,X是隨機變數,那麼:E[f(X)]>=f(E[X])
特別地,如果f是嚴格凸函數,當且僅當X是常量時,上式取等號。參考鏈接: https://blog.csdn.net/zouxy09/article/details/8537620
至此,上面的式(2)和式(3)不等式可以寫成:似然函數L(θ)>=J(z,Q),那麼我們可以通過不斷的最大化這個下界J(z,Q)函數,來使得L(θ)不斷提高,最終達到它的最大值。
現在,我們推導出了在固定參數θ後,使下界拉升的Q(z)的計算公式就是後驗概率,解決了Q(z)如何選擇的問題。這一步就是E步,建立L(θ)的下界。接下來的M步,就是在給定Q(z)後,調整θ,去極大化L(θ)的下界J(在固定Q(z)後,下界還可以調整的更大)。
總結而言
EM演算法是一種從不完全數據或有數據丟失的數據集(存在隱藏變數)中,求解概率模型參數的最大似然估計方法。
EM的演算法流程:
1>初始化分布參數θ;
重復2>, 3>直到收斂:
2>E步驟(Expectation):根據參數初始值或上一次迭代的模型參數來計算出隱性變數的後驗概率,其實就是隱性變數的期望。作為隱藏變數的現估計值:
3>M步驟(Maximization):將似然函數最大化以獲得新的參數值:
這個不斷迭代的過程,最終會讓E、M步驟收斂,得到使似然函數L(θ)最大化的參數θ。
在L(θ)的收斂證明:
❺ EM Algorithm
EM演算法和之前學的都不太一樣,EM演算法更多的是一種思想,所以後面用幾個例子講解,同時也會重點講解GMM高斯混合模型。
極大似然估計這裡面用的比較多。假設我們想要知道我們學生身高的分布,首先先假設這些學生都是符合高斯分布 我們要做的就是要估計這兩個參數到底是多少。學生這么多,挨個挨個來肯定是不切實際的,所以自然就是抽樣了。
為了統計學生身高,我們抽樣200個人組成樣本
我們需要估計的參數 首先估計一下抽到這兩百人的概率一共是多少,抽到男生A的概率 抽到學生B的概率 所以同時抽到這兩個學生的概率就是 那麼同時抽到這200個學生的G概率
最後再取一個對數就好了:
似然函數的執行步驟:
1.得到似然函數
2.取對數整理
3.求導數,另導數為零
4.解方程得到解
首先引出凸函數的概念 那麼就是凸函數,所以它的圖像就是一個勾形的,看起來是一個凹函數,實際上是凸函數。
正常來看先是要引入一個最大似然函數: 但這樣其實是和難求的,P(x|θ)完全混在了一起,根本求不出來,所以我們要引入一個輔助變數z。
所以我們引入隱變數的原因是為了轉化成和這幾個高斯模型相關的式子,否則無從下手。化簡一下上式子: 既然z可以指定x,那麼我們只需要求解出z就好了。
注意上面凸函數所提到的一個期望性質,這里就可以使用了。因為雖然優化了上面的式子,還是不能求出來,因為z變數實在是太抽象了,找不到一個合適的公式來表示它。EM的一個方法就是用優化下界函數的方法來達到優化目標函數的目的。
既然z很抽象,那麼我們就需要一個轉變一下。對於每一個樣例x都會對應一個z,那麼假設一個分布Q(z)是滿足了z的分布的,而Q(z)滿足的條件是 Qi意味著每一個x對應的z都會對應著一個Q了,這里有點復雜,再詳細解釋一下。一個x對應一組z,z是一個向量,但是每一個z又會分別對應一個一個分布Q。以為最後得到的z不會是一個數字,而是一個概率,也就是說Q(z)得到的是這個x樣例屬於這個類別的概率是多少。而z的數量,一個是當前有多少個分布混合在一起的數量。
再梳理一下:現在的樣本是xi,那麼每一個xi將會對應著一組的z,每一個xi同時也會對應著一個分布Qi,z其實就是反應了這個樣本是來自於哪個分布的。比如這個x是A1分布做了3,A2分布做了5,那麼z可能就是={3,5}。所以Qi(z)得到的是這個x屬於這些個分布的概率,也就是說這些分布對x做了多少百分比的功,自然就是要等於1了。
還要注意的是,上面的 這個並不能得到Qi(z)就是分布對x做了多少功的結論,得到這個結論是後面下界函數與目標函數相等得到的。這里只是知道了總和等於1,因為是分布的總和嘛。
現在就到了公式的化簡:
仔細看一下這個式子 這個式子其實就是求 的期望,假設 ,那麼可以利用上面 。於是化簡:
這個時候就得到了下界函數,上面也講過了,想要相等,自然就是x要是常數,所以 既然 ,而且z也是一樣的,因為一個樣本嘛。所以上下加和(如果是離散的,那就sum一下,連續的那就積分,這里是離散的,所以就是sum一下)。於是有
於是有:
這就是整一個EM演算法的框架了,可以看到其實沒有比較具體的演算法,大致上就是一個框架。那麼問題來了,怎麼樣證明這東西是一個收斂的??
可以直接把高斯混合模型代入EM框架裡面。
存在多個高斯分布混合生成了一堆數據X,取各個高斯分布的概率是 ,第i個高斯分布的均值是 ,方差是 ,求法φ,μ,σ。
按照套路,第一個E-step求出Q,於是有:
意思就是求出第i個樣本屬於第j個分布的概率是多少。之後就是M-step了,就是化簡了:
這里可能需要解釋一下,根據 至於條件,因為很明顯,z是隱變數,只是指明了x是屬於哪個類別,和μ,Σ沒有什麼關系,所以直接忽略那兩個參數了,所以P(z)是沒有那兩個參數的,z是代表了分布,所以每一個分布的概率肯定是包括了,所以就只有一個概率的參數。P(x|z)是本身的概率,就是已經知道分布是那個了,求屬於這個分布的概率是多少,既然已經選定了分布那麼自然就不需要再看φ了,因為φ是各個分布的概率。
現在有兩個硬幣AB,進行5次試驗每一次投10次,並不知道是哪個硬幣投的,求兩種硬幣的正面的概率。
首先E-step:
首先先初始化一下,
第一個試驗選中A的概率:
同樣求得
計算機出每一個試驗的概率然後相加求均值。
之後就是M-step了:
方差的求解就不玩了,主要就是迭代求解μ和φ的值了。
首先是生成數據,4個高斯分布,每一個高斯分布的sigma都是一樣的,不一樣的只有μ和α,也就是φ,習慣上把前面的一個參數叫做權值,所以用α來表示。
這四個模型的比例分別是1:2:3:4,使用EM來找到他們屬於的類別。
其實如果用kmeans聚類的話更加快速,但是這里還是用EM。
E-step:
就是按照公式來求解w即可,求解每一個分布對樣本點做了多少的功,之後求單個樣本點求比例。
M-step:
直接按照公式優化即可。
運行函數。看看結果:
結果其實還是相差不大。達到預期。
上面所講的其實只是一種理解方法,在李航老師的統計學習方法裡面是另一種比較厲害的解法:
1.E-step:求出Q函數。
2.M-step:利用Q函數求極大值。
其實這兩種方法是完全一樣的,Q函數就是下界函數,
EM和Kmeans演算法其實很類似,事實上步驟基本可以用EM框架來替換,但是Kmeans演算法是硬分類,說一不二,但是EM演算法不太一樣,是軟分類,百分之幾是那個,百分之幾是這個。
缺點也還是有的:初值敏感,局部最優。因為存在了隱變數,所以導致了直接對x做極大似然是不可行的,log已經在sum的外面了。所以EM演算法就轉向了下界函數,而這種方法本來就不保證找到局部最優解。
如果將樣本看作觀察值,潛在類別看作是隱藏變數,那麼聚類問題也就是參數估計問題。如果一個目標函數存在多個變數,那麼梯度下降牛頓法這些逼近方法就用不了了。但我們可以使用坐標上升方法,固定一個變數,對另外一個求導數,然後替換最後逐步逼近極值點。對應到EM演算法也是一樣,E步求隱含的z變數,Mstep求解其他參數。