EM算法直观认识
Expectation Maximization, 字面翻譯為, "最大期望".
我個人其實一直都不太理解EM算法, 從我個人的淵源來看, 之前數理統計里面的參數估計, 也是沒有太理解. 但困難總是要面對, 必須啃下它, 因其真的不太直觀, 所以先舉個經典的栗子.
栗子-硬幣正面概率
理想我是上帝
假設咱有兩個硬幣, 分別為 coin A 和 coin B
同樣假設我們上帝, 知道做實驗是用的哪個硬幣 的情況下, 扔的結果如下: (H 表正面, T表反面)
B: H T T T H H T H T H
A: H H H H T H H H H H
A: H T H H H H H T H H
B: H T H T T T H H T T
A: T H H H T H H H T H
用 Maximum likelihood (極大似然), 這里就是用樣本去估計總體呀, 對應結果如下:
| 知道是哪個幣 | coin A | coin B |
|---|---|---|
| B | 5正, 5反 | |
| A | 9正, 1反 | |
| A | 8正, 2反 | |
| B | 4正, 6反 | |
| A | 7正, 3反 |
站在上帝視角, 已經知道每次實驗是使用誰(硬幣A, B), 因此很容易統計得到:
(hat heta_A = frac {9+8+7}{24 + 6} = frac {24}{30} = 0.8)
同樣易知:
$hat heta_B = frac {5 + 4 }{9+11} = frac {9}{20} =0.45 $
此刻就可以發現, coin A 有問題, 正面朝上的概率竟達到 0.8, 這不可能.
現實我是凡人
還是剛剛那個扔硬幣的結果, 沒有上帝視角,不知道是用的哪個硬幣
? : H T T T H H T H T H
? : H H H H T H H H H H
? : H T H H H H H T H H
? : H T H T T T H H T T
? : T H H H T H H H T H
這時候要計算 硬幣 A, B 的正面朝上的概率, 即引出了 EM算法.
假設1: 不同硬幣,對于每一個結果是 H 或 T 也是有一個概率, so, 先假設 A, B 正面朝上概率:
(hat heta_A^{(0)} = 0.6)
(hat heta^{(0)}_B = 0.5)
假設2: 對于每次試驗的結果, 是來自不同硬幣也有一個概率, (和要為1的哦) (Q_i(z = A) = 0.6, Q_i(z = B) = 0.4)
于是就可得到試驗結果 (E-step):
(0.45A, 0.55B) : H T T T H H T H T H
(0.80A, 0.20B) : H H H H T H H H H H
(0.73A, 0.27B) : H T H H H H H T H H
(0.35B, 0.65B) : H T H T T T H H T T
(0.65A, 0.35B) : T H H H T H H H T H
| 預估是A,B的概率下 | coin A | coin B |
|---|---|---|
| 5正5反 => A: (5 * 0.45, 5 * 0.45); B: (5 * 0.55, 5 * 0.55) | 2.2正; 2.2反 | 2.8正; 2.8反 |
| 9正1反 => A: (9 * 0.80, 1 * 0.80); B: (9 * 0.20, 1 * 0.20) | 7.2正; 0.8反 | 1.8正, 0.2反 |
| 8正2反 => A: (8 * 0.73, 2 * 0.73); B: (8 * 0.27, 2 * 0.27) | 5.9正; 1.5反 | 2.1正; 0.5反 |
| 4正6反 => A: (4 * 0.35, 6 * 0.35); B: (4 * 0.65, 6 * 0.65) | 1.4正; 2.1反 | 2.6正; 3.9反 |
| 7正3反 => A: (7 * 0.65, 3 * 0.65); B: (7 * 0.35, 3 * 0.35) | 4.5正; 1.9反 | 2.5正; 1.1反 |
| 合計 | 21.3正; 8.6反 | 11.7正; 8.4反 |
此時, 則是相當于更新了一次估計值:
(hat heta_A ^{(1)}= frac {21.3}{21.3 + 8.6} = 0.71)
同理,
(hat heta_B ^{(1)}= frac {11.7}{11.7 + 8.4} = 0.58)
這樣, 其實又影響了 E-step:
(0.45A, 0.55B) -> maybe (0.48A, 0.52B)
(0.80A, 0.20B) -> maybe (0.71A, 0.29B)
(0.73A, 0.27B) -> maybe (0.68A, 0.32B)
(0.35B, 0.65B) -> maybe (0.42A, 0.58B)
(0.65A, 0.35B) -> maybe (0.73A, 0.27B)
這樣, 其實也影響了每次的結果, 從而又更新了估計參數, 然后就一直循環, 直到收斂退出.....,
假設是第20次, 收斂啦, 得到A, B 正面朝上 的最終預測概率:
(hat heta_B ^{(20)}= 0.82)
(hat heta_B ^{(20)}= 048)
為啥一定收斂, 本文后面會證明一波的, 老鐵們, 先穩住
發現: 這樣得到的結果, 跟上帝視角, 是差不多的, EM近似模擬出了真實參數, 一個字, 穩!
其實也發現了, EM所完成的核心任務, 就是跟咱大一的統計學里面學的, 根據樣本分布, 來估計總體的分布參數.用處其實還是很大的, 在市場研究領域, 比如估計兩種產品的分布...
EM 核心步驟
E-step: Compute a distribution on the labels of the points, using current parameters.
M-step: Update parameters using current guess of label distribution.
其實都不用翻譯, 字面意思, 一看就懂了,對吧, 結合前面扔硬幣的栗子. 好吧...嗯, 還是再舉個統計的栗子吧.
case1-高斯分布參數
假設有一堆觀測點, 假設已經知道, 有A, B兩個類別, 分別為不同的高斯分布 , 對應每個點, 屬于分別兩個不同的高斯分布的概率是怎樣的?
E-step: 確定(初始化) 每個點, 分別屬于 A, B 這兩個高斯分布的概率分別是多少 (一 一對應的哦)
M-step: 在 E-step 已經算出每個點的屬于哪個分布的概率下, 更新一次估計參數的值.
這樣其實, 參數值的改變, 也同時影響了 E-step .....
參考上面扔硬幣的栗子
反復這樣的 E->M->E->M... 直到收斂
case2-類梯度上升的方式
上升, 下降都一樣哈, 只是求解有些像而已, 不影響.
回歸在大二學的數理統計時, 在知道樣本觀測數據的前提下, 要求總體的參數分布 參數估計, 通常的方法就是極大似然法.
貝斯理論 vs 古典概率派: 貝派認為, 總體的參數,不是一個固定值, 是滿足某種概率模型分布的隨機變量.
通常是, 構造一個似然函數, 假設是 (L( heta) = log P(x: heta)) , 當然, 似然函數不一定是凸函數
凸函數(convex): 最大的優點是, 有一個全局最優解
log: 是在求解的時候, 方便乘法變加法, 不想再解釋了, 再重復我自己都要吐了
假設呢, 則不同的狀態 t 下, 估計出來的參數分別為:
( heta ^{(t)}, heta ^{(t+1)}, heta ^{(t+2)}, heta ^{(t+3)}, heta ^{(t+n)} ...)
對于每個狀態呢, 同時構造一個convex 函數, 假設是 (g( heta)), 希望在 (L( heta) 在 heta ^{(t)}) 這個點的 極小值 和 (g( heta)) 在這個點的極大值是 重合的. 在這個前提下, 可以求關于 (g( heta)) 的最優化.
.... 重復這個過程即可, 最后收斂, 跟梯度上升其實差不多的思想.
如上就是EM算法的直觀認識了, 下篇就正式推導一波~
總結
- 上一篇: 使用application log分析F
- 下一篇: One order search dyn