期望极大值算法(expectation maximizition algorithm,EM)。是一种迭代算法,1977年由Dempster总结提出,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计或极大后验估计。EM算法分为两步,E步:求期望,M步:求极大值

1 EM算法的引入

概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法

1.1 EM算法

这里有一个三硬币模型,三个硬币A,B,C。正面出现的概率是π,p,q;只有当A硬币掷出后得到正面才会掷硬币B,否则C,但是独立n次后,只能观察到最后的结果,却看不到执行过程中A是什么情况,最后的结果是B还是C的。因此,



各个参数含义



观测数据的极大似然估计是:



这个问题没有解析解,只能使用EM方法迭代求解。



E步B的概率是一个条件概率,y取值为1,0.

M步:模型参数估计值



EM算法受初值影响较大。

一般地,Y表示观测数据,Z表示隐变量,Y+Z表示完全数据(complete data),Y叫做不完全数据(incomplete data)。假设给定观测数据Y其概率分布为,不完全数据Y的似然函数为,对数似然函数为,假设Y,Z联合概率分布为,对数似然函数,EM算法就是通过迭代求L的极大似然估计。

EM算法:





Q函数:EM算法的核心,是完全观测数据对数似然函数关于给定观测数据Y和当前参数θi对未观测数据Z的条件概率分布的期望:

步骤1:参数的 初值可以任意选择,但是EM算法对参数初值十分敏感;

步骤2:求Q(θ,θi)第一个变元表示极大化的参数,第二个变元表示参数的当前估计值。每次迭代实际上再求Q函数及其极大。

步骤3:M步求Q的极大化,得到θi+1,完成一次迭代。

步骤4:给出停止条件,对较小的整数,满足入校条件则停止迭代。

1.2 EM算法的导出

通过近似求解观测数据的对数似然函数的极大化问题来推导出EM算法的正确性。

问题是含有隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于θ的对数似然函数,即极大化,

困难点在于未观测数据和积分(求和)。

其实,EM算法是通过迭代逐步近似极大化L(θ)的。每次都希望最新的估计上跟上次的估计值大,来逐步达到极大值。



利用Jensen不等式得到下界:







,得到L的一个下界B函数,且可以发现,

任何可以让B增大的θ也可以使得L增大,因此,具体表达式化简(省略与θ无关的项):



因此EM算法是通过不断求解下界的极大化来求解对数似然函数极大化的算法


EM算法因为能够求解包含隐变量的概率模型,因此可用于生成模型的非监督学习,认为联合概率密度为P(X,Y),X为观测数据,Y为未观测数据。


2 EM算法的收敛性

EM算法能否收敛,是否能收敛到全局最优?

两个定理:







注意:定理只能保证参数估计序列收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点,所以初值选择十分重要。通常的做法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。

3 EM算法在高斯混合模型的应用

3.1 高斯混合模型Gaussian misture model

GMM的形式

,其中

即,称为第k个分模型。

3.2 GMM中参数估计的EM算法

假设观测数据y1,y2,y3,…,yN由GMM生成

其中,

用EM算法估计参数θ。

  1. 明确隐变量,写出完全数据的对数似然函数

    观测数据的产生:依照概率αk选择第k个高斯分布模型;然后依照第k个分模型概率分布生成观测数据yj。这是观测数据是已知的,而反映观测数据yj的第k个分模型的数据是未知的,以隐变量γjk表示,定义如下:

    j=1,2,…,N;k=1,2,…,K,γ是0-1随机变量

    那么完全数据是:

    完全数据似然函数是

    其中,k的连乘不是很理解

对数化:

  1. EM算法的E步:确定Q函数

  2. 确定M步



    求偏导为0推出:



    算法:

4 EM推广

EM算法可以解释为F函数(F function)的极大—极大算法(maximization maximization algorithm),基于这个解释有若干变形,如,广义期望极大(generalized expectation maximization,GEM)算法。

4.1 F函数的极大—极大算法

F函数定义:



引理1:



引理2:



。。。未完待续。。。

推荐链接:http://blog.csdn.net/qq_20602929/article/details/51424292

总结:

EM算法是一种求解含有隐变量的概率模型参数的算法,这里主要根据《统计学习方法》介绍了EM算法及其推广和应用,主要的是理解,EM算法的E,M步,以及Q函数的构造方法,这是本质的东西。

 

含隐变量模型求解——EM算法的更多相关文章

  1. 隐变量模型(latent variable model)

    连续隐变量模型(continuous latent model)也常常被称为降维(dimensionality reduction) PCA Factor Analysis ICA 连续的情形比离散的 ...

  2. 概率图模型之EM算法

    一.EM算法概述 EM算法(Expectation Maximization Algorithm,期望极大算法)是一种迭代算法,用于求解含有隐变量的概率模型参数的极大似然估计(MLE)或极大后验概率估 ...

  3. 机器学习五 EM 算法

    目录 引言 经典示例 EM算法 GMM 推导 参考文献: 引言 Expectation maximization (EM) 算法是一种非常神奇而强大的算法. EM算法于 1977年 由Dempster ...

  4. 文本主题模型之LDA(三) LDA求解之变分推断EM算法

    文本主题模型之LDA(一) LDA基础 文本主题模型之LDA(二) LDA求解之Gibbs采样算法 文本主题模型之LDA(三) LDA求解之变分推断EM算法 本文是LDA主题模型的第三篇,读这一篇之前 ...

  5. EM算法(Expectation Maximization Algorithm)初探

    1. 通过一个简单的例子直观上理解EM的核心思想 0x1: 问题背景 假设现在有两枚硬币Coin_a和Coin_b,随机抛掷后正面朝上/反面朝上的概率分别是 Coin_a:P1:-P1 Coin_b: ...

  6. EM算法浅析(二)-算法初探

    EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.EM算法简介 在EM算法之一--问题引出中我们介绍了硬币的问题,给出了模型的目标函数,提到了这种 ...

  7. 梯度下降和EM算法,kmeans的em推导

    I. 牛顿迭代法给定一个复杂的非线性函数f(x),希望求它的最小值,我们一般可以这样做,假定它足够光滑,那么它的最小值也就是它的极小值点,满足f′(x0)=0,然后可以转化为求方程f′(x)=0的根了 ...

  8. EM算法——Expectation-Maximization

    最大似然估计 一个栗子:假如去赌场,但是不知道能不能赚钱,你就在门口堵着出来一个人就问一个赚了还是赔了,如果问了5个人都说赚了,那么你就会认为,赚钱的概率肯定是非常大的. 已知:(1)样本服从分部的模 ...

  9. EM 算法(一)-原理

    讲到 EM 算法就不得不提极大似然估计,我之前讲过,请参考我的博客 下面我用一张图解释极大似然估计和 EM 算法的区别 EM 算法引例1-抛3枚硬币 还是上图中抛硬币的例子,假设最后结果正面记为1,反 ...

随机推荐

  1. 前端JS面试题汇总 Part 2 (null与undefined/闭包/foreach与map/匿名函数/代码组织)

    原文:https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/javascript-questio ...

  2. Vscode 插件

    HTML Snippets Markdown All in One Markdown PDF Markdown Priview Enhanced Markdown TOC Open HTML in D ...

  3. the c programing language 学习过程4

    4Functions and Program Structure scratch 刮擦 starting over from scratch从头开始 reside驻留 separately 分别的 f ...

  4. UVA - 247 Calling Circles Floyd判圈

    思路:利用的Floyd判圈,如果i能到j,j也能到i说明i和j在同一个圈里.每个人的名字可用map编号.最后DFS打印答案即可. AC代码 #include <cstdio> #inclu ...

  5. mex (离散化+线段树)

    Time Limit: 3000 ms   Memory Limit: 256 MB Description 给你一个无限长的数组,初始的时候都为0,有3种操作: 操作1是把给定区间$[l,r]$设为 ...

  6. 情景linux--shell如何实现多线程?

    情景linux--shell如何实现多线程? 情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的. ...

  7. Python接口自动化测试 HTTP协议

    一.HTTP协议简述 二.URL 三.请求 四.响应 五.消息报头 六.常见问题

  8. python如何使用pymysql模块

    Python 3.x 操作MySQL的pymysql模块详解 前言pymysql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而M ...

  9. SPFA+SLF+LLL优化模板

    #include<algorithm> #include <iostream> #include <cstdlib> #include <cstring> ...

  10. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 上一篇(R语言实现︱局部敏感哈希算法(LSH) ...