em演算法是一種迭代優化策略,由於它的計算方法中每一次迭代都分兩步,其中乙個為期望步(e步),另乙個為極大步(m步),所以演算法被稱為em演算法(expectation-maximization algorithm)。
其基本思想是:首先根據己經給出的觀測資料,估計出模型引數的值;然後再依據上一步估計出的引數值估計缺失資料的值,再根據估計出的缺失資料加上之前己經觀測到的資料重新再對引數值進行估計,然後反覆迭代,直至最後收斂,迭代結束。
概率模型有時候既含有觀測變數,又含有隱變數或潛在變數,如果概率模型的變數都是觀測變數,那麼給定資料,可以直接用極大似然估計法,或貝葉斯估計方法估計模型引數,但是當模型含有隱變數時,就不能簡單的使用這些方法,em演算法就是含有隱變數的概率模型引數的極大似然估計法,或極大後驗概率估計法,我們討論極大似然估計,極大後驗概率估計與其類似。
假如我們目前有100個男生和100個女生的身高,但是我們不知道這200個資料中哪個是男生的身高,哪個是女生的身高,即抽取得到的每個樣本都不知道是從哪個分布中抽取的。這個時候,對於每個樣本,就有兩個未知量需要估計:
(1)這個身高資料是來自於男生資料集合還是來自於女生?
(2)男生、女生身高資料集的正態分佈的引數分別是多少?
上面的例子中,我們只能觀測到每個人的身高,而不知道這個身高是男還是女,即這個身高是來自男生的身高的概率分布還是女生身高的概率分布,這個就是隱變數,我們沒有觀測到的資料。但我們又想根據現有的觀測資料取求得男生和女生身高的概率分布的引數,上面例子中即正態分佈的均值和方差。
那麼,對於具體的身高問題使用em演算法求解步驟下圖所示。
(1)初始化引數:先初始化男生身高的正態分佈的引數:如均值=1.65,方差=0.15
(2)計算每乙個人更可能屬於男生分布或者女生分布;
(3)通過分為男生的n個人來重新估計男生身高分布的引數(最大似然估計),女生分布也按照相同的方式估計出來,更新分布。
(4)這時候兩個分布的概率也變了,然後重複步驟(1)至(3),直到引數不發生變化為止。
具體推導可以看《統計學習方法》對應章節,講得非常詳細。
輸入:觀測變數資料y,隱變數資料z,聯合分布p(y
,z∣θ
)p(y,z|\theta)
p(y,z∣
θ),條件分布p(z
∣y,θ
)p(z|y,\theta)
p(z∣y,
θ); 輸出:模型引數θ
\theta
θ (1)選擇引數的初值θ
0\theta^0
θ0,開始迭代
(2) e步:記θ
i\theta^i
θi為第i次迭代引數θ
\theta
θ的估計值,在第i+1次迭代的e步,計算q(θ
,θi)
=ez[
logp
(y,z
∣θ)∣
y,θi
]=∑z
logp
(y,z
∣θ)p
(z∣y
,θi)
\begin q(\theta,\theta^i)&=e_[logp(y,z|\theta)|y,\theta^i]\\ &=\sum_logp(y,z|\theta)p(z|y,\theta^i) \end
q(θ,θi
)=e
z[l
ogp(
y,z∣
θ)∣y
,θi]
=z∑
logp
(y,z
∣θ)p
(z∣y
,θi)
這裡,p(z
∣y,θ
i)p(z|y,\theta^i)
p(z∣y,
θi)是在給定觀測資料y和當前的引數估計θ
i\theta^i
θi下隱變數資料z的條件概率分布;
(3) m步:求使q(θ
,θi)
q(\theta,\theta^i)
q(θ,θi
)極大化的θ
\theta
θ,確定第i+1次迭代的引數的估計值θi+
1\theta^
θi+1
,θ i+
1=ar
gmaxθ
q(θ,
θi)\theta^=arg \max \limits_q(\theta,\theta^)
θi+1=a
rgθmaxq
(θ,θ
i)q (θ
,θi)
q(\theta,\theta^)
q(θ,θi
)是em演算法的核心,稱為q函式(q function),這個是需要自己構造的。
(4) 重複第(2)步和第(3)步,直到收斂.
機器學習演算法 EM演算法
介紹 理論分析 現在,已經知道目標函式 似然函式 maxj p x 假設隱變數為z,那麼可以寫成j zp x z 我們假設當前的引數為 i 那麼可以得到 j j i logp x logp x i log zp x,z logp x i log z p z x,i p x z p z x,i log...
機器學習演算法 EM演算法
e步 利用當前估計的引數值,求出在該引數下隱含變數的條件概率值 計算對數似然的期望值 m步 結合e步求出的隱含變數條件概率,求出似然函式下界函式的最大值 尋找能使e步產生的似然期望最大化的引數 值 然後,新得到的引數值重新被用於e步.直到收斂到區域性最優解。note 每次迭代實際在求q函式及其極大,...
機器學習 EM演算法
em演算法 最大期望演算法 expectation maximization algorithm,em 是為處理缺失資料的引數的估計問題,主要分為e步和m步交替組成,對給定的初始引數依賴較大。from numpy import import numpy as np import matplotlib...