EM算法 学习笔记
转载请注明出处: http://www.cnblogs.com/gufeiyang
首先考虑这么一个问题。操场东边有100个男生,他们的身高符合高斯分布。操场西边有100个女生,她们的身高也符合高斯分布。 如果告诉了男生的身高,我们很容易用极大似然估计求出正态分布的参数。 同理,给出了女生的身高,我们也很容易得到高斯分布的参数。 接下来事情发生了, 男生跑入女生队伍中, 然后统计了200个人的身高,但是却不知道每个身高是男的还是女生的。 这样的话就很纠结了。 如果我们要是知道了每个人的性别改多好啊, 知道了性别就可以用极大似然得到两个高斯分布的参数了。 如果我们知道了高斯分布的参数,那么我就可以估计出来每个身高属于男女的概率。 忽然间我们发现这是一个“先有鸡还是先有蛋” 的问题。
EM算法基本思想:假设我们想估计的参数为A,B。 开始的时候A和B都未知, 但是如果我们知道了A,就能得到B。 我们得到了B就可以得到A。 EM会给A一个初始值,然后得到B,再由B得到A, 再得到B,一直迭代到收敛为止。
说完了EM算法的基本思想, 下面我讲详细介绍EM算法的公式推导。
现在有样本集 X1,X2......Xm, 一共m个样本, 每个样本都有一个隐变量Zi,但是这个变量却不知道(隐变量嘛)。 我们需要估计的概率模型为P(X|Z)的参数θ。针对上一个例子,X为身高,Z给男女,θ为高斯分布的参数。

由于函数 f(x)=log(x)是一个凹函数,所有(2)式到(3)式可以利用jeson不等式。 其实l(θ)使我们的目标函数(如果Zi确定的话).我们这个时间找到了l(θ)的下界。 我们可以调整θ,然后再极大化下界,再调整θ......一直迭代到收敛为止。
这个时候我们不禁会想两个问题。 (a)上边 的推导中用了不等号,什么时间可以取等号呢? (b)真的一定会收敛吗?
我们先讨论第一个问题,由于
,( Q(Zi)是Zi的概率密度函数),当
为常数时, 不等式就变成了等式。我们令这个常数为
,那么

我们在给定了参数θ后,使下界拉升的Q(Zi)就能计算了。 给定了Q(Zi)后,又能调整θ,接着极大化新θ的下界......
因此EM算法的步骤为:
E步骤:根据参数初始值或上一次迭代的模型参数计算隐变量的后验概率:

M步骤:将似然函数极大化,以获得新的参数值:

一直重复这两个步骤。
接着讨论第二个问题:这样的迭代会收敛吗?

从上边的推到来看,EM算法是收敛的。具体推导参看 Andrew Ng《The EM algorithm》。
至此EM算法就介绍完了。 需要指出EM算法不能保证全局最优。不同的初始值, 得到最后的结果可能不一样。
参考资料:
《统计学习方法》 李航著
zouxy09博客 http://blog.csdn.net/zouxy09/article/details/8537620
EM算法 学习笔记的更多相关文章
- C / C++算法学习笔记(8)-SHELL排序
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- Johnson算法学习笔记
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- Johnson 全源最短路径算法学习笔记
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...
- EM算法学习资料备忘
将学习EM算法过程中看到的好的资料汇总在这里,供以后查询.也供大家參考. 1. 这是我学习EM算法最先看的优秀的入门文章,讲的比較通俗易懂,并且举了样例来说明当中的原理.不错! http://blog ...
- 算法学习笔记——sort 和 qsort 提供的快速排序
这里存放的是笔者在学习算法和数据结构时相关的学习笔记,记录了笔者通过网络和书籍资料中学习到的知识点和技巧,在供自己学习和反思的同时为有需要的人提供一定的思路和帮助. 从排序开始 基本的排序算法包括冒泡 ...
- Expectation maximization - EM算法学习总结
原创博客,转载请注明出处 Leavingseason http://www.cnblogs.com/sylvanas2012/p/5053798.html EM框架是一种求解最大似然概率估计的方法.往 ...
- R语言实现关联规则与推荐算法(学习笔记)
R语言实现关联规则 笔者前言:以前在网上遇到很多很好的关联规则的案例,最近看到一个更好的,于是便学习一下,写个学习笔记. 1 1 0 0 2 1 1 0 0 3 1 1 0 1 4 0 0 0 0 5 ...
随机推荐
- org.springframework.dao.DuplicateKeyException: 问题
转自:https://blog.51cto.com/chengxuyuan/1786938 org.springframework.dao.DuplicateKeyException: a diffe ...
- Core Animation笔记(变换)
1.仿射变换 CGAffineTransformMakeScale : CGAffineTransformMakeTranslation CGAffineTransformMakeRotation(C ...
- js 数组的深度拷贝 的四种实现方法
首先声明本人资质尚浅,本文只用于个人总结.如有错误,欢迎指正.共同提高. --------------------------------------------------------------- ...
- Android笔记(四十四) Android中的数据存储——SQLite(六)整合
实现注册.登录.注销账户 MainActivity.java package cn.lixyz.activity; import android.app.Activity; import androi ...
- python之PEP8规范
比较需要注意的 缩进 每一级缩进使用4个空格. 续行应该与其包裹元素对齐,要么使用圆括号.方括号和花括号内的隐式行连接来垂直对齐,要么使用挂行缩进对齐3.当使用挂行缩进时,应该考虑到第一行不应该有参数 ...
- PLC编程的基础知识的总结
1.Programmable Logic Controller PLC 代替计算机实现复杂的逻辑控制系统 ,可编程控制器是一种数字运算操作电子系统,转门在工业控制系统中使用而设计的,采用一种可以 ...
- 【转】高性能网络编程2----TCP消息的发送
在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字.操作TCP协议发送数据时,面对的是数据流.通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时, ...
- 【HCIA Gauss】学习汇总-数据库管理(数据库基本概念)-3
数据库:操作系统文件或磁盘数据块的集合数据库实例: 指操作系统中一系列进程以及为这些进程分配的内存块 通常来说一个数据库实例对应着一个数据库[数据库实例是访问数据的通道] 多实例:利用多实例 可以充分 ...
- Python标准库-datatime和time
Python标准库-datatime和time 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准库datatime 1>.datatime模块 #!/usr/bin/e ...
- Django分表操作、聚合及FQ方法
聚合 aggregate(*args, **kwargs) # 计算所有图书的平均价格 from django.db.models import Avg Book.objects.all().aggr ...