今天把em演算法又重新看了一遍,於是決定對em演算法做一些整理,把em演算法的整個流程理清。
對於一般的給定樣本,我們可以用最大似然估計或者損失函式來求解模型的引數,此時的樣本資料是完備的。但是對於某些樣本資料可能由兩個部分組成,乙個是我們觀測到的資料,還有一些是我們無法觀測的資料,也就是隱變數,對於這類問題,一般的最大似然估計是無法求解的。於是便有了em演算法。
我們來看乙個具體的例子:
假如說我們現在有學生的身高資料10000個,但是我們不知道哪些是男性哪些是女性,那麼現在如果要求我們估計一下對任意乙個樣本估計其性別。(em演算法可以計算出其後驗概率,比如說對於任意乙個樣本,可以計算出是男性的概率是多少,女性的概率是多少):
對於上述問題,我們首先做乙個假設,那就是男生的身高服從均值是u1,方差是a1^2的高斯分布,記做n(u1,a1^2),女生的身高服從均值是u2,方差是a2^2的高斯分布,記做n(u2,a2^2)。(注:用em演算法估計引數時首先確定模型,這裡假設其服從高斯分布)。對於任意乙個樣本,假設其來自於是選取男生高斯分布產生的是可能性是aph1,是選取女生高斯分布產生的可能性是aph2。
於是我們需要估計的引數就是aph1,aph2,a1,u1,a2,u2。對於任意乙個樣本,比如說是x=1.82m,那我們根據經驗可以猜測是男生的概率是0.8,是女生的概率是0.2(這兩個概率是我們猜測的,也可以是不同值,但是一般來說是男生的可能性比較大),對於x=1.5m,我們可以猜測是女生的概率是0.9,是男生的概率是0.1,對於其他的樣本我們都可以做出這種猜測。於是對於其他的樣本我們都可以做出這種猜測。可見下表:
表1 對於某乙個樣本是男性的概率
x1x2
x3xn
0.80.4
0.20.5
表2 對於某乙個樣本是女性的概率
x1x2
x3xn
0.20.6
0.80.5
對於上述兩個表我們可以做如下理解,一般來說,乙個樣本要麼是男性,要麼是女性,這是我們在知道樣本是男性的情況下可以確定,也就是在已知情況下,乙個樣本是男性或者是女性的概率為1,於是計算均值時,直接把男性的身高資料加起來除以男性身高的數目即可得到男性身高的均值。
但是在未知情況下,對於乙個樣本,我們只能猜測這個樣本是男是女,比如說是男的為0.8,女的為0.2,那麼這個樣本就是0.8個男的,0.2個女的(這裡可能從數學的角度理解),那麼我們就可以重新統計男生的個數和女生的個數,分別為男生的概率的加和與女生的概率的加和。那麼u1就可以這麼計算
對於每乙個樣本,如果我們事先給定了模型的引數。那麼我們可以通過下面的等式計算某乙個樣本是是哪乙個模型產生的:
式中的也就是上述所說的,表示第i個樣本是第k個模型產生的概率,模擬於上例,也就是第i個樣本是男生的概率或者第i個樣本是女生的概率。於是通過給定乙個初始值aph1,aph2,a1,u1,a2,u2,我們可以不用像上述手動猜測,可以直接計算出第i個樣本是第k個模型產生的概率,然後根據上述的式子計算出新的aph1,aph2,a1,u1,a2,u2,如此不斷迭代,最後即可收斂到乙個值,即是我們需要估計的引數。上述的理解是一種尤拉式的理解。並沒有進行嚴格的數學證明。
我們可以使用高斯的方式進行證明。假設隱變數服從乙個概率分布,嚴格的高斯證明通過找到最大釋然函式的乙個下界,然後求這個下界的最大值不斷逼近最大似然函式。關於高斯的證明可以在很多教材中找到,這裡不在贅述。
EM演算法的一些感想
em演算法是最大似然估計方法 引數估計方法的一種 為什麼要引入em呢 我覺得 因為引數theta本身是依賴於資料的完整特徵 但是只觀察了部分特徵x 因此需要引入隱藏特徵z 才能建立起theta與x,z的關係。怎麼開始這個過程呢?我們現在自己的腦袋裡假設存在乙個theta 當然我們未知 利用這個the...
em演算法的一些理解
資料 不完全資料,即含有隱變數 無法觀測的變數 目的 求出模型中所有引數的合理估計。為什麼使用em演算法 不同於極大似然估計,可以顯式的求出使得資料似然度最大的引數,在含有隱變數的模型中,由於需要對隱變數做全概率展開,所以最終的似然函式是求和的形式,而且關鍵的是沒有隱變數資料所以無法求出最大似然度對...
關於EM演算法的一些心得感悟
最近因為準備面試,重新看了下em演算法。覺得還是有了新的收穫。大家都知道em演算法是用來解決含有隱含變數的不完全資料問題。一般部落格中舉的最多的例子就是男生女生身高的問題。具體為 假如有一批人,我們已經測得了每個人的身高,這些人中包含男生和女生,問如何分別求解得到男生和女生的身高分布的引數 一般假設...