本文試圖用最簡單的例子、最淺顯的方式說明em(expectation maximization)演算法的應用場景和使用方法,而略去公式的推導和收斂性的證明。
以下內容翻譯自《data-intensive text processing with mapreduce》。
maximum likelihood estimation(mle)是要選擇乙個最佳引數θ*,使得從訓練集中觀察到和情況出現的概率最大。即模型:
舉例來說明。如下圖
乙個小黑球沿著乙個三角形的木樁滾入杯子a或b中,可建立乙個概率模型,由於是二值的,設服從bernoulli分布,概率密度函式為:
p是k=0的概率,也是我們要使用mle方法要確定的引數。
在上面的滾球實驗中,我們令y是待確定的引數,x是觀察到的結果。連續10次實驗,觀察到的結果是x=(b,b,b,a,b,b,b,b,b,a)。小球進入a杯的概率為p,則滿足10次實驗的聯合概率為:
為了使x發生的概率最大,令上式一階求導函式為0,得p=0.2。
如上圖,現在又多了兩塊三角形木樁,分別標記序號為0,1,2。並且實驗中我們只知道小球最終進入了哪個杯子,中間的路線軌跡無從得知。
x取值於表示小球進入哪個杯子。y取值於表示小球進入杯子前最後一步走的是哪條線路。小球在3個木樁處走右邊側的概率分別是p=(p0,p1,p2)。跟上例中一樣,x表示訓練集觀測到的值,p是模型引數,而這裡的y就是"隱含變數"。
假如我們做了n次實驗,小球經過路徑0,1,2,3的次數依次是n0,n1,n2,n3,則:
現在我們來考慮這個概率模型:pr(x,y;θ)。只有x是可觀察的,y和θ都是未知的。
經過一組實驗,我們觀察到x的一組取值x=(x1,x2,...,xl),則聯合概率為:
mle就是要求出最佳的引數θ*,使得:
這個時候要求θ*,」令一階求函式等於0「的方法已經行不通了,因為有隱含變數y的存在。實現上上式很難找到一種解析求法,不過一種迭代的爬山演算法可求解該問題。
em是一種迭代演算法,它試圖找到一系列的估計引數θ(0),θ(1),θ(2),....使得訓練資料的marginal likelihood是不斷增加的,即:
演算法剛開始的時候θ(0)賦予隨機的值,每次迭代經歷乙個e-step和乙個m-step,迭代終止條件是θ(i+1)與θ(i)相等或十分相近。
e-step是在θ(i)已知的情況下計算x=x時y=y的後驗概率:
f(x|x)是乙個權值,它表示觀測值x在所有觀察結果x中出現的頻率。
其中em演算法收斂性的證明需要用到jensen不等式,這裡略去不講。
就拿上文那個3個木樁的滾球實驗來說,做了n次實驗,滾進3個杯子的次數依次是na,nb,nc。
先給e-step:
同時我們注意到
其它情況下y的後驗概率都為0。
m-step:
我們只需要計算非0項就可以了
上面的每行第3列和第4列相乘,最後再按行相加,就得到關於θ(i+1)的函式,分別對p0,p1,p2求偏導,令導數為0,可求出p'0,p'1,p'2。
這裡補充乙個求導公式:
我們這個例子非常簡單,計算θ(1)已經是最終的解了,當然你要計算出θ(2)才下此結論。
對於一般的模型,em演算法需要經過若干次迭代才能收斂,因為在m-step依然是採用求導函式的方法,所以它找到的是極值點,即區域性最優解,而非全域性最優解。也正是因為em演算法具有區域性性,所以它找到的最終解跟初始值θ(0)的選取有很大關係。
在求解hmm的學習問題、確立高斯混合模型引數用的都是em演算法。
機器學習 EM演算法詳細推導和講解
今天不太想學習,炒個冷飯,講講機器學習十大演算法裡有名的em演算法,文章裡面有些個人理解,如有錯漏,還請讀者不吝賜教。然而現在我面臨的是這種情況,我手上的資料是四川人和東北人的身高合集,然而對於其中具體的每乙個資料,並沒有標定出它來自 東北人 還是 四川人 我想如果把這個資料集的概率密度畫出來,大約...
EM演算法詳細推導
em演算法推導 em演算法舉例 em演算法收斂性證明 一點小思考 參考文獻 概率模型有時既含有觀測變數,又含有隱變數或潛在變數。如果概率模型的變數都是觀測變數,那麼給定觀測資料,直接根據極大似然估計求解模型引數。em演算法是一種迭代演算法,用於含有隱變數的概率模型引數的極大似然估計或者極大後驗概率估...
Adaboost演算法 詳細講解
最近在做整合學習的時候,對adaboost非常感興趣,就自己復現了這個程式。首先提公升方法是基於這樣的乙個思想 對於乙個複雜的任務來說,通將多個專家的判斷進行適當的綜合所得到的判斷,這樣得到的結果會比單個專家的判斷要好。adaboost做法的核心問題adaboost演算法流程 假設給定乙個二分類的訓...