因做實驗的需要,最近在學習
em演算法,演算法介紹的資料網上是有不少,可是沒有一篇深入淺出的介紹,演算法公式太多,比較難懂,畢竟她是
ml領域
10大經典演算法之一
,且一般是結合
gmm模型的引數估計來介紹
em的。看過不少
em的資料,現將自己對
em演算法用稍微通俗點的文字寫下來,當然你可以用
gmm這個具體的例子來幫助理解。
問題的提出:給定一些樣本資料
x,且知道該資料是有
k個高斯混合產生的,現在要用給的樣本資料
x去估計模型的引數
sida,即在該引數
sida下產生
x資料的概率最大。
(其實就是個
mle估計
)原問題等價與求
sida,使得滿足
max(logp((x/sida))),那麼我們為什麼不直接用
mle去估計呢?通過關於
em演算法各種推導公式
(我這裡基本把這些公式都省略掉,因為介紹這方面的資料有不少
)可以看出,對數裡面有求和的項,說白了,就算用
mle的方法去做解不出來,因為各種求偏導什麼的很難求。
所以在em演算法中有個假設,即我們不僅知道觀測到的資料
x,而且還知道它屬於隱變數
z的哪一類
(在gmm中,隱變數
z表示各個單高斯模型
)。此時原問題的求解等價於求
sida,使得滿足
max(logp((x,z)/sida))。
為什麼2中就能用
mle解決呢,又通過檢視
em演算法各種公式推導可以看出,
2與1的不同在與
2中那些對數符號裡面沒有了求和項,所以各種求導方法等在此可以應用。
但是我們的
z變數是隱含的,也就是說未知的,那麼
2中的mle該怎麼做呢?通過查詢
em演算法的公式推導過程可以看出,
2中的求
max(logp((x,z)/sida))中的
sida可以等價與求
max[ez(logp(x,z)/sida)],即求
logp((x,z)/sida)關於變數
z的期望最大。
既然是求其關於
z的期望,那麼我們應該知道
z的概率分布才行。比較幸運的是在
em體系中,關於
z的分布也是很容易求得的,即
z的後驗分布
p(z/x,sida)很容易求出來。
e-step:首先隨便取一組引數
sida,求出
5中z的後驗分布,同時求出
logp((x,z)/sida)關於
z的期望,即
ez(logp((x,z)/sida))。
m-step:前面已經講到,
6中的期望最大用
mle很容易解決,所以
m-step時採用
mle求得新的引數
sida,又從前面的介紹可知,
6中的期望最大時的引數等價於原問題的求解的引數。
返回6,
7之間迭代,直到滿足
logp((x,z)/sida)基本不再變化。
EM演算法學習筆記詳解
基於李航的 統計學習方法 對em演算法學習的介紹性筆記。一.預備知識 在正式介紹em演算法之前,先介紹推導em演算法用到的數學基礎知識,包括凹凸函式,jensen不等式。上凸函式 函式f x 滿足對定義域上任意兩個數a,b都有f a b 2 f a f b 2 下凸函式 函式f x 滿足對定義域上任...
EM演算法學習 三
在前兩篇文章中,我們已經大致的講述了關於em演算法的一些基本理論和一些基本的性質,以及針對em演算法的缺點進行的優化改進的新型em演算法,研究之後大致就能夠進行初步的了解.現在在這最後一篇文章,我想對em演算法的應用進行一些描述 em演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這...
機器學習 03 EM演算法學習筆記
假設有兩枚硬幣a和b,每次選乙個硬幣來拋10次。現在已經進行了5輪 也就是選了5次硬幣,並分別拋了10次 結果如下 h表示正面,t表示反面 假定隨機拋擲後正面朝上概率分別為pa,pb。為了估計這兩個硬幣朝上的概率,咱們輪流拋硬幣a和b,每一輪都連續拋5次,總共5輪 硬幣結果統計a 正正反正反 3正 ...