標籤:

最大似然估計和EM演算法的關係是什麼?

Maximum likelihood estimation

Expectation maximization algorithm


EM是求極大似然解的一種演算法。


EM演算法可以看成是特殊情況下計算極大似然的一種演算法。

現實的數據經常有一些比較奇怪的問題,比如缺失數據、含有隱變數等問題。當這些問題出現的時候,計算極大似然函數通常是比較困難的,而EM演算法可以解決這個問題。

EM演算法已經有很多應用,比如最經典的Hidden Markov模型等。經濟學中,除了逐漸開始受到重視的HMM模型(例如Yin and Zhao, 2015),其他領域也有可能涉及到EM演算法,比如在Train的《Discrete Choice Methods with Simulation》就給出了一個mixed logit 模型的EM演算法。

如果我們關心的參數為θ,觀察到的數據為y,隱藏變數為z,那麼根據全概率公式:

P(y|	heta)=int P(y|z,	heta)f(z|	heta)dz

理論上,只要最大化這個密度函數的對數,就可以得到極大似然估計。然而問題是,對z進行積分很多情況下是非常困難的,特別是z的維數可能與樣本量一樣大,這個時候如果計算數值積分是非常恐怖的一件事情。

而EM演算法可以解決這個問題。根據貝葉斯法則,我們可以得到:

h(z|y,	heta)=frac{P(y|z,	heta)f(z|	heta)}{P(y|	heta)}

EM演算法的精髓就是使用這個公式處理z的維數問題。

直覺上,EM演算法就是一個猜測的過程:給定一個猜測θ",那麼可以根據這個猜測θ"和現實的數據計算隱藏變數取各個值的概率。有了z的概率之後,再根據這個概率計算更有可能的θ。

準確的來說,EM演算法就是如下的迭代過程:

	heta_{t+1}=argmax_	heta varepsilon  (	heta|	heta_t)=argmax_	hetaint h(z|y,	heta_t)ln[P(y|z,	heta)f(z|	heta)] dz

Train的《Discrete Choice Methods with Simulation》中有一張圖非常形象的描述了上面的過程:

圖中LL為上面的ln[P(y|θ)],ε可以大體等價為上面介紹的迭代過程的目標函數。可以證明的是,在θ_t處,LL和ε相切,且ε&<=LL。如此,每一次對ε函數求最小化,都給出了一個θ的最好猜測。從這個角度來講,EM演算法提供了計算極大似然函數的一個優化演算法,只不過最經典的Quasi-Newton方法直接使用導數信息更新θ。

使用EM演算法的關鍵主要是求出h函數。下面舉一個最經典的mixed-normal的例子,假設:

zsim B(p) \
x_1sim N(mu,1) \
x_2sim N(-mu,1) \
y=z*x_1+(1-z)*x_2

即觀察到的數據y以概率p來自兩個總體,兩個總體的均值假設分別為μ和-μ。

我們可以計算:

P(y|	heta)=phi(y-mu)cdot (1-p)+phi(y+mu)cdot p

其中θ={μ,p}。

同樣,可以計算:

h(z=1|y,	heta)=frac{(1-p)cdot phi(y-mu)}{(1-p)cdot phi(y-mu)+pcdot phi(y+mu)}=h_1(	heta)\
h(z=0|y,	heta)=frac{pcdot phi(y+mu)}{(1-p)cdot phi(y-mu)+pcdot phi(y+mu)}=h_0(	heta)

如此,上面的迭代過程就可以寫為:

 varepsilon  (	heta|	heta_t)=h_0(	heta_t)cdot ln[(1-p)cdot phi(y-mu)]+h_1(	heta_t)cdot  ln[pcdot phi(y+mu)]

給定一個初始值,不斷的迭代求上面的最優,就可以得到結果。

給出一個Julia代碼:

#!/usr/bin/julia
using Distributions
## DGP
N=1000
p=0.3
mu=2;
x1=randn(N)+mu
x2=randn(N)-mu
z=rand(N).&>p
y=z.*x1+(1-z).*x2
## initial values
p_t=0.5
mu_t=0.1
## begin iteration
for i=1:1000
## compute h0 and h1
h0=(1-p_t)*pdf(Normal(),y-mu_t)
h1=p_t*pdf(Normal(),y+mu_t)
h0=h0./(h0+h1)
h1=1-h0
## maximiaze, just grid search
max_p=Inf
max_mu=Inf
max_f=-Inf
for j=-3:0.1:3
for k=0.1:0.05:0.9
f=mean(h0.*log((1-k)*pdf(Normal(),y-j))+h1.*log(k*pdf(Normal(),y+j)))
if f&>max_f
max_p=k
max_mu=j
max_f=f
end
end
end
## convergence?
if p_t==max_p mu_t==max_mu
break
else
p_t=max_p
mu_t=max_mu
end
println("mu($(i))=$(mu_t), p($(i))=$(p_t)")
if i==1000
println("Does not converge.")
end
end
println("mu=$(mu_t), p=$(p_t)")

結果:

mu(1)=0.5, p(1)=0.45

mu(2)=1.7, p(2)=0.35

mu(3)=2.0, p(3)=0.3

mu=2.0, p=0.3

很快得到了準確的估計。


EM演算法分E步和M步,在這個迭代的演算法中,每經歷一次M步,實際上就做了一次MLE的估計,而本身EM可以看作是因為存在了隱變數而導致MLE無法直接使用,故而想出來的一種比較聰明演算法,但其本質依然是MLE。


謝邀。Expectation Maximization 不叫最大期望,而是EM演算法。兩者不是同一個層面的東西,不過有很多聯繫。EM 演算法分為 E 步和 M 步,其中的 M 步用的就是極大似然估計方法。

佔位周末再來好好答。

===

這個拖延症簡直了,轉眼都快一年了……這一年都沒怎麼用過這兩個東西,就簡單來答下我自己的理解吧。

首先是極大似然估計。極大似然估計常用於估計分布中的未知參數時,這時一般分布已知,僅有某些參數	heta未知。收集數據後,通過寫出對數似然函數並求其極大值點來獲得參數的估計。這樣在這個估計下,最有可能收集到當前的樣本。有時極大似然估計可以通過求導求極值得到,有時可能需要用數值解。

EM演算法面對的問題要比之前的更複雜一點。同樣假設是要估計已知分布中的某個未知參數,但不同的是分布可能是多元的p(x,z),其中X是能夠收集到的變數,而Z不能(latent variable)。如果Z能被觀測到,那就又回到了極大似然估計的問題。

E步是指expectation,具體求的是對數似然函數在X給定Z這個條件分布下的期望。因為對數似然函數依賴於Z,所以不能直接求極值。E步就相當於在求某個局部對數似然函數。

M指Maximize。就是對上一步求出的期望求極大似然估計。求出的極大似然估計再代入上一步求條件分布,如此迭代直到收斂。

其實就是因為不能觀測Z,就必須把各種不同的	heta和數據X的組合用來求各種不同的Z,然後再在各種不同的Z的分布下求極大似然估計。每次E步算出的對數似然函數的期望都是實際對數似然函數的一個下界(Jensen不等式),通過不斷更新這個下界,最終會找到極大似然估計。


1 為什麼需要EM演算法

我們遇到的大多數問題是這樣的:

A、已知一堆觀測數據X

B、和數據服從的統計模型

然後利用數據來估計統計模型中的參數

解決這個問題的思路是:最大似然,即模型的參數應該能使我們觀測到的這組數據的可能性最大。而這個似然函數就是:

P(X|Θ)

於是,參數估計的問題變成了最優化問題。而最優化問題求解中,最常用的就是直接求導獲得解析解,或者用梯度下降的方法去迭代。

不過,事情並非總這麼簡單。我們可能會遇到:

A、觀測值有缺失

B、難以得知P(X|Θ),當引入一個隱含變數時,才能寫出模型

當然,其實這兩種情況都是一種情況,就是必須引入一個隱含變數。這種情況下,對P(X|Θ)進行優化是困難的,通過引入隱含變數Z,把問題轉換為優化

P(X|Θ) = ∑P(X,Z|Θ)

是相對容易的。

然而在優化這個問題的時候,通常很難求導;或者導數是一個互相耦合的方程,這個時候,EM演算法就登場了。不過EM演算法和梯度下降法其實本質上都是不動點迭代法。

2、EM演算法是什麼?為什麼可以work?

EM演算法的思路是巧妙的構造了一個P(X|Θ)的下界,通過優化這個相對簡單的下界來優化最終目標P(X|Θ):

當然,也可以從Jensen不等式的角度來進行說明~~


EM演算法是解決含有隱變數的最大似然估計的演算法,因為似然函數一般是取對數的,而作為有隱變數的最大似然函數,它是的形式是和的對數,對這樣一個函數求導無疑是非常麻煩的,所以EM演算法非常巧妙的採用了不斷求下界函數最大值的方法來逼近實際的極大值。


從最大似然到EM演算法淺解

(EM演算法)The EM Algorithm


簡單幾句話,極大似然等價於極小化求解的分布p和empirical distribution的KL散度。

但是在包含隱變數的情況下就變成p(X|	heta)=sum_{Z}p(X,Z|	heta)。積掉Z很困難,所以我們去另一個分布q(不做任何假設,只要保證歸一化就行),然後用q代替軟來p(Z|X,	heta),一邊極小化pq的KL散度即E步,一邊極大化用q代替以後的似然即M步。

所以,問極大似然和EM有什麼關係。EM是在因為包含隱變數而無法直接極大似然的情況下,想辦法湊出來一個q來極大似然的方法,同理可以擴展到變分EM,甚至EP等演算法上。


關係:我們要估計模型的參數,考慮用最大似然估計的方法,但是有些模型直接用(導函數等於零的方式)去最大似然不好求導,所以用EM演算法來幫助最大化似然

所以說,就像是 [直接對似然函數求導使導函數為零] 是一種最大化似然的演算法一樣,[EM]也是一種用來最大化似然的演算法.

總的來說:直接用最大似然去估計模型的參數,比如說高斯混合模型的參數(各分支比例,各分支的均值和方差),你先試試直接對最大似然求導,是不是非常得難求!!!很麻煩的求導。

但是我們退而求其次,每次去最大化似然函數的下界,最大化似然函數的下界是比較容易的事情。怎麼取似然函數的下界呢?這就用到了Jensen』s inequality。雖然最大化似然函數的下界並不等同於最大化似然函數本身,但是多次迭代,迭代很多次後,最大化下界得到的參數估計和最大化似然函數本身得到的下界就很接近了,而且可以證明的是:每次迭代最大化下界得到的參數都比前一次迭代得到的參數 更接近最大化似然函數本身得到的參數。

具體參見Andrew Ng 的講義,非常通俗易懂地解釋了EM演算法和最大化似然估計的關係。

http://cs229.stanford.edu/notes/cs229-notes8.pdf

這篇是具體推導了如何將EM演算法用在最大化似然估計中(高斯混合模型的參數估計中)。

http://log.csdn.net/omade/article/details/27194451


四個相關量:可見變數A; 隱變數或缺失數據B;參數C;上一輪求得的參數C1。

說一下我的理解: EM演算法就是在求完全數據AB的對數似然函數logP(AB|C)的極大值。

1. 不過,由於隱變數或缺失數據B的存在,無法直接對這個函數求解。

2. 但是,缺失數據B在A和C1確定的情況下的概率分布P(B|AC1)是可求的。

3. 因此,對於所有可能的缺失數據B,我們都可以求得一個對數似然函數logP(AB|C)。

4. 然後,將這些對數似然函數按照B的概率分布求期望,這就得到了EM演算法的核心:Q函數。

5. 然後,求Q函數的極大值來近似logP(AB|C)的極大值,繼而得到參數C。

6. 注意:Q函數只是logP(AB|C)(完全數據的對數似然函數)的下界,EM演算法就是通過求似然函數下界的極大值來近似似然函數的極大值。但是Q函數取極大值的時候,logP(AB|C)未必是極大值。


EM演算法 寫的比較淺顯


EM演算法是一種有點貪婪的意味的,求解含有(尤其是離散)隱變數的極大似然估計的方法。

可以看我的專欄的這篇文章。

清雨的 Data Science 筆記 - K-Means筆記(三)數學原理(分享自知乎網)http://zhuanlan.zhihu.com/TsingJyuData/20463356


MLE就是MLE。

EM是為了求解含有latent variable模型的MLE。想求MLE但是有missing data時候,出門左轉MLE。


極大似然估計,是一種概率論在統計學的應用,它是參數估計的方法之一。

已知某個隨機樣本滿足某種概率分布,但是其中具體的參數不清楚,參數估計就是想通過若干次試驗,觀察其結果,利用結果推出參數的大概值。最大似然估計也是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以乾脆就把這個參數作為估計的真實值。

說的更直白一點就是已知結果求產生該結果最大可能的條件,即概率分布中的參數

EM演算法與上面相似,已知隨機樣本滿足某種概率分布 ,但我們並不知道他們的分布參數,所以乾脆先隨機估計出這些參數然後用這些估計出的參數得出每個樣本最有可能屬於那個類別(即估計隱變數)分類之後使用最大似然估計出每一類的概率分布參數。(這時就更新了第一步隨機估計的分布參數),利用新得到的參數再次進行分類,以此循環迭代。最終優化到滿足某個條件後跳出。得到最終分類,和各類分布參數結果。所以EM常用於數據聚類中。

E步驟:估計未知參數的期望值(隱變數)。

M步驟:重新估計分布參數,以使得數據的似然性最大

所以說最大似然其實就是EM演算法在迭代過程中的一步而已,是整個EM演算法的基礎


EM演算法是用來求解含有隱變數(未能觀測的變數)模型的極大似然估計。故其本質還是極大似然估計。

EM演算法是在極大化Q函數,而可以證明的是Q函數變大的時候,似然函數也在變大,所以本質還是在做極大似然估計。具體證明可以參看李航的《統計學習方法》第九章——EM演算法及其推廣。


直觀來講,em兩個步驟,是一個迭代的演算法,由於有些最大似然沒有顯式解,或者計算不方便,引入多一個隱含參數。如此e步估計參數,m步最大化聯合分布。


EM演算法參見zouxy09大神的博客,裡面很詳細易懂,最大似然估計參見《概率論與數理統計》第四版第七章,在下才疏學淺,引出大牛了


最大似然是一種思想,EM是實現這個思想的一種具體演算法。

最大似然跟EM的關係,可以類比為深度優先搜索與八皇后的關係,或者動態規劃與背包演算法的關係。


EM演算法原理詳解與高斯混合模型


推薦閱讀:

SAS, SPSS, AMOS, Stata之間的比較?
回歸分析中,x對y回歸和y對x回歸,也就是交換順序之後,為什麼係數不是倒數的關係?
如何評價多倫多大學新建的向量學院 (Vector Institute)?對人工智慧領域會有何影響?
真正意義的隨機數生成器存在嗎?

TAG:統計學 |