机器学习中的EM算法详解及R语言实例.docx
《机器学习中的EM算法详解及R语言实例.docx》由会员分享,可在线阅读,更多相关《机器学习中的EM算法详解及R语言实例.docx(12页珍藏版)》请在冰豆网上搜索。
机器学习中的EM算法详解及R语言实例
机器学习中的EM算法详解及R语言实例
最大期望算法(EM)
来自WXingongzhong号datadw
K均值算法非常简单(可参见之前发布的博文),详细读者都可以轻松地理解它。
但下面将要介绍的EM算法就要困难许多了,它与极大似然估计密切相关。
1算法原理
不妨从一个例子开始我们的讨论,假设现在有100个人的身高数据,而且这100条数据是随机抽取的。
一个常识性的看法是,男性身高满足一定的分布(例如正态分布),女性身高也满足一定的分布,但这两个分布的参数不同。
我们现在不仅不知道男女身高分布的参数,甚至不知道这100条数据哪些是来自男性,哪些是来自女性。
这正符合聚类问题的假设,除了数据本身以外,并不知道其他任何信息。
而我们的目的正是推断每个数据应该属于哪个分类。
所以对于每个样本,都有两个需要被估计的项,一个就是它到底是来自男性身高的分布,还是来自女性身高的分布。
另外一个就是,男女身高分布的参数各是多少。
既然我们要估计知道A和B两组参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。
所以可能想到的一种方法就是考虑首先赋予A某种初值,以此得到B的估计,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止。
你是否隐约想到了什么?
是的,这恰恰是K均值算法的本质,所以说K均值算法中其实蕴含了EM算法的本质。
EM算法,又称期望最大化(ExpectationMaximization)算法。
在男女身高的问题里面,可以先随便猜一下男生身高的正态分布参数:
比如可以假设男生身高的均值是1.7米,方差是0.1米。
当然,这仅仅是我们的一个猜测,最开始肯定不会太准确。
但基于这个猜测,便可计算出每个人更可能属于男性分布还是属于女性分布。
例如有个人的身高是1.75米,显然它更可能属于男性身高这个分布。
据此,我们为每条数据都划定了一个归属。
接下来就可以根据最大似然法,通过这些被大概认为是男性的若干条数据来重新估计男性身高正态分布的参数,女性的那个分布同样方法重新估计。
然后,当更新了这两个分布的时候,每一个属于这两个分布的概率又发生了改变,那么就再需要调整参数。
如此迭代,直到参数基本不再发生变化为止。
在正式介绍EM算法的原理和执行过程之前,此处首先对边缘分布的概念稍作补充。
2.收敛探讨
下面我们将讨论高斯混合模型(GMM),相当于是EM的一种实现。
并给出在R中进行数据挖掘的实例。
4.高斯混合模型
高斯混合模型(GMM,GaussianMixtureModel)可以看成是EM算法的一种现实应用。
利用这个模型可以解决聚类分析、机器视觉等领域中的许多实际问题。
4.1模型推导
在讨论EM算法时,我们并未指定样本来自于何种分布。
实际应用中,常常假定样本是来自正态分布之总体的。
也就是说,在进行聚类分析时,认为所有样本都来自具有不同参数控制的数个正态总体。
例如前面讨论的男性女性身高问题,我们就可以假定样本数据是来自如图13-5所示的一个双正态分布混合模型。
这便有了接下来要讨论的高斯混合模型。
4.2应用实例
软件包mclust提供了利用高斯混合模型对数据进行聚类分析的方法。
其中函数Mclust()是进行EM聚类的核心函数,它的基本调用格式为