期望极大值算法(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. php define和const的区别

    1.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数2.const用于类成员变量的定义,一经定义,不可修改.3.Define不可以用于类成员变量的定义,可用于全 ...

  2. Base64算法原理

    3个Byte (3 X 8 = 24 bits) 以3个字节为单位,依次取6位数据,并在前面补上2个0.这样就增加了一个字节的数据.

  3. CentOS6.8配置GO语言开发环境

    Go语言是谷歌2009发布的第二款开源编程语言,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 鉴于原来越多的开源项 ...

  4. linux服务器ssh、公匙和密钥实战详解

    一..我们先建好一上haiwen用户用来,做为密码钥和SSH对像 二.修改vi /etc/ssh/sshd_config 文件,禁用ROOT远程直接登录. 三.ssh的公钥认证配置,只能用密匙才能登录 ...

  5. 织梦调用seotitle

    如果有seotitle则调用seotitle,没有则调用title {dede:field.array runphp='yes'} if(@me['seotitle']=='') {@me=@me[' ...

  6. [bzoj3998][TJOI2015]弦论-后缀自动机

    Brief Description 给定一个字符串, 您需要求出他的严格k小子串或非严格k小子串. Algorithm Design 考察使用后缀自动机. 首先原串建SAM, 然后如果考察每个状态代表 ...

  7. 拥抱.NET Core系列:MemoryCache 初识

    Cache是一个绝大多数项目会用到的一个技术,说起到缓存可能就联想到 Set.Add.Get.Remove.Clear 这几个方法.那么在.NET Core中微软给我们带来了什么样的缓存体验呢?今天我 ...

  8. JetBrains Rider 破解 (ideaIU等等开发工具都通用)2018-02-27

    贴一下Rider下载地址:(下载不了可以用百度云离线下载) Win:https://download.jetbrains.com/resharper/JetBrains.Rider-2017.3.1. ...

  9. C# HelpPage 接口文档配置

    1.打开项目路径如下的类文件: 1.1.找类方法 Register 下的 config.SetDocumentationProvider 并取消注释,修改 ~/App_Data/XmlDocument ...

  10. [翻译]编写高性能 .NET 代码 第一章:工具介绍 -- Visual Studio

    <<返回目录 Visual Studio vs虽然不是全宇宙唯一的IDE,但它是.net开发人员最常用的开发工具.它自带一个性能分析工具,你可以使用它来做开发,不同的vs版本在工具上会略有 ...