1. 程式人生 > >EM演算法---基於隱變數的引數估計

EM演算法---基於隱變數的引數估計

注:本文中所有公式和思路來自於李航博士的《統計學習方法》一書,我只是為了加深記憶和理解寫的本文。】

EM演算法算是機器學習中有些難度的演算法之一,也是非常重要的演算法,曾經被譽為10大資料探勘演算法之一,從標題可以看出,EM專治帶有隱變數的引數估計,我們熟悉的MLE(最大似然估計)一般會用於不含有隱變數的引數估計,應用場景不同。

首先舉一個帶有隱變數的例子吧,假設現在有1000人的身高資料,163、153、183、203、173等等,不出意外肯定是男生或者女生組成的這1000個人,那麼這個163cm我們就沒辦法知道是男生的還是女生,這其中男女就是一個隱變數,我們只能看到163cm,但是看不到背後男女這個隱變數。

用Y表示觀測資料,Z表示隱變數(男女身高例子中就是男女這個隱變數),Y和Z在一起表示為完全資料,假設Y、Z的聯合分佈概率為P(Y,Z|θ),對數似然為logP(Y,Z|θ),EM演算法通過迭代求得L(θ)=logP(Y,Z|θ)的最大似然估計,每次迭代分為兩步:E-step ,求期望。M-step,求最大化,下面來介紹EM演算法。

EM演算法的提出

假定有訓練集:


現在有m個獨立樣本。希望從中找到該組資料的模型p(x, z)的引數,

我們可以通過最大似然估計建立目標函式,然後取對數似然:


事實上,EM演算法是通過迭代逐步接近最大化L(θ),那麼我們現在不妨假設第i次迭代後θ的估計值為θi,我們當然希望重新估計的θ能使似然函式L(θ)有所增大,並逐漸逼近最大值,因此,我們做差:


利用jensen不等式,我們找到其下界:


雖然看上去有點亂,其實就是在裡邊偷偷的再裡邊乘上一個P和除上一個P,沒任何難度,

令:


則:


由此可知B為L的一個下界,那麼我們根據上式可得:


那麼任何能使B增加的的θ一定也可以使L(θ)增大,為了使L(θ)儘可能的增大,我們可以選擇一個θi+1使得B達到最大:


既然是求θi+1,那麼就省略掉常數項:

這就完成了EM演算法的一次迭代,EM演算法其實就是通過不斷求解下界的極大化逼近求解歲數似然函式的極大值演算法。

下圖使一個比較直觀表示EM演算法求解過程:


從這幅圖中不難看出,EM演算法不能保證找到全域性最最優值。

演算法:

輸入:觀測資料Y,隱變數Z,聯合分佈P(Y,Z|θ

),條件分佈P(Z|Y,θ);

輸出:模型的引數;

(1): 選擇引數的初始值θ0,開始迭代

(2): E步:記θi為第i次迭代的引數θ的估值,在第θ+1次的迭代,計算:

其中P(Z|Y,θi)是給定觀測資料Y和當前引數估計θi的前提下,隱變數Z的條件概率分佈。

(3): M步:求使Q(θ,θi)極大值的θ,確定第i+1次的引數估計值θi:

(4): 重複第2、3步,直到收斂。

說明:

完全資料的對數似然函式logP(Y,Z|θ)關於在給定Y和θi的前提下對未觀測資料Z的條件概率分佈P(Z|Y,θi)的期望稱為Q函式:

關於EM演算法的幾點注意:

步驟(1): θ引數初值是可以隨便給定的,但是EM演算法對於初值選擇是敏感的。

步驟(2): E-step求得Q(θ,θi),Q函式中Z是隱變數,Y是觀測資料,Q(θ,θi)中第一個變元是表示要極大化的引數,第二個表示當前的估計值,每次迭代實際上是在求Q的最大化。

步驟(3): M-step中試求Q(θ,θi)的最大值,得到θi,完成一次迭代

步驟(4): 給出迭代終止條件,一般是較小的正數ε1,ε2,若滿足:


EM演算法的過程就介紹到這裡,更細緻的推導這裡就不再介紹了,歡迎批評指正。