概述

EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计。

EM算法的每次迭代由两步组成:E步,求期望(expectation);M步,求极大( maximization ),所以这一算法称为期望极大算法(expectation maximization algorithm),简称EM算法。

 EM算法的引入

一般地,用Y表示观测随机变量的数据,Z表示隐随机变量的数据。Y和Z连在一起称为完全数据( complete-data ),观测数据Y又称为不完全数据(incomplete-data)。

假设给定观测数据Y,其概率分布是P(Y | theta),其中theta是需要估计的模型参数,那么不完全数据Y的似然函数是P(Y | theta),对数似然函数L(theta)=logP(Y | theta);假设Y和Z的联合概率分布是P(Y, Z),那么完全数据的对数似然函数是log P(Y, Z | theta)。

1、EM算法定义

2、Q函数定义

完全数据的对数似然函数log P(Y, Z | theta)关于在给定观测数据Y和当前参数theta(i)下对未观测数据Z的条件概率分布P(Z | Y,theta(i))的期望称为Q函数,即

3、EM算法说明

步骤(1)  参数的初值可以任意选择。但需注意EM算法对初值是敏感的。
步骤(2)  E步求Q(theta, theta(i))。Q函数式中Z是未观测数据,Y是观测数据。注意,Q(theta, theta(i))的第1个变量theta表示要极大化的参数,第2个变量theta(i)表示参数的当前估计值。每次迭代实际在求Q函数及其极大。
步骤(3)  M步求Q(theta, theta(i))的极大化,得到theta(i+1),完成一次迭代theta(i)更新至theta(i+1)。后面将证明每次迭代使似然函数增大或达到局部极值。
步骤(4)  给出停止迭代的条件,一般是对较小的正数,若满足则停止迭代.

4、EM算法导出

通过近似求解观测数据的对数似然函数的极大化问题来导出EM算法,由此可以清楚地看出EM算法的作用。面对一个含有隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数theta的对数似然函数,即极大化:

这一极大化的主要困难是式中有未观测数据并有包含和(或积分)的对数。

(1)每次迭代需要满足:新估计值 theta能使L(theta)增加,并逐步达到极大值。i次迭代前后的差值为:

(2)利用jensen不等式可以得出下界:

且有

(3)选择theta(i+1)使B极大:

EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法,简单图示如下:

(有其他的推导方式,见博客http://www.cnblogs.com/bigmoyan/p/4550375.html还有https://www.cnblogs.com/pinard/p/6912636.html)

5、EM算法在非监督学习中的应用

训练数据只有输入没有对应的输出(X,?),从这样的数据学习模型称为非监督学习问题。EM算法可以用于生成模型的非监督学习,生成模型由联合概率分布P(X, Y)表示,可以认为非监督学习训练数据是联合概率分布产生的数据。X为观测数据,Y为未观测数据。

EM算法的收敛性

定理9.1 设P(Y | theta)为观测数据的似然函数,theta(i) (i=1, 2,...)为EM算法得到的参数估计序列,P(Y | theta(i) )(i=1, 2,...))为对应的似然函数序列,则P(Y | theta(i) )是单调递增的,即

定理9.2 设P(Y | theta)为观测数据的似然函数,theta(i) (i=1, 2,...)为EM算法得到的参数估计序列,L(theta(i))=P(Y | theta(i) )(i=1, 2,...))为对应的似然函数序列,
(1)如果P(Y | theta)有上界,则L(theta(i))收敛到某一值L*;
(2)在函数Q与L满足一定条件下,由EM算法得到的参数估计序列theta(i)的收敛值theta*是L(theta)的稳定点。

EM算法的收敛性包含关于对数似然函数序列L的收敛性和关于参数估计序列theta的收敛性两层意思,前者并不蕴涵后者。

此外,定理只能保证参数估计序列收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点。所以在应用中,初值的选择变得非常重要,常用的办法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。

 

EM算法在高斯混合模型学习中的应用

1、高斯混合模型

2、推导

假设观测数据由高斯混合模型生成,

(1)明确隐变量。写出完全数据的对数似然函数

可以设想观测数据yj是这样产生的:首先依概率ak选择第k个高斯分布分模型;然后依第k个分模型的概率分布生成观侧数据yj
这时观测数据yj是已知的;反映观测数据yj来自第k个分模型的数据是未知的,k=1,2,... ,K,隐变量定义如下:

完全数据的似然函数为:

其中,

对数似然函数为:

(2)EM算法的E步:确定Q函数

注意:第二行改错:

式中的那个期望计算如下:

这个期望是在当前模型参数下第j个观测数据来自第k个分模型的概率,称为分模型k对观测数据yj的响应度。

代回原式得:

(3)确定EM算法的M步

迭代的M步是求函数Q对theta的极大值,即求新一轮迭代的模型参数:

3、高斯混合模型参数估计的EM算法

EM算法的推广

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

。。。不好意思,还没看懂,我后续会补。

EM算法及其推广的更多相关文章

  1. 《统计学习方法》笔记九 EM算法及其推广

    本系列笔记内容参考来源为李航<统计学习方法> EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计.迭代由 (1)E步:求期望 (2)M步:求极大 组成,称 ...

  2. EM算法及其推广的要点

    1.EM算法是含有隐变量的变量的概率模型极大似然估计或极大后验概率估计的迭代算法,含有隐变量的概率模型的数据表示为$P(Y,Z|\theta)$.这里,$Y$是观测变量的数据,$Z$是隐变量的数据,$ ...

  3. 高斯混合模型参数估计的EM算法

    # coding:utf-8 import numpy as np def qq(y,alpha,mu,sigma,K,gama):#计算Q函数 gsum=[] n=len(y) for k in r ...

  4. 含隐变量模型求解——EM算法

    1 EM算法的引入1.1 EM算法1.2 EM算法的导出2 EM算法的收敛性3EM算法在高斯混合模型的应用3.1 高斯混合模型Gaussian misture model3.2 GMM中参数估计的EM ...

  5. 机器学习——EM算法

    1 数学基础 在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值,对于一些特殊的函数,凸函数与凹函数,任何局部极值也是全局极致,因此如果目标函数是凸的或凹的,那么优化算法 ...

  6. 学习笔记——EM算法

    EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步组成:E步,求期望(expectation):M步,求 ...

  7. 斯坦福大学机器学习,EM算法求解高斯混合模型

    斯坦福大学机器学习,EM算法求解高斯混合模型.一种高斯混合模型算法的改进方法---将聚类算法与传统高斯混合模型结合起来的建模方法, 并同时提出的运用距离加权的矢量量化方法获取初始值,并采用衡量相似度的 ...

  8. 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)

    今天要来讨论的是EM算法.第一眼看到EM我就想到了我大枫哥,EM Master,千里马.RUA!!!不知道看这个博客的人有没有懂这个梗的. 好的,言归正传.今天要讲的EM算法,全称是Expectati ...

  9. EM算法及其应用(一)

    EM算法及其应用(一) EM算法及其应用(二): K-means 与 高斯混合模型 EM算法是期望最大化 (Expectation Maximization) 算法的简称,用于含有隐变量的情况下,概率 ...

随机推荐

  1. 谁有stanford ner训练语料

    [冒泡]良橙(1759086270) 12:14:17请教大家一个问题,我有1w多句用户的问题,但是有些包含了一些骂人,数字,特殊符号,甚至,语句不通,有什么方法可以过滤不[吐槽]爱发呆的小狮子(19 ...

  2. SQLServer 重启服务后,自增1的标识列一次增长了1000(转自博问)

    sql2012:我重启了下sql服务,然后自增列Id居然一下子跳了100,怎么回事啊?(之前的数据Id为1,我重启服务后,第二条数据Id就变成1001了),我自增是1,求大神帮忙啊 SQLServer ...

  3. Navicat 连接 Mysql8.0 出现2059问题的解决方法

    ``` 登陆Mysql后执行命令 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; ...

  4. AutoLayout 的一些坑

    1. 给一个 UIView 加约束,希望它显示在 UITableView 的底部,但是它不显示,它会出现在 UITableView 的顶部. 错误代码: [self.tableView addSubv ...

  5. Hive 常用语句(持续更新中)

    1)按包含关键字在指定库中查找表名:show tables in dw '*_fab_*';   2)查看和删除自己hdfs系统所用的空间和文件(与shell命令合用):hive命令行下: --查看仓 ...

  6. linux常用命令:find 命令之 exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...

  7. linux基础命令---df

    df 显示磁盘分区上的磁盘使用状况,可以显示出文件系统名称.大小.挂载点等信息.df显示包含每个文件名参数的文件系统上可用的磁盘空间.如果不给出文件名,则显示所有当前挂载的文件系统上可用的空间.默认情 ...

  8. 解读 Q_D, Q_Q 指针

    见 qglog.h文件定义: #define Q_D(Class) Class##Private * const d = d_func()    #define Q_Q(Class) Class * ...

  9. CEF之CefSettings设置日志等级

    CefSettings结构体允许定义全局的CEF配置,经常用到的配置项如下: single_process 设置为true时,Browser和Renderer使用一个进程.此项也可以通过命令行参数“s ...

  10. 客户端向服务端请求连接是出现"ssh : Connection refused"原因有哪些

    注意:服务端的sshd服务已经正常开启 (可以正常进行连接) 1.在服务端负载比较高的情况下客户端请求连接时会出现连接被拒绝的情况