机器学习:EM算法
一、初識EM算法
EM算法也稱期望最大化(Expectation-Maximum,簡稱EM)算法。
它是一個基礎算法,是很多機器學習領域算法的基礎,比如隱式馬爾科夫算法(HMM)等等。
EM算法是一種迭代優化策略,由于它的計算方法中每一次迭代都分兩步,
- 其中一個為期望步(E步)
- 另一個為極大步(M步)
所以算法被稱為EM算法(Expectation-Maximization Algorithm)。
EM算法受到缺失思想影響,最初是為了解決數據缺失情況下的參數估計問題,其算法基礎和收斂有效性等問題在Dempster、Laird和Rubin三人于1977年所做的文章《Maximum likelihood from incomplete data via the EM algorithm》中給出了詳細的闡述。其基本思想是:
- 首先根據己經給出的觀測數據,估計出模型參數的值;
- 然后再依據上一步估計出的參數值估計缺失數據的值,再根據估計出的缺失數據加上之前己經觀測到的數據重新再對參數值進行估計;
- 然后反復迭代,直至最后收斂,迭代結束。
EM算法計算流程:
二、EM算法介紹
1 極大似然估計
1.1 問題描述
假如我們需要調查學校的男生和女生的身高分布 ,我們抽取100個男生和100個女生,將他們按照性別劃分為兩組。
然后,統計抽樣得到100個男生的身高數據和100個女生的身高數據。
如果我們知道他們的身高服從正態分布,但是這個分布的均值 μ\muμ 和方差 δ2\delta^2δ2是不知道,這兩個參數就是我們需要估計的。
問題:我們知道樣本所服從的概率分布模型和一些樣本,我們需要求解該模型的參數.
我們已知的條件有兩個:
- 樣本服從的分布模型
- 隨機抽取的樣本。
我們需要求解模型的參數。
根據已知條件,通過極大似然估計,求出未知參數。
總的來說:極大似然估計就是用來估計模型參數的統計學方法。
1.2 用數學知識解決現實問題
1.3 最大似然函數估計值的求解步驟
2 EM算法實例描述
我們目前有100個男生和100個女生的身高,但是我們不知道這200個數據中哪個是男生的身高,哪個是女生的身高, 即抽取得到的每個樣本都不知道是從哪個分布中抽取的。
這個時候,對于每個樣本,就有兩個未知量需要估計:
(1)這個身高數據是來自于男生數據集合還是來自于女生?
(2)男生、女生身高數據集的正態分布的參數分別是多少?
具體問題如下圖:
對于具體的身高問題使用EM算法求解步驟如下:
(1)初始化參數: 先初始化男生身高的正態分布的參數:如均值=1.65,方差=0.15;
(2)計算分布: 計算每一個人更可能屬于男生分布或者女生分布;
(3)重新估計參數: 通過分為男生的n個人來重新估計男生身高分布的參數(最大似然估計),女生分布也按照相同的方式估計出來,更新分布。
(4)這時候兩個分布的概率也變了,然后重復步驟(1)至(3),直到參數不發生變化為止。
3 EM算法流程
三、EM算法實例
1 一個超級簡單的案例
假設現在有兩枚硬幣1和2,,隨機拋擲后正面朝上概率分別為P1,P2。為了估計這兩個概率,做實驗,每次取一枚硬幣,連擲5下,記錄下結果,如下:
| 1 | 正正反正反 | 3正-2反 |
| 2 | 反反正正反 | 2正-3反 |
| 1 | 正反反反反 | 1正-4反 |
| 2 | 正反反正正 | 3正-2反 |
| 1 | 反正正反反 | 2正-3反 |
可以很容易地估計出P1和P2,如下:
P1 = (3+1+2)/ 15 = 0.4
P2= (2+3)/10 = 0.5
到這里,一切似乎很美好,下面我們加大難度。
2 加入隱變量z后的求解
還是上面的問題,現在我們抹去每輪投擲時使用的硬幣標記,如下:
| Unknown | 正正反正反 | 3正-2反 |
| Unknown | 反反正正反 | 2正-3反 |
| Unknown | 正反反反反 | 1正-4反 |
| Unknown | 正反反正正 | 3正-2反 |
| Unknown | 反正正反反 | 2正-3反 |
好了,現在我們的目標沒變,還是估計P1和P2,要怎么做呢?
顯然,此時我們多了一個隱變量z,可以把它認為是一個5維的向量(z1,z2,z3,z4,z5),代表每次投擲時所使用的硬幣,比如z1,就代表第一輪投擲時使用的硬幣是1還是2。但是,這個變量z不知道,就無法去估計P1和P2,所以,我們必須先估計出z,然后才能進一步估計P1和P2。
但要估計z,我們又得知道P1和P2,這樣我們才能用最大似然概率法則去估計z,這不是雞生蛋和蛋生雞的問題嗎,如何破?
答案就是先隨機初始化一個P1和P2,用它來估計z,然后基于z,還是按照最大似然概率法則去估計新的P1和P2,如果新的P1和P2和我們初始化的P1和P2一樣,請問這說明了什么?(此處思考1分鐘)
這說明我們初始化的P1和P2是一個相當靠譜的估計!
就是說,我們初始化的P1和P2,按照最大似然概率就可以估計出z,然后基于z,按照最大似然概率可以反過來估計出P1和P2,當與我們初始化的P1和P2一樣時,說明是P1和P2很有可能就是真實的值。這里面包含了兩個交互的最大似然估計。
如果新估計出來的P1和P2和我們初始化的值差別很大,怎么辦呢?就是繼續用新的P1和P2迭代,直至收斂。
這就是下面的EM初級版。
2.1 EM初級版
2.2 EM進階版
3 小結
EM算法的實現思路:
- 首先根據己經給出的觀測數據,估計出模型參數的值;
- 然后再依據上一步估計出的參數值估計缺失數據的值,再根據估計出的缺失數據加上之前己經觀測到的數據重新再對參數值進行估計;
- 然后反復迭代,直至最后收斂,迭代結束。
上一篇:機器學習:支持向量機
下一篇:機器學習:HMM模型
總結
- 上一篇: WingIDE5注册破解的方法
- 下一篇: 金山词霸 [2009牛津版] 金山词霸