【十大經典數據挖掘算法】系列html
極大似然(Maximum Likelihood)估計爲用於已知模型的參數估計的統計學方法。好比,咱們想了解拋硬幣是正面(head)的機率分佈\(\theta\);那麼能夠經過最大似然估計方法求得。假如咱們拋硬幣\(10\)次,其中\(8\)次正面、\(2\)次反面;極大似然估計參數\(\theta\)值:git
\[ \hat{\theta} = \arg\underset{\theta}{\max}\, l(\theta) = \arg\underset{\theta}{\max}\, \theta^8(1-\theta)^2 \]github
其中,\(l(\theta)\)爲觀測變量序列的似然函數(likelihood function of the observation sequence)。對\(l(\theta)\)求偏導算法
\[ \frac{\partial l(\theta)}{\partial \theta} = \theta^7(1-\theta)(8-10\theta) \Rightarrow \hat{\theta} = 0.8 \]機器學習
由於似然函數\(l(\theta)\)不是凹函數(concave),求解極大值困難。通常地,使用與之具備相同單調性的log-likelihood,如圖所示
ide
凹函數(concave)與凸函數(convex)的定義如圖所示:
函數
從圖中能夠看出,凹函數「容易」求解極大值,凸函數「容易」求解極小值。學習
EM算法(Expectation Maximization)是在含有隱變量(latent variable)的模型下計算最大似然的一種算法。所謂隱變量,是指咱們沒有辦法觀測到的變量。好比,有兩枚硬幣A、B,每一次隨機取一枚進行拋擲,咱們只能觀測到硬幣的正面與反面,而不能觀測到每一次取的硬幣是否爲A;則稱每一次的選擇拋擲硬幣爲隱變量。spa
用Y表示觀測數據,Z表示隱變量;Y和Z連在一塊兒稱爲徹底數據( complete-data ),觀測數據Y又稱爲不徹底數據(incomplete-data)。觀測數據的似然函數:3d
\[ P(Y | \theta) = \sum_{Z} P(Z|\theta)P(Y|Z,\theta) \]
求模型參數的極大似然估計:
\[ \hat{\theta} = \arg\underset{\theta}{\max}\, \log P(Y | \theta) \]
由於含有隱變量,此問題沒法求解。所以,Dempster等人提出EM算法用於迭代求解近似解。EM算法比較簡單,分爲兩個步驟:
\[ Q(\theta, \theta^{(i)}) = \mathbb{E}_Z[\log P(Y,X|\theta)| Y, \theta^{(i)}] \]
\[ \theta^{(i+1)} = \arg\underset{\theta}{\max}\, Q(\theta, \theta^{(i)}) \]
如此迭代直至算法收斂。關於算法的推導及收斂性證實,可參看李航的《統計學習方法》及Andrew Ng的《CS229 Lecture notes》。這裏有一些極大似然以及EM算法的生動例子。
[2]中給出極大似然與EM算法的實例。如圖所示,有兩枚硬幣A、B,每個實驗隨機取一枚拋擲10次,共5個實驗,咱們能夠觀測到每一次所取的硬幣,估計參數A、B爲正面的機率\(\theta = (\theta_A, \theta_B)\),根據極大似然估計求解
若是咱們不能觀測到每一次所取的硬幣,只能用EM算法估計模型參數,算法流程如圖所示:
隱變量\(Z\)爲每次實驗中選擇A或B的機率,則第一個實驗選擇A的機率爲
\[ P(z_1 = A |y_1, \theta^{(0)}) = \frac{P(z_1 = A |y_1, \theta^{(0)})}{P(z_1 = A |y_1, \theta^{(0)}) + P(z_1 = B |y_1, \theta^{(0)})} = \frac{0.6^5*0.4^5}{0.6^5*0.4^5 + 0.5^{10}} = 0.45 \]
按照上面的計算方法可依次求出隱變量\(Z\),而後計算極大化的\(\theta^{(i)}\)。通過10次迭代,最終收斂。
[1] 李航,《統計學習方法》.
[2] Chuong B Do & Serafim Batzoglou, What is the expectation maximization algorithm?
[3] Pieter Abbeel, Maximum Likelihood (ML), Expectation Maximization (EM).
[4] Rudan Chen,【機器學習算法系列之一】EM算法實例分析.