机器学习中的EM算法详解及R语言实例(1)

xjjw2480 9年前

来自: http://blog.csdn.net/baimafujinji/article/details/50626088


最大期望算法(EM)


K均值算法非常简单(可参见之前发布的博文),详细读者都可以轻松地理解它。但下面将要介绍的EM算法就要困难许多了,它与极大似然估计密切相关。


1 算法原理


不妨从一个例子开始我们的讨论,假设现在有100个人的身高数据,而且这100条数据是随机抽取的。一个常识性的看法是,男性身高满足一定的分布(例如正态分布),女性身高也满足一定的分布,但这两个分布的参数不同。我们现在不仅不知道男女身高分布的参数,甚至不知道这100条数据哪些是来自男性,哪些是来自女性。这正符合聚类问题的假设,除了数据本身以外,并不知道其他任何信息。而我们的目的正是推断每个数据应该属于哪个分类。所以对于每个样本,都有两个需要被估计的项,一个就是它到底是来自男性身高的分布,还是来自女性身高的分布。另外一个就是,男女身高分布的参数各是多少。


既然我们要估计知道A和B两组参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。所以可能想到的一种方法就是考虑首先赋予A某种初值,以此得到B的估计,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。你是否隐约想到了什么?是的,这恰恰是K均值算法的本质,所以说K均值算法中其实蕴含了EM算法的本质。


EM算法,又称期望最大化(Expectation Maximization)算法。在男女身高的问题里面,可以先随便猜一下男生身高的正态分布参数:比如可以假设男生身高的均值是1.7米,方差是0.1米。当然,这仅仅是我们的一个猜测,最开始肯定不会太准确。但基于这个猜测,便可计算出每个人更可能属于男性分布还是属于女性分布。例如有个人的身高是1.75米,显然它更可能属于男性身高这个分布。据此,我们为每条数据都划定了一个归属。接下来就可以根据最大似然法,通过这些被大概认为是男性的若干条数据来重新估计男性身高正态分布的参数,女性的那个分布同样方法重新估计。然后,当更新了这两个分布的时候,每一个属于这两个分布的概率又发生了改变,那么就再需要调整参数。如此迭代,直到参数基本不再发生变化为止。


在正式介绍EM算法的原理和执行过程之前,此处首先对边缘分布的概念稍作补充。

 

 

2. 收敛探讨

 

 

在下一篇中我们将讨论高斯混合模型(GMM),相当于是EM的一种实现。并给出在R中进行数据挖掘的实例。

未完,待续...


本文参考文献:

1、斯坦福的公开课——机器学习 ,由Andrew Ng主讲

2、JerryLead的博客

3、数据挖掘导论,Pang-Ning Tan,Michael Steinbach,Vipin Kumar 著