非监督学习之混合高斯模型和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
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- 反向传播(Backpropagation)算法的数学原理
- 也谈 机器学习到底有没有用 ?
- 量子计算机编程原理简介 和 机器学习
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误
- 机器学习书单
- 北美常用的机器学习/自然语言处理/语音处理经典书籍
- 如何提升COBOL系统代码分析效率
- 自动编程体系设想(一)
- 自动编程体系设想(一)
- 支持向量机(SVM)算法概述
- [Ng机器学习公开课1]机器学习概述
- 神经网络初步学习手记
- 常用的分类评估--基于R语言
- 基于R的xgboost