https://applenob.github.io/em.html

EM算法总结

在概率模型中,最常用的模型参数估计方法应该就是最大似然法

EM算法本质上也是最大似然,它是针对模型中存在隐变量的情况的最大似然

下面通过两个例子引入。

没有隐变量的硬币模型

假设有两个硬币,AA和BB,这两个硬币具体材质未知,即抛硬币的结果是head的概率不一定是50%。

在这个实验中,我们每次拿其中一个硬币,抛10次,统计结果。

实验的目标是统计AA和BB的head朝上的概率,即估计θ̂ Aθ^A和θ̂ Bθ^B。

对每一枚硬币来说,使用极大似然法来估计它的参数:

假设硬币AA正面朝上的次数是nAhnhA,反面朝上的次数是:nAtntA。

似然函数:L(θA)=(θA)nAh(1−θA)nAtL(θA)=(θA)nhA(1−θA)ntA。

对数似然函数:logL(θA)=nAh⋅log(θA)+nAt⋅log(1−θA)logL(θA)=nhA⋅log(θA)+ntA⋅log(1−θA)。

θ̂ A=argmaxθAlogL(θA)θ^A=argmaxθAlogL(θA) 。

对参数求偏导:∂logL(θA)∂θA=nAhθA−nAt1−θA∂logL(θA)∂θA=nhAθA−ntA1−θA。

令上式为00,解得:θ̂ A=nAhnAh+nAtθ^A=nhAnhA+ntA。

即θ̂ A=numberofheadsusingcoinAtotalnumberofflipsusingcoinAθ^A=numberofheadsusingcoinAtotalnumberofflipsusingcoinA。

 

有隐变量的硬币模型

这个问题是上一个问题的困难版,即给出一系列统计的实验,但不告诉你某组实验采用的是哪枚硬币,即某组实验采用哪枚硬币成了一个隐变量

这里引入EM算法的思路

  • 1.先随机给出模型参数的估计,以初始化模型参数。
  • 2.根据之前模型参数的估计,和观测数据,计算隐变量的分布
  • 3.根据隐变量的分布,求联合分布的对数关于隐变量分布的期望
  • 4.重新估计模型参数,这次最大化的不是似然函数,而是第3步求的期望

一般教科书会把EM算法分成两步:E步和M步,即求期望和最大化期望。

E步对应上面2,3;M对应4。

 

EM算法

输入:观测变量数据YY,隐变量数据ZZ,联合分布P(Y,Z|θ)P(Y,Z|θ),条件分布P(Z|Y,θ)P(Z|Y,θ);

输出:模型参数θθ。

  • 1.选择参数的初始值θ(0)θ(0),开始迭代;
  • 在第i+1i+1次迭代:
    • 2.E步:Q(θ,θ(i))=∑zlogP(Y,Z|θ)P(Z|Y,θ(i))Q(θ,θ(i))=∑zlogP(Y,Z|θ)P(Z|Y,θ(i))
    • 3.M步:Q(i+1)=argmaxθQ(θ,θ(i))Q(i+1)=argmaxθQ(θ,θ(i))
  • 4.重复2,3直至收敛。

转:EM算法总结的更多相关文章

  1. 学习笔记——EM算法

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

  2. K-Means聚类和EM算法复习总结

    摘要: 1.算法概述 2.算法推导 3.算法特性及优缺点 4.注意事项 5.实现和具体例子 6.适用场合 内容: 1.算法概述 k-means算法是一种得到最广泛使用的聚类算法. 它是将各个聚类子集内 ...

  3. EM算法总结

    EM算法总结 - The EM Algorithm EM是我一直想深入学习的算法之一,第一次听说是在NLP课中的HMM那一节,为了解决HMM的参数估计问题,使用了EM算法.在之后的MT中的词对齐中也用 ...

  4. GMM的EM算法实现

    转自:http://blog.csdn.net/abcjennifer/article/details/8198352 在聚类算法K-Means, K-Medoids, GMM, Spectral c ...

  5. EM算法(4):EM算法证明

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(4):EM算法证明 1. 概述 上一篇博客我们已经讲过 ...

  6. EM算法(3):EM算法运用

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(3):EM算法运用 1. 内容 EM算法全称为 Exp ...

  7. EM算法(2):GMM训练算法

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(2):GMM训练算法 1. 简介 GMM模型全称为Ga ...

  8. EM算法(1):K-means 算法

    目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(1) : K-means算法 1. 简介 K-mean ...

  9. [MCSM]随机搜索和EM算法

    1. 概述 本节将介绍两类问题的不同解决方案.其一是通过随机的搜索算法对某一函数的取值进行比较,求取最大/最小值的过程:其二则和积分类似,是使得某一函数被最优化,这一部分内容的代表算法是EM算法.(书 ...

  10. EM算法

    EM算法的推导

随机推荐

  1. bzoj1503 郁闷的出纳员

    Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经 ...

  2. UVALive 6911 Double Swords 树状数组

    Double Swords 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...

  3. Jmeter自定义编写Java代码调用socket通信

    一.前言 最近需要测试一款手机游戏的性能,找不到啥录制脚本的工具,然后,另外想办法.性能测试实际上就是对服务器的承载能力的测试,和各种类型的手机客户端没有啥多大关系,手机再好,服务器负载不了,也不能够 ...

  4. [Go] 反射 - reflect.ValueOf()

    类型 和 接口 由于反射是基于类型系统(type system)的,所以先简单了解一下类型系统. 首先 Golang 是一种静态类型的语言,在编译时每一个变量都有一个类型对应,例如:int, floa ...

  5. JAVA 对象序列化(二)——Externalizable

    Java默认的序列化机制非常简单,而且序列化后的对象不需要再次调用构造器重新生成,但是在实际中,我们可以会希望对象的某一部分不需要被序列化,或者说一个对象被还原之后,其内部的某些子对象需要重新创建,从 ...

  6. Redis源代码分析(三十三)--- redis-cli.cclient命令行接口的实现(2)

    今天学习完了命令行client的兴许内容,总体感觉就是环绕着2个东西转,config和mode.为什么我会这么说呢,请继续往下看,client中的配置结构体和之前我们所学习的配置结构体,不是指的同一个 ...

  7. 在Visual Studio中开发一个C语言程序

    →新建一个项目→选择"其他语言","Visual C++",并选择"win32控制台应用程序",并给控制台应用程序起名.→点击"下 ...

  8. 在ASP.NET MVC中使用Knockout实践07,自定义验证信息的位置与内容

    在前两篇中,体验了Knockout的基本验证和自定义验证.本篇自定义验证信息的显示位置与内容. 自定义验证信息的显示位置 通常,Knockout的验证信息紧跟在input后面,通过validation ...

  9. lufylegend:文本、鼠标事件、键盘事件

    1.文本 <script type="text/javascript">init(50,"mylegend",500,350,main);funct ...

  10. Spring整合Disruptor

    原文:https://segmentfault.com/a/1190000014469173 什么是Disruptor 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列.那 ...