11.EM算法
11.EM算法
本文主要轉自:https://www.cnblogs.com/pinard/p/6912636.html
EM算法也稱期望最大化(Expectation-Maximum,簡稱EM)算法,它是一個基礎算法,是很多機器學習領域算法的基礎,比如隱式馬爾科夫算法(HMM), LDA主題模型的變分推斷等等。本文就對EM算法的原理做一個總結。
11.1.EM算法要解決的問題
我們經常會從樣本觀察數據中,找出樣本的模型參數。 最常用的方法就是極大化模型分布的對數似然函數。
但是在一些情況下,我們得到的觀察數據有未觀察到的隱含數據,此時我們未知的有隱含數據和模型參數,因而無法直接用極大化對數似然函數得到模型分布的參數。怎么辦呢?這就是EM算法可以派上用場的地方了。
EM算法解決這個的思路是使用啟發式的迭代方法,既然我們無法直接求出模型分布參數,那么我們可以先猜想隱含數據(EM算法的E步),接著基于觀察數據和猜測的隱含數據一起來極大化對數似然,求解我們的模型參數(EM算法的M步)。由于我們之前的隱藏數據是猜測的,所以此時得到的模型參數一般還不是我們想要的結果。不過沒關系,我們基于當前得到的模型參數,繼續猜測隱含數據(EM算法的E步),然后繼續極大化對數似然,求解我們的模型參數(EM算法的M步)。以此類推,不斷的迭代下去,直到模型分布參數基本無變化,算法收斂,找到合適的模型參數。
從上面的描述可以看出,EM算法是迭代求解最大值的算法,同時算法在每一次迭代時分為兩步,E步和M步。一輪輪迭代更新隱含數據和模型分布參數,直到收斂,即得到我們需要的模型參數。
一個最直觀了解EM算法思路的是K-Means算法,見之前寫的K-Means聚類算法原理(http://www.cnblogs.com/pinard/p/6164214.html)。在K-Means聚類時,每個聚類簇的質心是隱含數據。我們會假設K個初始化質心,即EM算法的E步;然后計算得到每個樣本最近的質心,并把樣本聚類到最近的這個質心,即EM算法的M步。重復這個E步和M步,直到質心不再變化為止,這樣就完成了K-Means聚類。
當然,K-Means算法是比較簡單的,實際中的問題往往沒這么簡單。
11.2.EM算法的推導
11.3.EM算法流程
11.4.EM算法的收斂性思考
11.5.EM算法的一些思考
如果我們從算法思想的角度來思考EM算法,我們可以發現我們的算法里已知的是觀察數據,未知的是隱含數據和模型參數,在E步,我們所做的事情是固定模型參數的值,優化隱含數據的分布,而在M步,我們所做的事情是固定隱含數據分布,優化模型參數的值。比較下其他的機器學習算法,其實很多算法都有類似的思想。比如SMO算法(支持向量機原理(四)SMO算法原理(http://www.cnblogs.com/pinard/p/6111471.html)),坐標軸下降法(Lasso回歸算法: 坐標軸下降法與最小角回歸法小結(http://www.cnblogs.com/pinard/p/6018889.html)), 都使用了類似的思想來求解問題。
總結
- 上一篇: 百合的功效与作用(百合的功效)
- 下一篇: 好词好句摘抄大全(千年一叹好词好句)