例子:现在随机抽取100个人的身高;其中男生身高服从N1 的正态分布,女生服从N2的正态分布;
如果我们很明确知道我抽到的是100个男生身高(或者女生),那么我可以利用MLE极大似然估计估计出其分布参数;
但是随机给一个身高,我不知道它具体是男生或者女生,所以有两个问题需要解决:
1、 样本来自于哪个分布(男生或者女生)的估计
2、 每个分布的参数估计
EM算法就是这样,假设我们想估计知道A和B两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
将100个样本大概分成两部分,利用最大似然估计,通过这些被大概分为男生的n个人来重新估计第一个分布的参数,女生的那个分布同样方法重新估计。这个是Maximization。当更新了这两个分布的时候,每一个属于这两个分布的概率又变了,那么我们就再需要调整E步……如此往复,直到参数基本不再发生变化为止。
K-means 与EM的联系:
首先假定每一个样本的类标签,相当于已经计算了他们参数估计了;然后调整阶段:计算每一个样本距离所有簇心的距离,判断是否更新标签;更新标签时,又将这些样本点分成几部分,重新计算新的簇心和类标签;也即完成了参数分布的估计;循环下去,直至不再更新;
EM算法 中会多一个隐含的参数(最有可能来自于哪个分布)
将M步中的式子进行化简,对 i 进行必要的合并,会得到
在M步骤中,将Q带入后,合并得到第一项是:联合分布(完全数据)的对数似然函数关于给定参数的和观察数据X下,对未知数据Z的条件概率的期望;第二项是常数;所以最大化就变成了期望的最大化;
所以在E步计算:
在M中将其最大化,获得参数;
待完善---
参考:
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
http://blog.csdn.net/zouxy09/article/details/8537620/
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html