EM算法(Expectation-maximization),又称最大期望算法,是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计(或极大后验概率估计)

从定义可知,该算法是用来估计参数的,这里约定参数为  。既然是迭代算法,那么肯定有一个初始值,记为  ,然后再通过算法计算 

通常,当模型的变量都是观测变量时,可以直接通过极大似然估计法,或者贝叶斯估计法估计模型参数。但是当模型包含隐变量时,就不能简单的使用这些估计方法

举个具体的栗子:

永远在你身后:Matplotlib输出动画实现K-means聚类过程可视化​zhuanlan.zhihu.com

K-means算法中,除了给定的样本(也就是观测变量)  以及参数  (也就是那些个聚类的中心)之外,还包含一个隐变量(记为  ),它是每个样本的所属类别

可以理解为,我们之所以对一批样本进行聚类,也是因为认为这些样本是有它们潜在的类别的,也就是说还有一个隐变量是我们没有(或者无法)观测到的

下面先给出EM算法的步骤公式,然后再对公式进行推导。假设在第  次迭代后参数的估计值为  ,对于第  次迭代,分为两步

  • E步,求期望:

关于的随机变量的函数的期望,公式在后面会给出

  • M步,最大化:

其中,  称为  函数,是EM算法的核心。下面就来对公式进行推导


给定一组观测数据记为  ,以及参数  。因为  是独立同分布,所以有以下对数似然函数:

可以通过极大似然估计来求解最优参数,即:

但是由于隐变量的存在,  变为

注意:联合概率公式 P(XZ)=P(X|Z)P(Z)

这样直接求解就变得困难,一个办法是构造一个容易优化的——关于对数似然函数的——下界函数,通过不断的优化这个下界,迭代逼近最优参数。为了方便下面推导流畅,提前先贴几个公式

随机变量的数学期望

随机变量函数的数学期望。设  ,则  的期望为:

相对熵

下面是具体的推导。首先引入隐变量  的概率分布  ,满足

并且以下等式成立

两边同时取对数

同时求两边在  上的期望

因为  与  无关,所以求期望仍然不变:

然后将右边展开

由此得到对数似然函数的下界。并且当  ,上式可以取到等号,由相对熵的性质可知,相对熵为0,也就是 

其中  是  的概率分布,但是因为无法观测  ,所以  未知,可以假设其等于  ,也就是  关于给定  与  的后验,且  是由初始值  一次次迭代计算而来,所以此处的  是迭代  次后的值

然后通过极大似然估计得到:

以上,就是EM算法中E步的由来,然后令  ,就得到了M步的公式

以上就是EM算法的推导过程,为了加深理解,我们可以换一个角度来总结一下。前面我们定义了似然函数

由于累加号嵌套在  函数中,难以直接进行求解,如果换一个似然函数,就容易的多

但是,又由于的  是隐变量,无法得到它的概率分布,只能通过给定的  和  来计算它的后验分布,然后求似然函数在此分布上的期望

最后,再寻找能使似然函数的期望最大化的参数

EM算法理论与推导的更多相关文章

  1. Machine Learning系列--EM算法理解与推导

    EM算法,全称Expectation Maximization Algorithm,译作最大期望化算法或期望最大算法,是机器学习十大算法之一,吴军博士在<数学之美>书中称其为“上帝视角”算 ...

  2. EM算法定义及推导

    EM算法是一种迭代算法,传说中的上帝算法,俗人可望不可及.用以含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计 EM算法定义 输入:观测变量数据X,隐变量数据Z,联合分布\(P(X,Z|\t ...

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

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

  4. 高斯混合模型参数估计的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 ...

  5. EM算法(Expectation Maximization Algorithm)

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

  6. EM算法求高斯混合模型參数预计——Python实现

    EM算法一般表述:       当有部分数据缺失或者无法观察到时,EM算法提供了一个高效的迭代程序用来计算这些数据的最大似然预计.在每一步迭代分为两个步骤:期望(Expectation)步骤和最大化( ...

  7. EM算法 小结

    猴子吃果冻 博客园 首页 新随笔 联系 管理 订阅 随笔- 35  文章- 0  评论- 3  4-EM算法原理及利用EM求解GMM参数过程   1.极大似然估计 原理:假设在一个罐子中放着许多白球和 ...

  8. 【机器学习】EM算法详细推导和讲解

    今天不太想学习,炒个冷饭,讲讲机器学习十大算法里有名的EM算法,文章里面有些个人理解,如有错漏,还请读者不吝赐教. 众所周知,极大似然估计是一种应用很广泛的参数估计方法.例如我手头有一些东北人的身高的 ...

  9. EM算法以及推导

    EM算法 Jensen不等式 其实Jensen不等式正是我们熟知的convex函数和concave函数性质,对于convex函数,有 \[ \lambda f(x) + (1-\lambda)f(y) ...

随机推荐

  1. iOS/swift 单选框和复选框

    /** 复选框 */ import UIKit class LYBmutipleSelectView: UIView { var selectindexs:[Int]=[]//选中的 //标题数组 v ...

  2. NASH:基于丰富网络态射和爬山算法的神经网络架构搜索 | ICLR 2018

    论文提出NASH方法来进行神经网络结构搜索,核心思想与之前的EAS方法类似,使用网络态射来生成一系列效果一致且继承权重的复杂子网,本文的网络态射更丰富,而且仅需要简单的爬山算法辅助就可以完成搜索,耗时 ...

  3. skfpdb.db、cc3268.dll、system_V2.dat、JI60JS.dat文件内容、发票数据查询

    cc3268.dll.skfpdb.db.xxxxx_V2.dat,system.dat,JI60JS.dat,log.dat,system_V2.dat,JI60JS_V2.dat,log_V2.d ...

  4. 2.K8S的核心资源管理方法

    目录 1.1陈述式资源管理方法 1.1.1.管理名称空间资源 1.1.2.管理Deployment资源 1.1.3.管理Service资源 1.1.4.kubectl用法总结 1.2.声明式资源管理方 ...

  5. WeChair项目Alpha冲刺(3/10)

    团队项目进行情况 1.昨日进展    Alpha冲刺第三天 昨日进展: 前端初步完成小程序预约页的html+css设计 后端springboot项目测试运行HelloWorld通过,以及LoginCo ...

  6. 多语言工作者の十日冲刺<7/10>

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺--第七天(05.06) 作业正文 ...

  7. 升级OPENSSH踩过的坑

    安装三个必要依赖包yum install gcc zlib-devel openssl-devel上传安装包,创建一个/tmp目录下,然后解压,将/etc/ssh/目录移动到本地解压安装包,进入安装目 ...

  8. 图解leetcode5-10 | 和233酱一起刷leetcode系列(2)

    本周我们继续来看5道磨人的小妖精,图解leetcode6-10- 多说一句,leetcode10 杀死了233酱不少脑细胞... 另: 沉迷算法,无法自拔.快来加入我们吧! 别忘了233酱的一条龙服务 ...

  9. Java 重写hashCode()与equals()

    为什么要重写hashCode() 和 equals() equals() 默认的Object类里面equals()方法是根据对象所在的内存来做判断的,如果两个对象引用指向的是同一个内存,则返回true ...

  10. JavaWeb网上图书商城完整项目--21.用户模块各层相关类的创建

    1.现在要为user用户模块创建类 用户模块功能包括:注册.激活.登录.退出.修改密码. User类对照着t_user表来写即可.我们要保证User类的属性名称与t_user表的列名称完全相同. 我们 ...