在已知每個實驗的硬幣分別是 A 和 B 的情況下,我們可以直接使用最大似然估計來求解硬幣 A 和 B $ p a $ 和 $ p b $ 正向出現的概率。 由於每個實驗獨立丟擲十次,可以看出實驗結果遵循 $ b(10, p a) $ 和 $ b(10, p b) $ 的二項分布
設幣A的$i$實驗面朝上$y a$的次數,幣B的$i$實驗$y b $的次數,分別進行$n a$實驗和$n b$實驗,a的似然估計函式可得到:
l_a=\prod^__a}p_a^_a}(1-p_a)^_a} $
b 的似然估計函式為:
l_b=\prod^__b}p_b^_b}(1-p_b)^_b} $
分別取對數和推導 $p a$,我們得到:
frac=\sum^_(frac}-\frac})
設導數為 0 並得到:
p_a = \frac^y_a^}^y_a^+\sum_^(10-y_a^)}
以同樣的方式,我們得到: $ p b = frac y b } y b + sum (10-y b )}
替換資料,即查詢:
p_a = \frac=\frac=0.8\\\p_b = \frac=\frac=0.45 $$
當我們不知道每個實驗選擇哪種硬幣時,我們無法直接估計 A 和 B 的最大可能性。 在這種情況下,需要使用 em 演算法通過引入乙個潛在變數 $z$ 來對幣概率進行建模,並指定 $z=0$ 中的 $z 表示當前幣是幣 a,$z=1$ 表示當前幣是幣 b,$p(z=0)= pi$。 在這種情況下,模型引數 $ theta=( pi,p a,p b)$,我們可以知道 $y$ 與 $z$ 相關,這需要 $p(y|theta)$,您需要找到 $p(y, z|theta)$。
計算 $z i$ 和 $y i$ 分別是為 $i$ 實驗選擇的硬幣(未知)和正面,則所有實驗的似然函式變為。
p(y|\theta)=\prod^_p(y=y_i|\theta)=\prod^_\sum_ }p(y=y_i,z=z_i|\theta)=\prod_^\sum_}p(z=z_i|\theta)p(y=y_i|z=z_i,\theta)\\=\prod_^[pi\ p_a^(1-p_a)^+1-\pi)\ p_b^(1-p_b)^]
最大似然估計引數為:
hat\theta=\arg\max_\theta\ln p(y|\theta) $
這個問題很難找到解析解,因此需要使用em迭代法來求近似解。
因為。 $ ln p(y|\theta)=\sum_^\ln[\pi\ p_a^(1-p_a)^+1-\pi)\ p_b^(1-p_b)^]
帶有“和”的對數極難求解,由詹森不等式獲得。
ln p(y|\theta) = \sum^_\ln \sum_}p(y=y_i,z=z_i|\theta)\\=\sum^_\ln \sum_}q_i(z_i,\theta)\frac\\\ge\sum^_ sum_}q_i(z_i,\theta)\ln \frac=q(\theta;\theta) $
而。 $ q_i(z_i,\theta)=p(z=z_i|y=y_i, \theta)=\frac\\\=\frac\ p_a^(1-p_a)^+z_i(1-\pi)\ p_b^(1-p_b)^}p_a^(1-p_a)^+1-\pi)\ p_b^(1-p_b)^}
可以看出,$1-q i(0)=q i(1)$
在步驟e中,我們通過統計計算每個實驗的$q i(z)$,然後固定引數$theta$,更改引數$theta'=( pi',p a',p b')$以最大化以下函式:
q(\theta’;\theta)=\sum_^\sum_}q_i(z_i,\theta)\ln \frac\\\=\sum_^q_i(0,\theta)\ln \frac\ p_a’^(1-p_a’)^sum_^q_i(1,\theta)\ln \frac\ p_b’^(1-p_b’)^
$ pi$ 收益率的偏導數:
frac=\frac^nq_i(0,\theta)}-frac^nq_i(1,\theta)}
設導數為 0 得到
pi’=\frac^q_i(0,\theta)}
以同樣的方式,我們得到: $ p a'= frac y iq i(0, theta)} 10q i(0, theta)} p b'= frac y iq i(1, theta)} 10q i(1, theta)}
這是 m 步驟的更新公式。
em 演算法要求我們手動指定乙個初始值,然後以終止條件 $|theta’-\theta||epsilon 1$ 或 $|q(\theta’; theta)-q(\theta; \theta)||epsilon_2$
指定初始值 $ pi=05$,$p_a=0.6$,$p_b=0.5$,最終迭代過程如下:
iteration 1 pi = 0.597 p_a = 0.713, p_b = 0.581iteration 2 pi = 0.591 p_a = 0.733, p_b = 0.555iteration 3 pi = 0.582 p_a = 0.752, p_b = 0.532iteration 4 pi = 0.572 p_a = 0.767, p_b = 0.516iteration 5 pi = 0.564 p_a = 0.777, p_b = 0.509iteration 6 pi = 0.556 p_a = 0.783, p_b = 0.506iteration 7 pi = 0.550 p_a = 0.786, p_b = 0.506iteration 8 pi = 0.545 p_a = 0.788, p_b = 0.507iteration 9 pi = 0.541 p_a = 0.789, p_b = 0.508iteration 10 pi = 0.538 p_a = 0.790, p_b = 0.509iteration 11 pi = 0.535 p_a = 0.791, p_b = 0.510iteration 12 pi = 0.533 p_a = 0.791, p_b = 0.510iteration 13 pi = 0.531 p_a = 0.792, p_b = 0.511iteration 14 pi = 0.529 p_a = 0.792, p_b = 0.512iteration 15 pi = 0.528 p_a = 0.792, p_b = 0.512iteration 16 pi = 0.527 p_a = 0.792, p_b = 0.512no update in params, stop iterationresult pi = 0.527 p_a = 0.792, p_b = 0.512