统计学习方法 EM算法的一个例子

  • 参考《统计学习方法》第九章

        三硬币模型 假设有3枚硬币,分别记作A,B,C.这些硬币正面出现的概率分别是π,p和q·进行如下掷硬币试验:先掷硬币A,根据其结果选出硬币B或硬币C,正面选硬币B,反面选硬币C:然后掷选出的硬币,掷硬币的结果,出现正面记作1,出现反面记作0:独立地重复n次试验(这里,n=10),观测结果如下:

1,1,0,1,0,0,1,0,1,1

        假设只能观测到掷硬币的结果,不能观测掷硬币的过程.问如何估计三硬币正面出现的概率,即三硬币模型的参数。题中一些信息我们可以用下图来表示。

统计学习方法 EM算法的一个例子_第1张图片

        解:设随机变量y是观测变量,表示一次试验观测的结果是1或0:随机变量z是隐变量,表示未观测到的掷硬币A的结果。那么

\begin{aligned} p(Y=1\mid \theta)&=p(Z=1\mid \theta)P(y=1\mid z=1 , \theta)\\ &+p(Z=0\mid \theta)P(y=1\mid z=0 , \theta) \end{aligned}

这是观测为正面的情况,同样的可以得到反面的情况,因此,这个模型可以写作

\begin{aligned} P(y \mid \theta) &=\sum_{z} P(y, z \mid \theta)=\sum_{z} P(z \mid \theta) P(y \mid z, \theta) \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi) q^{y}(1-q)^{1-y} \end{aligned}

将观测数据表示为\begin{aligned} &Y=\left(Y_{1}, Y_{2}, \cdots, Y_{n}\right)^{\mathrm{T}} \end{aligned},未观测数据表示为\begin{aligned} &Z=\left(Z_{1}, Z_{2}, \cdots, Z_{n}\right)^{\mathrm{T}} \\ \end{aligned},则观测数据的似然函数为

\begin{aligned} &P(Y \mid \theta)=\sum_{Z} P(Z \mid \theta) P(Y \mid Z, \theta) \\ \end{aligned}

\begin{aligned} &P(Y \mid \theta)=\prod_{j=1}^{n}P(Y_{j}\mid \theta)=\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] \\ \end{aligned}

考虑求模型参数\theta=(\pi,p,q)的极大似然估计,即

\hat{\theta}=\arg \max _{\theta} \log P(Y \mid \theta)

        这个问题没有解析解,只有通过迭代的方法求解。EM算法就是可以用于求解这个问题的一种迭代算法,下面给出针对以上问题的EM算法。

        EM算法首先选取参数的初值,记作\theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)}),然后通过下面的步骤迭代计算参数的估计值,直至收敛为止,第i次迭代参数的估计值为\theta^{(i)}=(\pi^{(i)},p^{(i)},q^{(i)})。EM算法的第i+1次迭代如下.
E步:计算在模型参数\pi^{(i)},p^{(i)},q^{(i)}下观测数据y_{j}来自掷硬币B的概率

\mu^{(i+1)}=\frac{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}}{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}+\left(1-\pi^{(i)}\right)\left(q^{(i)}\right)^{y_{j}}\left(1-q^{(i)}\right)^{1-y_{j}}}

M步:计算模型参数的新估计值

\begin{aligned} &\pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i+1)} \\ \end{aligned}

对硬币A为正面的概率\pi进行更新;

\begin{aligned} &p^{(i+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(i+1)}y_{j}} {\sum_{j=1}^{n} \mu_{j}^{(i+1)}} \\ \end{aligned}

对正面来自于B的概率p进行更新; 分子是B为正面的概率,分母是A为正面的概率(也就是观测的是B的概率);

q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right)}

对正面来自于C的概率q进行更新; 分子是C为正面的概率,分母是A为反面的概率(也就是观测的是C的概率)。

接下来进行数字计算

        假设模型参数的初值取为

\pi^{(0)}=0.5,\;p^{(0)}=0.5,\;q^{(0)}=0.5

根据E步的公式可以知道对y_{i}=1y_{i}=0均有\mu_{j}^{(1)}=0.5,则

\pi^{(1)}=0.5,\; p^{(1)}=0.6, \;q^{(1)}=0.6

再次迭代,得

\pi^{(2)}=0.5,\; p^{(2)}=0.6, \;q^{(2)}=0.6

于是得到模型参数日的极大似然估计:

\hat{\pi}=0.5,\; \hat{p}=0.6,\; \hat{q}=0.6

如果初始值\pi^{(0)},\;p^{(0)},\;q^{(0)},会得到不同的结果,说明EM算法与初值的选择有关。

你可能感兴趣的:(机器学习)