EM算法(3):EM算法运用
目录
EM算法(3):EM算法运用
1. 内容
EM算法全称为 Expectation-Maximization 算法,其具体内容为:给定数据集$\mathbf{X}=\{\mathbf{x}_1,\mathbf{x}_2,...,\mathbf{x}_n\}$,假定这个数据集是不完整的,其还缺失了一些信息Y,一个完整的样本Z = {X,Y}。而且假定如果我们能得到完整样本信息的话,训练模型就有闭式解(这个假定对于EM算法理论上可以没有,但是实际操作时我们还是要选定这样的完整信息)。那么EM算法分为两步,第一步(E-step),根据前一步得到的参数$\theta^{(i)}$,计算目标函数的期望$Q(\theta;\theta^{(i)})$:
$Q(\theta;\theta^{(i)}) = E_Y[lnp(X,Y|\theta) | X,\theta^{(i)}]$
$=\int lnp(X,Y|\theta)\cdot p(Y|X,\theta^{(i)})dY$
第二步,选择一个$\theta^{(i+1)}$,使得$Q(\theta;\theta^{(i)})$最大化。
2. EM算法在GMM模型上的运用
上面讲的EM算法大家肯定觉得很空洞、无法理解,这样就对了,光看这个肯定是看不出什么来的,这个时候就需要一个例子来说明,GMM模型是最合适的。
在运用EM算法之前,我们首先要明确,缺失的Y取什么,这个得自己选取。那么由我们之前那篇博客,Y用来代表数据属于某个高斯分量最合适。y取1~k,分别代表k个高斯分量。那么很容易有$p(x,y=l|\pi,\mu,\Sigma) = \pi_l\mathcal{N}(x|\mu_l,\Sigma_l)$,而$p(x|\pi,\mu,\Sigma) = \sum_kp(x,y=k|\pi,\mu,\Sigma) = \sum_k\pi_k\mathcal{N}(x|\mu_k,\Sigma_k)$,这与我么GMM模型的结果也是一致的。
首先我们先计算$Q(\theta;\theta^{(i)})$(这里公式比较复杂,博客园的Latex比较坑,我就直接用Latex写了然后截图了):

其中$p(\mathbf{y}_n=k|\mathbf{x}_n,\theta^{(i)}) = \frac{p(\mathbf{y}_n=k,\mathbf{x}_n|\theta^{(i)})}{p(\mathbf{x}_n|\theta^{(i)})} = \gamma_{nk}$(推导要使用本小节第二段中的两个式子,$\gamma_{nk}$定义见本系列第二篇博客)。
第二步,我们对$Q(\theta;\theta^{(i)})$进行最值优化,首先对均值进行求导,则有:
$\frac{\partial Q}{\partial \mu_k}=0$ 得到 $\mu_k^{(i+1)} = \frac{\sum_n\gamma_{nk}\mathbf{x}_n}{\sum_n\gamma_{nk}}$
细心的读者可能已经发现,这与我们在第二篇博客中得到的结果是一样的。同样,对$\pi$和$\Sigma$求导得到的结果同样和第二篇博客中一样(有兴趣的读者可以自行推导一下,其中对$\Sigma$求导可能需要参考我的另一篇博文多维高斯概率密度函数对协方差矩阵求导),这样我们就由EM算法得到了GMM的训练算法。
EM算法(3):EM算法运用的更多相关文章
- 【EM算法】EM(转)
Jensen不等式 http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html 回顾优化理论中的一些概念.设f是定义域为实数的函数 ...
- 从决策树学习谈到贝叶斯分类算法、EM、HMM --别人的,拷来看看
从决策树学习谈到贝叶斯分类算法.EM.HMM 引言 最近在面试中,除了基础 & 算法 & 项目之外,经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然,这完全 ...
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
从决策树学习谈到贝叶斯分类算法.EM.HMM (Machine Learning & Recommend Search交流新群:172114338) 引言 log ...
- Python实现机器学习算法:EM算法
''' 数据集:伪造数据集(两个高斯分布混合) 数据集长度:1000 ------------------------------ 运行结果: ---------------------------- ...
- MM 算法与 EM算法概述
1.MM 算法: MM算法是一种迭代优化方法,利用函数的凸性来寻找它们的最大值或最小值. MM表示 “majorize-minimize MM 算法” 或“minorize maximize MM 算 ...
- K-means聚类算法与EM算法
K-means聚类算法 K-means聚类算法也是聚类算法中最简单的一种了,但是里面包含的思想却不一般. 聚类属于无监督学习.在聚类问题中,给我们的训练样本是,每个,没有了y. K-means算法是将 ...
- EM算法浅析(二)-算法初探
EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...
- 机器学习经典算法之EM
一.简介 EM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法. 我们先看一个简单的场景:假设你炒了一份菜,想要把它平均分到两个碟子里,该怎么分? 很少有 ...
- EM相关两个算法 k-mean算法和混合高斯模型
转自http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html http://www.cnblogs.com/jerrylead/ ...
- 机器学习优化算法之EM算法
EM算法简介 EM算法其实是一类算法的总称.EM算法分为E-Step和M-Step两步.EM算法的应用范围很广,基本机器学习需要迭代优化参数的模型在优化时都可以使用EM算法. EM算法的思想和过程 E ...
随机推荐
- Python入门2
字符串操作 字符串是语言中使用最多的,下面我们来看看python为字符串提供哪些方法: 1.upper().lower().title() 这3个方法都是返回一个新的字符串.重要性:** name = ...
- Linux环境下SVN服务器端的安装与配置
最近尝试了下在Linux(CentOS6.5)环境下安装与配置SVN服务器端,安装过程中碰到了一些问题,参看了网友们分享的一些心得,并通过自己实际的操作,最终安装与配置成功!总的来说网上的说法芸芸,大 ...
- OAF_开发系列08_实现OAF通过Popup参数式弹出窗口(案例)
20150711 Created By BaoXinjian
- 使用Spring+Junit4.4进行测试(使用注解)
http://nottiansyf.iteye.com/blog/345819 使用Junit4.4测试 在类上的配置Annotation @RunWith(SpringJUnit4ClassRunn ...
- boost multi_index
/** boost 多索引容器的一般使用 这里使用google 的gmock 库来验证对boost 多索引模板的使用,并验证. 这里是手敲的,可能会有一些字符敲错的情况,编译错误的放,修改一下,同时链 ...
- window下编译并使用google protobuf
参考网址: http://my.oschina.net/chenleijava/blog/261263 http://www.ibm.com/developerworks/cn/linux/l-cn- ...
- Linux文件权限
Permission deny 权限 拒绝 查看权限 ls -a ls -la expression 查看文件夹里边东西的权限 用户群的分类 组群:一个操作系统可能几个人同时用 方便小组的文件 ...
- 查看APK方法数的工具dex-method-counts
做APK方法总能遇到方法数超限的问题(主要是方法数, 字段数, String数.等各种数都可能超过65k导致不能安装) 除了大公司都自己做了一些检查方法. 网上还有一些开源的查询工具. 给大家推荐一个 ...
- 翻箱倒柜,《Delphi中建议使用的语句》
(*//标题:Delphi中建议使用的语句整理:Zswang连接:http://www.csdn.net/Expert/TopicView1.asp?id=724036日期:2002-06-22支持: ...
- [python实现设计模式]-5.迭代器模式-一起撸串嗨皮啦
迭代器模式是一个我们经常使用但是出境不高的模式. 为啥捏?因为大部分的语言都帮我们实现了细节,我们不许关注他的实现就能用的很嗨皮了. 不管怎样.这也是个非常常用的模式. 俗话说得好,这个世界上没有事情 ...