根据一系列独立样本 X = { x 1 , x 2 , … , x N } X=\{x_1,x_2, \dots , x_N\} X = { x 1 , x 2 , … , x N } ,以及模型 P ( X ; θ ) P(X;\theta) P ( X ; θ ) ,找到参数 θ \theta θ
P ( X ; θ ) = P ( x 1 , x 2 , … , x N ; θ ) = ∏ i P ( x i ; θ ) P(X;\theta) = P(x_1,x_2,\dots,x_N;\theta) = \prod \limits_i P(x_i;\theta) P ( X ; θ ) = P ( x 1 , x 2 , … , x N ; θ ) = i ∏ P ( x i ; θ )
→ θ M L = a r g m a x θ ∏ i P ( x i ; θ ) \to \theta_{ML} = \mathop{argmax}\limits_\theta \prod\limits_i P(x_i;\theta) → θ M L = θ a r g ma x i ∏ P ( x i ; θ )
例子1:抽球
假设一个袋子装有白球与红球,比例未知,现在抽取10次(每次抽完都放回,保证事件独立性),假设抽到了7次白球和3次红球,在此数据样本条件下,可以采用最大似然估计法求解袋子中白球的比例(最大似然估计是一种“模型已定,参数未知”的方法)。当然,这种数据情况下很明显,白球的比例是70%,但如何通过理论的方法得到这个答案呢?一些复杂的条件下,是很难通过直观的方式获得答案的,这时候理论分析就尤为重要了,这也是学者们为何要提出最大似然估计的原因。我们可以定义从袋子中抽取白球和红球的概率如下:
x 1 x_1 x 1 为第一次采样, x 2 x_2 x 2 为第二次, f f f 为模型, θ \theta θ 模型参数
f ( x 1 , x 2 ∣ θ ) = f ( x 1 ∣ θ ) × f ( x 2 ∣ θ ) f(x_1,x_2|\theta)=f(x_1|\theta)\times f(x_2|\theta) f ( x 1 , x 2 ∣ θ ) = f ( x 1 ∣ θ ) × f ( x 2 ∣ θ )
其中 a = b a = b a = b 是未知的,因此,我们定义似然 L L L 为:
L ( θ ∣ x 1 , x 2 ) = f ( x 1 , x 2 ∣ θ ) = ∏ i = 1 2 f ( x i ∣ θ ) L(\theta|x_1,x_2)=f(x_1,x_2|\theta)=\prod\limits_{i=1}^2f(x_i|\theta) L ( θ ∣ x 1 , x 2 ) = f ( x 1 , x 2 ∣ θ ) = i = 1 ∏ 2 f ( x i ∣ θ )
两边取 l n ln l n ,取 l n ln l n 是为了将右边的乘号变为加号,方便求导,左边的通常称之为对数似然:
ln L ( θ ∣ x 1 , x 2 ) = ln ∑ i = 1 2 f ( x i ∣ θ ) = ∑ i = 1 2 ln f ( x i ∣ θ ) \ln L(\theta|x_1,x_2)=\ln \sum\limits_{i=1}^2f(x_i|\theta)=\sum\limits_{i=1}^2\ln f(x_i|\theta) ln L ( θ ∣ x 1 , x 2 ) = ln i = 1 ∑ 2 f ( x i ∣ θ ) = i = 1 ∑ 2 ln f ( x i ∣ θ )
平均似然对数:
l ^ = 1 2 ln L ( θ ∣ x 1 , x 2 ) \hat{l}=\frac{1}{2}\ln L(\theta|x_1,x_2) l ^ = 2 1 ln L ( θ ∣ x 1 , x 2 )
最大似然估计的过程,就是找一个合适的 θ \theta θ ,使得平均对数似然的值为最大。因此,可以得到以下最大估计的公式:
θ ^ m l e = arg max θ ∈ Θ l ^ ( θ ∣ x 1 , x 2 ) \hat{\theta}_{mle}=\mathop{\arg \max}\limits_{\theta\in \Theta}\hat{l}(\theta|x_1,x_2) θ ^ m l e = θ ∈ Θ arg max l ^ ( θ ∣ x 1 , x 2 )
这里讨论的是2次采样的情况,拓展到多次采样的情况,n次采样最大似然估计公式:
将其描述为平均似然可得:
例子2:正态分布
正态分布的公式,当第一参数(期望)为0,第二参数(方差)为1时,分布为标准正态分布:
所以似然值为:
对上式求导可得:
综上所述,可得求解最大似然估计的一般过程为:
1. 写出似然函数;
2. 如果无法直接求导的话,对似然函数取对数;
3. 求导数 ;
4. 求解模型中参数的最优值。
假设有五个袋子,各袋中都有无限量的饼干(樱桃口味或柠檬口味),已知五个袋子中两种口味的比例分别是
1.樱桃 100% 2.樱桃 75% + 柠檬 25% 3.樱桃 50% + 柠檬 50% 4.樱桃 25% + 柠檬 75% 5.柠檬 100%
如果只有上所述条件,从同一个袋子中连续拿到2个柠檬饼干,那这个袋子最有可能是上述五个的哪一个?
上述最大似然估计有一个问题,就是没有考虑到模型本身的概率分布,下面我们扩展这个饼干的问题。
写出我们的
EM算法(Expectation–maximization Algorithm)
EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的每次迭代由两步组成:E步:求期望(Expectation);M步求极大(Maximization)。
算法步骤
率分布。
(4)重复第(2)步和第(3)步,直至收敛。
步骤说明
步骤(1)参数的初值可以任意选择,但需注意EM算法对初值是敏感的
Q函数
算法举例
假设只能观测到掷硬币的结果,不能观测掷硬币的过程。问如何估计三枚硬币正面出现的概率,即三硬币模型的参数。
即
这个问题没有解析解,只有通过迭代的方法求解。EM算法就是可以用于求解这个问题的一种迭代算法。
M步:计算模型参数的新估计值
进行数字计算。假设模型参数的初值取为
由M步迭代公式得到
继续M步,得
Copy import numpy as np
import math
pro_A , pro_B , por_C = 0.5 , 0.5 , 0.5
def pmf ( i , pro_A , pro_B , por_C ):
pro_1 = pro_A * math . pow (pro_B, data[i]) * math . pow (( 1 - pro_B), 1 - data[i])
pro_2 = pro_A * math . pow (pro_C, data[i]) * math . pow (( 1 - pro_C), 1 - data[i])
return pro_1 / (pro_1 + pro_2)
Copy class EM :
def __init__ ( self , prob ):
self . pro_A , self . pro_B , self . pro_C = prob
# e_step
def pmf ( self , i ):
pro_1 = self . pro_A * math . pow (self.pro_B, data[i]) * math . pow (( 1 - self.pro_B), 1 - data[i])
pro_2 = ( 1 - self . pro_A) * math . pow (self.pro_C, data[i]) * math . pow (( 1 - self.pro_C), 1 - data[i])
return pro_1 / (pro_1 + pro_2)
# m_step
def fit ( self , data ):
count = len (data)
print ( 'init prob: {} , {} , {} ' . format (self.pro_A, self.pro_B, self.pro_C))
for d in range (count):
_ = yield
_pmf = [self . pmf (k) for k in range (count) ]
pro_A = 1 / count * sum (_pmf)
pro_B = sum ([_pmf[k] * data[k] for k in range (count)]) / sum ([_pmf[k] for k in range (count)])
pro_C = sum ([( 1 - _pmf[k]) * data[k] for k in range (count)]) / sum ([( 1 - _pmf[k]) for k in range (count)])
print ( ' {} / {} pro_a: { :.3f } , pro_b: { :.3f } , pro_c: { :.3f } ' . format (d + 1 , count, pro_A, pro_B, pro_C))
self . pro_A = pro_A
self . pro_B = pro_B
self . pro_C = pro_C
测试
Copy data = [ 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 ]
em = EM (prob = [ 0.5 , 0.5 , 0.5 ])
f = em . fit (data)
next (f)
# 第一次迭代
f . send ( 1 )
# 第二次
f . send ( 2 )
em = EM (prob = [ 0.4 , 0.6 , 0.7 ])
f2 = em . fit (data)
next (f2)
f2 . send ( 1 )
f2 . send ( 2 )
θ ^ m l e = arg max θ ∈ Θ l ^ ( θ ∣ x 1 , x 2 , … , x n ) \hat{\theta}_{mle}=\mathop{\arg \max}\limits_{\theta\in \Theta}\hat{l}(\theta|x_1,x_2,\dots,x_n) θ ^ m l e = θ ∈ Θ arg max l ^ ( θ ∣ x 1 , x 2 , … , x n )
我们定义 M M M 为模型(也就是之前公式中的 f f f ),表示抽到白球的概率为 θ \theta θ ,而抽到红球的概率为 1 − θ 1-\theta 1 − θ ,因此10次抽取抽到白球7次的概率可以表示为:
P ( x 1 , x 2 , … , x 10 ∣ M ) = P ( x 1 ∣ M ) × P ( x 2 ∣ M ) … P ( x 10 ∣ M ) = θ 7 ( 1 − θ ) 3 P(x_1,x_2,\dots,x_{10}|M)=P(x_1|M)\times P(x_2|M)\dots P(x_{10}|M)=\theta^7(1-\theta)^3 P ( x 1 , x 2 , … , x 10 ∣ M ) = P ( x 1 ∣ M ) × P ( x 2 ∣ M ) … P ( x 10 ∣ M ) = θ 7 ( 1 − θ ) 3
l ^ = 1 10 ln P ( x 1 , x 2 , … , x 10 ∣ M ) = 1 10 ln [ θ 7 ( 1 − θ ) 3 ] \hat{l}=\frac{1}{10}\ln P(x_1,x_2,\dots, x_{10}|M)=\frac{1}{10}\ln[\theta^7(1-\theta)^3] l ^ = 10 1 ln P ( x 1 , x 2 , … , x 10 ∣ M ) = 10 1 ln [ θ 7 ( 1 − θ ) 3 ]
那么最大似然就是找到一个合适的 θ \theta θ ,获得最大的平均似然。因此我们可以对平均似然的公式对 θ \theta θ 求导,并令导数为0。
l ^ ′ ( θ ) = 7 θ 6 ( 1 − θ ) 3 − 3 θ 7 ( 1 − θ ) 2 = 0 ⇒ θ = 0.7 \hat{l}'(\theta)=7\theta^6(1-\theta)^3-3\theta^7(1-\theta)^2=0 \Rightarrow \theta=0.7 l ^ ′ ( θ ) = 7 θ 6 ( 1 − θ ) 3 − 3 θ 7 ( 1 − θ ) 2 = 0 ⇒ θ = 0.7
由此可得,当抽取白球的概率 θ \theta θ 为0.7时,最可能产生10次抽取抽到白球7次的事件。
假如有一组采样值 ( x 1 , … , x n ) (x_1,\dots,x_n) ( x 1 , … , x n ) ,我们知道其服从正态分布,且标准差已知。当这个正态分布的期望为多少时,产生这个采样数据的概率为最大?
这个例子中正态分布就是模型 M M M ,而期望就是前文提到的 θ \theta θ ,似然函数如下:
L ( θ ∣ x 1 , x 2 , … , x n ) = f ( x 1 , x 2 , … , x n ∣ θ ) = ∏ i = 1 n f ( x i ∣ θ ) L(\theta|x_1,x_2,\dots,x_n)=f(x_1,x_2,\dots,x_n|\theta)=\prod\limits_{i=1}^nf(x_i|\theta) L ( θ ∣ x 1 , x 2 , … , x n ) = f ( x 1 , x 2 , … , x n ∣ θ ) = i = 1 ∏ n f ( x i ∣ θ )
M = f ( x ) = 1 2 π σ exp ( − ( x − μ ) 2 2 σ 2 ) , N ( μ , σ 2 ) M=f(x)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2}),\ N(\mu,\sigma^2) M = f ( x ) = 2 π σ 1 exp ( − 2 σ 2 ( x − μ ) 2 ) , N ( μ , σ 2 )
P ( x 1 , x 2 , … , x n ∣ M ) = ( 1 2 π σ ) n exp ( − 1 2 σ 2 ∑ i = 1 n ( x − μ ) 2 ) P(x_1,x_2,\dots,x_n|M)=(\frac{1}{\sqrt{2\pi}\sigma})^n\exp(-\frac{1}{2\sigma^2}\sum\limits_{i=1}^n(x-\mu)^2) P ( x 1 , x 2 , … , x n ∣ M ) = ( 2 π σ 1 ) n exp ( − 2 σ 2 1 i = 1 ∑ n ( x − μ ) 2 )
l ^ ′ ( θ ) = 0 ⇒ ∑ i = 1 n x i − n μ = 0 ⇒ μ = 1 n ∑ i = 1 n x i \hat{l}'(\theta)=0\Rightarrow\sum\limits_{i=1}^nx_i-n\mu=0\Rightarrow\mu=\frac{1}{n}\sum\limits_{i=1}^nx_i l ^ ′ ( θ ) = 0 ⇒ i = 1 ∑ n x i − n μ = 0 ⇒ μ = n 1 i = 1 ∑ n x i
我们首先采用最大似然估计来解这个问题,写出似然函数。假设从袋子中能拿出柠檬饼干的概率为 p p p (我们通过这个概率 p p p 来确定是从哪个袋子中拿出来的),则似然函数可以写作
p ( 两个柠檬饼干 ∣ 袋子 ) = p 2 p(两个柠檬饼干|袋子) = p^2 p ( 两个柠檬饼干 ∣ 袋子 ) = p 2
由于 p p p 的取值是一个离散值,即上面描述中的0,25%,50%,75%,1。我们只需要评估一下这五个值哪个值使得似然函数最大即可,得到为袋子5。这里便是最大似然估计的结果。
假设拿到袋子1或5的概率 g g g 都是0.1,拿到2或4的概率都是0.2,拿到3的概率是0.4,那同样上述问题的答案呢?这个时候就变 M A P MAP M A P 了(若本例中拿到五个袋子概率都是0.2,即 θ \theta θ 为均匀分布时, M A L = M L E MAL = MLE M A L = M L E ;当 p ( θ ) p(\theta) p ( θ ) 不同时,即本例子, M A P ≠ M L E MAP \neq MLE M A P = M L E )。我们根据公式
θ M A P = a r g m a x θ P ( θ ) P ( x ∣ θ ) \theta_{MAP} = \mathop{argmax}\limits_\theta P(\theta)P(x|\theta) θ M A P = θ a r g ma x P ( θ ) P ( x ∣ θ )
M A P = p 2 × g MAP = p^2 \times g M A P = p 2 × g
根据题意的描述可知, p p p 的取值分别为0,25%, 50%, 75%, 1, g g g 的取值分别为0.1, 0.2, 0.4, 0.2, 0.1.分别计算出 M A P MAP M A P 函数的结果为:0, 0.0125, 0.125, 0.28125, 0.1.由上可知,通过 M A P MAP M A P 估计可得结果是从第四个袋子中取得的最高。
输入:观测变量数据 Y Y Y ,隐变量数据 Z Z Z ,联合分布 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P ( Y , Z ∣ θ ) ,条件概率分布 P ( Z ∣ Y , θ ) P(Z|Y,\theta) P ( Z ∣ Y , θ )
(1)选择参数的初值 θ ( 0 ) \theta^{(0)} θ ( 0 ) ,开始迭代
(2)E步:记 θ ( i ) \theta^{(i)} θ ( i ) 为第 i i i 次迭代参数 θ \theta θ 的估计值,在第 i + 1 i+1 i + 1 次迭代的E步,计算
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) Q(\theta,\theta^{(i)})=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}]=\sum\limits_Z\log P(Y,Z|\theta)P(Z|Y,\theta^{(i)}) Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = Z ∑ log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) )
这里, P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P ( Z ∣ Y , θ ( i ) ) 是在给定观测数据 Y Y Y 和当前的参数估计 θ ( i ) \theta^{(i)} θ ( i ) 下隐变量数据 Z Z Z 的条件概
(3)M步:求使 Q ( θ , θ ( i ) ) Q(\theta,\theta ^{(i)}) Q ( θ , θ ( i ) ) 极大化的 θ \theta θ ,确定第 i + 1 i+1 i + 1 次迭代的参数的估计值 θ ( i + 1 ) \theta^{(i+1)} θ ( i + 1 )
θ ( i + 1 ) = arg max θ Q ( θ , θ ( i ) ) \theta^{(i+1)}=\arg\max\limits_\theta Q(\theta,\theta^{(i)}) θ ( i + 1 ) = arg θ max Q ( θ , θ ( i ) )
步骤(2)E步求 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 。 Q Q Q 函数式中 Z Z Z 是未观测数据, Y Y Y 是观测数据。注意 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 的第 1 1 1 个变元表示要极大化的参数,第 2 2 2 个变元表示参数的当前估计值。每次迭代实际在求 Q Q Q 函数及其极大。
步骤(3)M步求 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 得极大化,得到 θ ( i + 1 ) \theta^{(i+1)} θ ( i + 1 ) ,完成一次迭代 θ ( i ) → θ ( i + 1 ) \theta^{(i)}\to\theta^{(i+1)} θ ( i ) → θ ( i + 1 ) ,每次迭代使似然函数增大或达到局部极值。
步骤(4)给出停止迭代的条件,一般是对较小的正数 ε 1 , ε 2 \varepsilon_1,\varepsilon_2 ε 1 , ε 2 ,满足 ∣ ∣ θ ( i + 1 ) − θ ( i ) ∣ ∣ < ε 1 ||\theta^{(i+1)}-\theta^{(i)}||<\varepsilon_1 ∣∣ θ ( i + 1 ) − θ ( i ) ∣∣ < ε 1 或 ∣ ∣ Q ( θ i + 1 , θ ( i ) ) − Q ( θ i , θ ( i ) ) ∣ ∣ < ε 2 ||Q(\theta^{i+1},\theta^{(i)})-Q(\theta^{i},\theta^{(i)})||<\varepsilon_2 ∣∣ Q ( θ i + 1 , θ ( i ) ) − Q ( θ i , θ ( i ) ) ∣∣ < ε 2 则停止迭代。
E步中的 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 是EM算法的核心,称为 Q Q Q 函数。完全数据的对数似然函数 log P ( Y , Z ∣ θ ) \log P(Y,Z|\theta) log P ( Y , Z ∣ θ ) 关于在给定观测数据 Y Y Y 和当前参数 θ ( i ) \theta^{(i)} θ ( i ) 下对未观测数据 Z Z Z 的条件概率分布 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P ( Z ∣ Y , θ ( i ) ) 的期望称为 Q Q Q 函数
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) Q(\theta,\theta^{(i)})=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}]=\sum\limits_Z\log P(Y,Z|\theta)P(Z|Y,\theta^{(i)}) Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = Z ∑ log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) )
假设有 3 3 3 枚硬币,分别记作 A , B , C A,B,C A , B , C 。这些硬币正面出现的概率分别是 π , p , q \pi,p,q π , p , q 。进行如下掷硬币试验:先掷硬币 A A A ,根据其结果选出硬币 B B B 或硬币 C C C ,正面选硬币 B B B ,反面选 C C C ;然后掷选出的硬币,掷硬币的结果,出现正面记作 1 1 1 ,出现反面记作 0 0 0 ;独立地重复 n n n 次试验(本例 n = 10 n = 10 n = 10 ),结果如下
三硬币模型可以写作: P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) P(y|\theta)=\sum\limits_zP(y,z|\theta)=\sum\limits_zP(z|\theta)P(y|z,\theta) P ( y ∣ θ ) = z ∑ P ( y , z ∣ θ ) = z ∑ P ( z ∣ θ ) P ( y ∣ z , θ )
= π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y =\pi p^y(1-p)^{1-y}+(1-\pi)q^y(1-q)^{1-y} = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y
这里,随机变量 y y y 是观测变量,表示一次试验观测的结果是 1 1 1 或 0 0 0 ;随机变量 z z z 是隐变量,表示未观测到的掷硬币 A A A 的结果; θ = ( π , p , q ) \theta=(\pi,p,q) θ = ( π , p , q ) 是模型参数。这一模型是以上数据的生成模型。注意,随机变量 y y y 的数据可以观测,随机变量 z z z 的数据不可观测。将观测数据表示为 Y = ( Y 1 , Y 2 , … , Y n ) T Y = (Y_1,Y_2,\dots,Y_n)^T Y = ( Y 1 , Y 2 , … , Y n ) T ,未观测数据表示为 Z = ( Z 1 , Z 2 , … , Z n ) T Z = (Z_1,Z_2,\dots,Z_n)^T Z = ( Z 1 , Z 2 , … , Z n ) T ,则观测数据的似然函数为
P ( Y ∣ θ ) = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) P(Y|\theta)=\sum\limits_ZP(Z|\theta)P(Y|Z,\theta) P ( Y ∣ θ ) = Z ∑ P ( Z ∣ θ ) P ( Y ∣ Z , θ )
P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] P(Y|\theta)=\prod\limits_{j=1}^n[\pi p^{y_j}(1-p)^{1-{y_j}}+(1-\pi)q^{y_j}(1-q)^{1-{y_j}}] P ( Y ∣ θ ) = j = 1 ∏ n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ]
考虑求模型参数 θ = ( π , p , q ) \theta=(\pi,p,q) θ = ( π , p , q ) 的极大似然估计,即
θ ^ = arg max θ log P ( Y ∣ θ ) \hat{\theta}=\arg\max\limits_\theta\log P(Y|\theta) θ ^ = arg θ max log P ( Y ∣ θ )
EM算法首先选取参数的初值,记作 θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) \theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)}) θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) ,然后通过下面的迭代计算参数的估计值,直到收敛为止。第 i i i 次迭代参数的估计值为 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) \theta^{(i)}=(\pi^{(i)},p^{(i)},q^{(i)}) θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) 。EM算法的第 i + 1 i+1 i + 1 次迭代如下
E步:计算在模型参数 π ( i ) , p ( i ) , q ( i ) \pi^{(i)},p^{(i)},q^{(i)} π ( i ) , p ( i ) , q ( i ) 下观测数据 y i y_i y i 来自掷硬币 B B B 的概率
μ j ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j \mu_j^{(i+1)}=\frac{\pi^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{1-y_j}}{\pi^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{1-y_j}+(1-\pi^{(i)})(q^{(i)})^{y_j}(1-q^{(i)})^{1-y_j}} μ j ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j
π ( i + 1 ) = 1 n ∑ j = 1 n μ j ( i + 1 ) \pi^{(i+1)} = \frac{1}{n}\sum\limits_{j=1}^n\mu_j^{(i+1)} π ( i + 1 ) = n 1 j = 1 ∑ n μ j ( i + 1 ) p ( i + 1 ) = ∑ j = 1 n μ j ( i + 1 ) y j ∑ j = 1 n μ j ( i + 1 ) p^{(i+1)} = \frac{\sum\limits_{j=1}^n\mu_j^{(i+1)}y_j}{\sum\limits_{j=1}^n\mu_j^{(i+1)}} p ( i + 1 ) = j = 1 ∑ n μ j ( i + 1 ) j = 1 ∑ n μ j ( i + 1 ) y j q ( i + 1 ) = ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) q^{(i+1)} = \frac{\sum\limits_{j=1}^n(1-\mu_j^{(i+1)})y_j}{\sum\limits_{j=1}^n(1-\mu_j^{(i+1)})} q ( i + 1 ) = j = 1 ∑ n ( 1 − μ j ( i + 1 ) ) j = 1 ∑ n ( 1 − μ j ( i + 1 ) ) y j
π ( 0 ) = 0.5 , p ( 0 ) = 0.5 , q ( 0 ) = 0.5 \pi^{(0)}=0.5,\ \ \ p^{(0)}=0.5,\ \ \ q^{(0)}=0.5 π ( 0 ) = 0.5 , p ( 0 ) = 0.5 , q ( 0 ) = 0.5
由E步得到对于 y j = 1 y_j=1 y j = 1 与 y j = 0 y_j=0 y j = 0 均有 μ j ( 1 ) = 0.5 \mu_j^{(1)}=0.5 μ j ( 1 ) = 0.5
π ( 1 ) = 0.5 , p ( 1 ) = 0.6 , q ( 1 ) = 0.6 \pi^{(1)}=0.5,\ \ \ p^{(1)}=0.6,\ \ \ q^{(1)}=0.6 π ( 1 ) = 0.5 , p ( 1 ) = 0.6 , q ( 1 ) = 0.6
再回到E步,得到 μ j ( 2 ) = 0.5 , j = 1 , 2 , … , 10 \mu_j^{(2)}=0.5,\ \ \ j=1,2,\dots,10 μ j ( 2 ) = 0.5 , j = 1 , 2 , … , 10
π ( 2 ) = 0.5 , p ( 2 ) = 0.6 , q ( 2 ) = 0.6 \pi^{(2)}=0.5,\ \ \ p^{(2)}=0.6,\ \ \ q^{(2)}=0.6 π ( 2 ) = 0.5 , p ( 2 ) = 0.6 , q ( 2 ) = 0.6
收敛,于是得到模型的参数 θ \theta θ 的极大似然估计
π ^ = 0.5 , p ^ = 0.6 , q ^ = 0.6 \hat{\pi}=0.5,\ \ \ \hat{p}=0.6,\ \ \ \hat{q}=0.6 π ^ = 0.5 , p ^ = 0.6 , q ^ = 0.6
如果取初值 π ( 0 ) = 0.4 , p ( 0 ) = 0.6 , q ( 0 ) = 0.7 \pi^{(0)}=0.4,\ \ \ p^{(0)}=0.6,\ \ \ q^{(0)}=0.7 π ( 0 ) = 0.4 , p ( 0 ) = 0.6 , q ( 0 ) = 0.7 ,那么得到的模型参数的极大似然估计是 π ^ = 0.4064 , p ^ = 0.5368 , q ^ = 0.6432 \hat{\pi}=0.4064,\ \ \ \hat{p}=0.5368,\ \ \ \hat{q}=0.6432 π ^ = 0.4064 , p ^ = 0.5368 , q ^ = 0.6432 。这就是说,EM算法与初值的选取有关,选择不同的初值可能得到不同的参数估计值。
E-step: μ i + 1 = π ( p i ) y i ( 1 − ( p i ) ) 1 − y i π ( p i ) y i ( 1 − ( p i ) ) 1 − y i + ( 1 − π ) ( q i ) y i ( 1 − ( q i ) ) 1 − y i \mu^{i+1}=\frac{\pi (p^i)^{y_i}(1-(p^i))^{1-y_i}}{\pi (p^i)^{y_i}(1-(p^i))^{1-y_i}+(1-\pi) (q^i)^{y_i}(1-(q^i))^{1-y_i}} μ i + 1 = π ( p i ) y i ( 1 − ( p i ) ) 1 − y i + ( 1 − π ) ( q i ) y i ( 1 − ( q i ) ) 1 − y i π ( p i ) y i ( 1 − ( p i ) ) 1 − y i
M-step: π i + 1 = 1 n ∑ j = 1 n μ j i + 1 , p i + 1 = ∑ j = 1 n μ j i + 1 y i ∑ j = 1 n μ j i + 1 , q i + 1 = ∑ j = 1 n ( 1 − μ j i + 1 y i ) ∑ j = 1 n ( 1 − μ j i + 1 ) \pi^{i+1}=\frac{1}{n}\sum_{j=1}^n\mu^{i+1}_j, p^{i+1}=\frac{\sum_{j=1}^n\mu^{i+1}_jy_i}{\sum_{j=1}^n\mu^{i+1}_j}, q^{i+1}=\frac{\sum_{j=1}^n(1-\mu^{i+1}_jy_i)}{\sum_{j=1}^n(1-\mu^{i+1}_j)} π i + 1 = n 1 ∑ j = 1 n μ j i + 1 , p i + 1 = ∑ j = 1 n μ j i + 1 ∑ j = 1 n μ j i + 1 y i , q i + 1 = ∑ j = 1 n ( 1 − μ j i + 1 ) ∑ j = 1 n ( 1 − μ j i + 1 y i )