1. EM算法-數學基礎
2. EM算法-原理詳解
3. EM算法-高斯混合模型GMM
4. EM算法-高斯混合模型GMM詳細代碼實現
5. EM算法-高斯混合模型GMM+Lasso
1. 前言
概率模型有時既含有觀測變量(observable variable),又含有隱變量或潛在變量(latent variable),如果僅有觀測變量,那么給定數據就能用極大似然估計或貝葉斯估計來估計model參數;但是當模型含有隱變量時,需要一種含有隱變量的概率模型參數估計的極大似然方法估計——EM算法
2. EM算法原理
EM算法稱為期望極大值算法(expectation maximizition algorithm,EM),是一種啟發式的迭代算法。
EM算法的思路是使用啟發式的迭代方法,既然我們無法直接求出模型分布參數,那么我們可以先猜想隱含數據(EM算法的E步),接着基於觀察數據和猜測的隱含數據一起來極大化對數似然,求解我們的模型參數(EM算法的M步)。
可以通過K-Means算法來簡單理解EM算法的過程。
E步:
在初始化K個中心點后,我們對所有的樣本歸到K個類別。
M步:
在所有的樣本歸類后,重新求K個類別的中心點,相當於更新了均值。
3. EM算法公式
對於\(m\)個樣本觀察數據\(x=(x^{(1)},x^{(2)},...x^{(m)})\)中,找出樣本的模型參數\(\theta\),極大化模型分布的對數似然函數如下,假設數據中有隱含變量\(z=(z^{(1)},z^{(2)},...z^{(m)})\)
加入隱含變量公式變為如下,注意到下式中\(Q_i(z(i))\)是一個分布,因此\(\sum Q_i(z(i))logP(x(i),z(i)|θ)\)可以理解為\(logP(x(i),z(i)|θ)\)基於條件概率分布\(Q_i(z(i))\)的期望。
根據Jensen不等式,(1)式變為(2)
4. EM算法流程
輸入:觀察數據\(x=(x^{(1)},x^{(2)},...x^{(m)})\),聯合分布\(p(x,z|\theta)\), 條件分布\(p(z|x,\theta)\), EM算法退出的閾值\(\gamma\)。
- 隨機初始化模型參數\(\theta\)的初值\(\theta^0\)。
- E步:計算聯合分布的條件概率期望
- M步:極大化\(L(\theta,\theta^j)\),得到\(θ^{j+1}\):
- 重復2,3兩步,直到極大似然估計\(L(\theta,\theta^j)\)的變化小於\(\gamma\)
5. 總結
如果我們從算法思想的角度來思考EM算法,我們可以發現我們的算法里已知的是觀察數據,未知的是隱含數據和模型參數,在E步,我們所做的事情是固定模型參數的值,優化隱含數據的分布,而在M步,我們所做的事情是固定隱含數據分布,優化模型參數的值。
本節介紹的EM算法是通用的EM算法框架,其實EM算法有很多實現方式,其中比較流行的一種實現方式是高斯混合模型(Gaussian Mixed Model)。