机器学习 非监督学习 EM算法(Expectation Maximization Algorithm)

一、引入例子

1、 袋子中有红,白两种球,比例 p:(1-p),可以看成二元的伯努利分布。从袋子中反复对球进行抽样,X1,X2,...,Xn。

p=|{Xi=红}|/n

2、两个袋子,各自都有红色的球和白色的球,选择第一个袋子的概率为w,选择第二个袋子的概率为1-w。第一个袋子抽到红球的概率为p,抽到白球的概率为1-p;第二个袋子中抽到红球的概率为q,抽到白球的概率为1-q。<主要三个参数w,p,q>

p(X=红)=wp+(1-w)q

p(X=白)=w(1-p)+(1-w)(1-q)

p(第一个|X=红)=wp/wp+(1-w)q

p(第二个|X=红)=(1-w)q/wp+(1-w)q

p(第一个|X=白)=w(1-p)/w(1-p)+(1-w)(1-q)

p(第二个|X=白)=(1-w)(1-p)/w(1-p)+(1-w)(1-q)

从样本估计参数,红--1;白--0

Xi密度:\omega p^{Xi}(1-p)^{1-Xi}+(1-\omega )q^{Xi}(1-q)^{1-Xi}

极大似然估计:max\prod_{i=1}^{n}[\omega p^{Xi}(1-p)^{1-Xi}+(1-\omega )q^{Xi}(1-q)^{1-Xi}]

Xi=0和Xi=1带入化为:max\prod_{i=1}^{n}(\omega p+(1-\omega )q)^{Xi}(\omega (1-p)+(1-\omega )(1-q))^{1-Xi}

                                  max[\prod_{i=1}^{n}P^{Xi}(1-P)^{1-Xi}]  

                                P=\omega p+(1-\omega )q=\frac{k}{n},k=\left | \left \{Xi=1\right \} \right |

\omega (1-p)+(1-\omega )(1-q)=\frac{n-k}{n}

结论:\omega p+(1-\omega )q=\frac{k}{n}

给出其中两个参数就可以得到另一个参数。

二、迭代角度

由于极大似然的计算非常复杂,因此可以考虑迭代的方法,收敛到局部最优 ,给出p,q,w.

Xi
第一个 红 wp/wp+(1-w)q=ai
第一个 白 w(1-p)/w(1-p)+(1-w)(1-q)=bi
第二个 红 (1-w)q/wp+(1-w)q=ci
第二个 白 (1-w)(1-p)/w(1-p)+(1-w)(1-q)=di

每一列总和均为1,整个表的总和为n

重新估计:第一个估计 \omega =\frac{\sum_{Xi=1}^{}ai+\sum_{Xi=0}^{}bi}{n}与之前的w0不相等

                 p估计 p=\frac{\sum_{Xi=1}^{}ai}{\sum_{Xi=1}^{}ai+\sum_{Xi=0}^{}bi}

                 q估计q=\frac{\sum_{Xi=1}^{}ci}{\sum_{Xi=1}^{}ci+\sum_{Xi=0}^{}di}

可以一直迭代下去,把迭代一步的值看做下一次的初始值,上述为EM算法。

三、推广到机器学习

从k个高斯分布中随机抽取一个高斯分布,k个高斯分布对应的概率为w1,w2,...,wk,其总和为1

X的密度函数:\omega 1f1(x)+...+\omega kfk(x)

给出X1,X2,...,Xk 估计出\mu ,\sigma ,\omega

样本的密度函数 max\prod_{i=1}^{n}[\sum_{j=1}^{k}\omega _{j}fj_{(Xi)}]\Leftrightarrow max\sum_{i=1}^{n}log(\sum_{j=1}^{k}\omega _{j}fj_{(Xi)})

利用极大似然估计难以求解,则考虑迭代

分布 X1 X2
1 \frac{\omega 1f1(X1)}{\omega 1f1(X1)+\omega 2f2(X1)}=\omega 11   \frac{\omega 1f1(X2)}{\omega 1f1(X2)+\omega 2f2(X2)}=\omega 21
2 \frac{\omega 2f2(X1)}{\omega 1f1(X1)+\omega 2f2(X1)}=\omega 12 \frac{\omega 2f2(X2)}{\omega 1f1(X2)+\omega 2f2(X2)}=\omega 22

每一列总和均为1

重新估计:\omega1 =\frac{\sum_{i=1}^{n}\omega _{i1}}{n},\omega2 =\frac{\sum_{i=1}^{n}\omega _{i2}}{n}

                 \mu 1=\frac{\sum_{i=1}^{n}\omega _{i1}X_{i} }{\sum_{i=1}^{n}\omega _{i1}},\mu 2=\frac{\sum_{i=1}^{n}\omega _{i2}X_{i} }{\sum_{i=1}^{n}\omega _{i2}}

                 \sigma 1=\frac{\sum_{i=1}^{n}\omega _{i1}(X_{i}-\mu _{1})^{2}}{\sum_{i=1}^{n}\omega _{i1}},\sigma 1=\frac{\sum_{i=1}^{n}\omega _{i2}(X_{i}-\mu _{2})^{2}}{\sum_{i=1}^{n}\omega _{i2}}

一直迭代下去,可以估计出每个高斯分布的权重,直到收敛。

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