您的位置:首页 > 其它

非监督学习之混合高斯模型和EM算法——Andrew Ng机器学习笔记(十)

2016-02-01 22:40 351 查看

0、内容提要

这篇博文主要介绍:

- 混合高斯模型(mixture of Gaussians model)

- EM算法(Expectation-Maximization algorithm)

1、引入

假设给定一个训练集{x(1),...,x(m)},任何一个样本都没有标签,我们的任务是将这些样本分类。我们前面介绍了k-means算法是解决这个问题的一种办法。今天我们再介绍一种办法:建立一种模型叫做混合高斯模型,并且利用EM算法求解。下面我们一一欣赏他们的精彩!

要想看到更远的风景,我们要爬上更高的山峰。先来看看上山途中的风景(一些重要的概率预备知识):

1. 协方差矩阵 http://pinkyjie.com/2010/08/31/covariance/,这篇文章介绍的很完美!
2. 多维高斯分布的概率密度的定义:



其中,μ是均值,C是协方差矩阵,|C|是C的行列式,C−1是C的逆。

2、混合高斯模型(mixture of Gaussians model)

混合高斯模型引入了这样一个分布:p(x(i),z(i))=p(x(i)|z(i))p(z(i)),其中,z(i)∼Multinomial(ϕ),(ϕj≥0,∑kj=0ϕj=1,ϕj=p(z(i)=1));x(i)|z(i)∼N(μj,∑j)

在这里z(i)是一个隐含的随机变量。

我们仍然使用最大似然估计来得到模型中的参数:



但是这个式子没有办法求偏导,也就无法估计参数,所以我们就将这个式子进行了简化:不计算所有的z(i),而是随机选择一个。从而对数似然函数就可以写成这样:



使得上式最大,可以得到参数的估计:



只要知道z(i)分布,参数就可以估计出来。但问题就是我们不知道z(i)的分布,在分类问题在z(i)充当就是分类标签或者类别。在这里似乎有一点矛盾:我们建立模型的目的是对样本分类,为了分类我们需要估计一些参数,为了估计参数我们有需要知道分类情况。问题好像有点乱,但是只要我们一直明确目标,问题就一定能解。EM算法能够很好的解决问题。

3、EM算法(Expectation-Maximization algorithm)

EM算法是一个迭代算法,每一次迭代过程中主要包含两个步奏:E步和M步。E步主要猜测z(i)的值,M步更新模型参数。E步得到了z(i)M步更新参数也是比较方便的。下面是算法的描述:



算法需要输入的参数有:训练集,μ,ϕ,∑的初始值。算法输出:w(i)j,ϕj,μj,∑j;(j=1,...,k;i=1,...,m)的最优值,即此时似然函数取到了最大值。

E步时,w(i)的计算公式如下,利用的是贝叶斯公式:



其中,p(x(i)|z(i)=j;μ,∑)服从高斯分布,μi,∑i是x(i)对应的参数。p(z(i)=j;ϕ)对应的参数是ϕi。

对比K-means可以发现,这里使用了“软”指定,为每个样例分配的类别z(i)是有一定的概率的,同时计算量也变大了,每个样例i都要计算属于每一个类别j的概率。与K-means相同的是,结果仍然是局部最优解。对其他参数取不同的初始值进行多次计算不失为一种好方法。

参考资料

[1]. 混合高斯模型(Mixtures of Gaussians)和EM算法 http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
[2]. 从最大似然到EM算法浅解 http://blog.csdn.net/zouxy09/article/details/8537620
[3]. (EM算法)The EM Algorithm http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
[4]. 混合高斯模型算法 http://www.cnblogs.com/CBDoctor/archive/2011/11/06/2236286.html
end

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习 em算法