【转载请注明出处】http://www.cnblogs.com/mashiqi

2014/11/18

更新。发现以前的公式(2)里有错误,现已改过来。由于这几天和Can讨论了EM算法,回头看我以前写的这篇博客的时候,就发现公式里面有一个错误(多了一个连加符号),现在改正过来了。经过和Can的讨论,我又认真思考了EM算法,发现以前确实是没有弄懂这个算法的本质的。加油,以后学习知识不要只停留在表面上,要有insight!!!

2014/5/19

本文公式编辑捉鸡,请知道怎么在博客园里高效编辑公式的朋友告诉我一下,感激不尽了!

以前其实写过一个关于最大期望算法的文档,但是由于那次教研室电脑硬盘出问题,当时又没有随时备份重要文件的习惯,所以就弄没了。今天又看到EM算法,于是今天又花了40分钟重新把这个算法的思路整理了一遍,这真的是在浪费生命啊。。。所以说,这也是对以下观点的一个有力的证据之一:写文档或写学习记录真的是一件很重要的事。

本文只是从数学的角度分析EM算法,并没有对算法所反映出来的关于数据的本质问题进行刻画,所以若想通过本文学习EM算法,应该是有所欠缺的,毕竟在某些领域数学并不是全部,只是工具。然而,在翻看大部分讲解EM算法的资料时,我都被极为不好理解的公式符号所吓倒,于是打算自己写一篇关于EM算法的,有关具体公式的博文——1是用来梳理自己的思路,给自己做个笔记,免得以后忘记了EM算法又要花上一两个小时来自己推公式理解;2是用来给具有和我有同样问题的朋友们,提供帮助。或许您也在知道了"EM算法是通过琴生不等式来不断优化似然函数的下界从而求得似然解"后对此算法的理论公式表示不解,那么本文或许能给你提供一下帮助。下面进入正题。

假设我们已知数据集${x_i}$的分布$p(x)$收到参数$\theta$的影响,然后我们要做以下似然估计:

(1)

这里补充一句,为了养成较好的区别"频率学派"的"贝叶斯学派"的观点,我从一些教科书上学到,一般采取这种记法:

当将$\theta$看做未知且固定的参数时,统一使用符号";":$p(x;\theta)$

当将$\theta$看做具有先验分布的参数时,统一使用符号"|":$p(x|\theta)$

回到(1)式,当这里还有一个隐变量时,我们通过如下迭代方法来求解(1)式:

  1. 记$L(\theta ) = \sum\nolimits_i {\ln p({x_i};\theta )} $,于是我们有:

  (2)

  1. (E步)记,${l_n}(\theta ) = \sum\nolimits_i { \left\{ \sum\nolimits_j {p({z_j}\left| {{x_i}} \right.;{\theta ^{(n)}})\ln \left[ { {\frac{{p({x_i},{z_j};\theta )}}{{p({x_i},{z_j};{\theta ^{(n)}})}}} } \right]} \right\}} $,我们得到:

$$L(\theta ) \ge {l_n}(\theta ) + L({\theta ^{(n)}})$$   (3)

注意到${l_n}({\theta ^{(n)}}) = 0$,于是我们有:

$$L({\theta ^{(n)}}) \ge {l_n}({\theta ^{(n)}}) + L({\theta ^{(n)}}) = L({\theta ^{(n)}})$$  (4)

  1. (M步)我们优化${l_n}(\theta )$:

$${\theta ^{(n + 1)}} = \arg {\max _\theta }{l_n}(\theta )$$  (5)

于是从(3)式我们得到:

$$\begin{array}{l}
L({\theta ^{(n + 1)}}) \ge {l_n}({\theta ^{(n + 1)}}) + L({\theta ^{(n)}}) \ge {l_n}({\theta ^{(n)}}) + L({\theta ^{(n)}})\\
{\kern 42pt} = L({\theta ^{(n)}})
\end{array}$$

通过上面的步骤,我们可以得到序列$\{ {\theta _n}\} $使得使得似然函数一步步变大:$L({\theta ^{(1)}}) \le  \cdots  \le L({\theta ^{(n)}}) \le L({\theta ^{(n + 1)}}) \le  \cdots $。至于序列$ {\theta _n} $是否收敛于${\theta ^*}$,我还没有学习到 :)

在(2)式的第二行,凭空增加的$p({z_j}\left| {{x_i}} \right.;{\theta ^{(n)}})$是为了后面能配出一个$L({\theta ^{(n)}})$来。若不明白,我们可以先假设增加一项未知的$q({z_j};{\theta ^{(n)}})$,为了用到琴生不等式,我们要求$\sum\nolimits_j {q({z_j};{\theta ^{(n)}})}  = 1$于是我们得到:

显然,若取$q({z_j};{\theta ^{(n)}}) = p({z_j}\left| {{x_i}} \right.;{\theta ^{(n)}})$,则我们能得到:

从数学角度看最大期望(EM)算法 I的更多相关文章

  1. 从数学角度看最大期望(EM)算法 II

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2015/3/13 对于隐变量只有有限个取值(比如$N$个)的情况,我们可以将隐变量表示为${z_j} = [{z_{j ...

  2. 数据挖掘十大经典算法(5) 最大期望(EM)算法

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

  3. 详解十大经典机器学习算法——EM算法

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第14篇文章,我们来聊聊大名鼎鼎的EM算法. EM算法的英文全称是Expectation-maximization al ...

  4. python机器学习笔记:EM算法

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域的基础,比如隐式马尔科夫算法(HMM),LDA主题模型的变分推断算法等等.本文对于E ...

  5. EM算法(Expectation Maximization Algorithm)

    EM算法(Expectation Maximization Algorithm) 1. 前言   这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的< ...

  6. PLSA及EM算法

    前言:本文主要介绍PLSA及EM算法,首先给出LSA(隐性语义分析)的早期方法SVD,然后引入基于概率的PLSA模型,其参数学习采用EM算法.接着我们分析如何运用EM算法估计一个简单的mixture ...

  7. Expectation-Maximization(EM) 算法

    Expectation-Maximization 算法是统计学中用来给带隐含变量的模型做最大似然(和最大后验概率)的一种方法.EM 的应用特别广泛,经典的比如做概率密度估计用的 Gaussian Mi ...

  8. 浅谈EM算法的两个理解角度

    http://blog.csdn.net/xmu_jupiter/article/details/50936177 最近在写毕业论文,由于EM算法在我的研究方向中经常用到,所以把相关的资料又拿出来看了 ...

  9. EM最大期望化算法

    最大期望算法(Expectation-maximization algorithm,又译期望最大化算法)在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计. 在统计计算中,最 ...

随机推荐

  1. C语言内存分配机制

    内存分配方式有三种: (1)从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建.在执行函数时,函数内局部变量的 ...

  2. Steam和Byte[]之间进行输换

    一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream ...

  3. 一个Java递归程序

    先来没事搜了一些面试题来做,其中一道:输入一个整数,求这个整数中每位数字相加的和? 思考:1.如何或得每一位数:假如是1234,   1234%10=4,得到个位:(1234/10)%10=3得到十位 ...

  4. VS2010 winform程序发布步骤

    1.右键单击解决方案,点击“添加”---“新建项目”,如下图: 2.选择“其他项目类型”--“安装和部署”--“Visual Studio Installer”---"安装项目", ...

  5. Flickr 网站架构分析

    Flickr 网站架构分析 Flickr.com 是网上最受欢迎的照片共享网站之一,还记得那位给Windows Vista拍摄壁纸的Hamad Darwish吗?他就是将照片上传到Flickr,后而被 ...

  6. sqlite多表关联update

    sqlite数据库的update多表关联更新语句,和其他数据库有点小不一样 比如:在sql server中: 用table1的 id 和 table2的 pid,关联table1 和 table2 , ...

  7. 2.精通前端系列技术之JavaScript模块化开发 seajs(一)

    在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完 ...

  8. win7 64位安装mongodb及管理工具mongoVUE1.6.9.0

    下载mongodb安装程序,官网地址:http://www.mongodb.org/downloads 我的是64位win7,选择: 然后双击下载的文件安装,我安装到本地的D盘里面 然后配置系统环境变 ...

  9. Installing Cygwin and Starting the SSH Daemon

    This chapter explains how to install Cygwin and start the SSH daemon on Microsoft Windows hosts. Thi ...

  10. sql学习资料

    http://blog.sina.com.cn/s/articlelist_1594135432_9_1.html