讲到 EM 算法就不得不提极大似然估计,我之前讲过,请参考我的博客

下面我用一张图解释极大似然估计和 EM 算法的区别

EM 算法引例1-抛3枚硬币

还是上图中抛硬币的例子,假设最后结果正面记为1,反面记为0,抛10次,结果为 1101001011;

下面我用数据公式解释下这个例子和 EM 算法;

三硬币模型可以写作

θ 表示模型参数,即 三枚硬币正面的概率,用 π p q 表示;

y 表示观测随机变量,取值为 0,1;

z 表示隐随机变量,在本例中就是 A 的正反面,或者是选择 B 还是不选择 B;

P(y|θ) 表示该参数下,y 出现的概率;

剩下的不多解释,很容易理解

将观测变量表示为 Y=(Y1,Y2...YN),将隐变量表示为 Z=(Z1,Z2...ZN),则观测变量的似然函数为

n 是实验次数

连乘取 log,转换成 θ 的对数似然函数

这个式子是问题的本质,但是它没有解析解,只能通过迭代求解

EM 算法就是一种迭代的算法

迭代首先要有个初值,即 θ 的初始化

假设我们已经迭代了 i 次,获得新的 θ

接下来要求 i+1 次的 θ      【这里就是要建立迭代关系,很重要的一步】

重点是得到隐随机变量的期望,根据 θi 得到第 i+1 次 B 出现的概率

  【B/B+C】

上式用概率表示为 P(B|y,θ) ,也就是在参数为 θ 时,基于 y 计算 B 的概率    【上式是李航教材里这么写的,个人认为应该是把所有观测变量 带入 该式子,然后求平均,也就是 B 的期望】

这是 B 出现的概率,也就是预估,或者说期望,Exception,也就是 EM 的 E 步

1-ui+1 也就是 C 出现的概率;

然后就可以根据观测变量,重新计算 θ

π 代表 A 出现正面的概率,等价于隐随机变量是 B 的概率,实验 n 次,求均值即可

p 代表 B 出现正面的概率,即隐变量是 B,然后观测变量是 1

q 代表 C 出现正面的概率,即隐变量是 C,然后观测变量是 1

似然函数解析

这一步使得 θ 的对数似然函数更大,即 EM 的 M 步,max

有了新的 θ,继续迭代即可,直至 θ 不变或者 θi+1i<阈值,停止迭代

笔者展示了如下迭代

我想强调的是 初值 对结果有影响,也就是 EM 算法对初值敏感

小结

EM 算法引例2-抛2枚硬币

有两枚硬币 A B,每次从两枚硬币中随机取一个,抛 10 次,记录每次正反面,总共取 5 次,也就是抛 50 次;

目标是预测 A B 各自正面朝上的概率

抛开这个问题,我们考虑一下,随便拿个硬币,抛100次,正面出现60次,反面出现40次,那这枚硬币正面朝上的概率岂不就是 0.6,是的,然后回到我们的实验

极大似然

假如我们知道每次取得是 A 还是 B,那就没有隐变量,转换成极大似然问题,很简单;

EM

现在我们不知道取出来的是 A 还是 B,就有了隐变量,转换成 EM 问题

EM 算法

由以上两个例子,我们引出 EM 算法的具体描述

EM 算法的收敛

EM算法是可以正面收敛性的,后续在补充吧,毕竟麻烦

参考资料:

https://zhuanlan.zhihu.com/p/36331115  人人都懂EM算法

https://www.zhihu.com/question/40797593/answer/275171156

https://zhuanlan.zhihu.com/p/78311644

https://zhuanlan.zhihu.com/p/60376311  猴子也能理解的EM算法

https://blog.csdn.net/u014157632/article/details/65442165

《统计学习方法》 李航

《机器学习》 周志华

EM 算法(一)-原理的更多相关文章

  1. EM算法原理总结

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

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

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

  3. 机器学习中的EM算法具体解释及R语言实例(1)

    最大期望算法(EM) K均值算法很easy(可參见之前公布的博文),相信读者都能够轻松地理解它. 但以下将要介绍的EM算法就要困难很多了.它与极大似然预计密切相关. 1 算法原理 最好还是从一个样例開 ...

  4. EM算法原理简析——图解

    一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过 ...

  5. 2. EM算法-原理详解

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 概率 ...

  6. EM算法原理以及高斯混合模型实践

    EM算法有很多的应用: 最广泛的就是GMM混合高斯模型.聚类.HMM等等. The EM Algorithm 高斯混合模型(Mixtures of Gaussians)和EM算法 EM算法 求最大似然 ...

  7. EM算法原理

    在聚类中我们经经常使用到EM算法(i.e. Estimation - Maximization)进行參数预计, 在该算法中我们通过函数的凹/凸性,在estimation和maximization两步中 ...

  8. EM算法原理详解

    1.引言 以前我们讨论的概率模型都是只含观测变量(observable variable), 即这些变量都是可以观测出来的,那么给定数据,可以直接使用极大似然估计的方法或者贝叶斯估计的方法:但是当模型 ...

  9. EM算法--原理

    EM算法即期望最大化(Expection Maximization)算法,是一种最优化算法,在机器学习领域用来求解含有隐变量的模型的最大似然问题.最大似然是一种求解模型参数的方法,顾名思义,在给定一组 ...

随机推荐

  1. HDU6140--Hybrid Crystals(思维)

    Hybrid Crystals Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  2. 十一、spring插件

    1.STS插件_ springsource-tool-suite插件各个历史版本 2.eclipse安装spring的插件 3.奇技淫巧:在spring官网上下载历史版本的spring插件,sprin ...

  3. Linux Shell脚本,删除旧文件,保留最新的几个文件

    删除某一目录下文件,只保留最新的几个 #!/bin/bash #保留文件数 ReservedNum= FileDir=/home/dev/saas_test/testcases/report/html ...

  4. Vue_(组件通讯)单项数据流

    Vue单项数据流 传送门 单向数据流:父组件值的更新,会影响到子组件,反之则不行 修改子组件的值: 局部数据:在子组件中定义新的数据,将父组件传过来的值赋值给新定义的数据,之后操作这个新数据 如果对数 ...

  5. [BZOJ2730]:[HNOI2012]矿场搭建(塔尖)

    题目传送门 题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个 ...

  6. error while loading shared libraries: libXXXX.so: cannot open shared object file: No such file or directory

    出现这个问题的原因是运行程序缺少依赖库,或者运行程序的依赖库缺少依赖库,可能你的本地目录下面就有这个库文件,但是linux搜索路劲不会从当前路径下去搜索:这种情况可能出现在切换环境上,可能你在一个li ...

  7. HearthBuddy的plugin加载

    // Hearthbuddy.Windows.MainWindow // Token: 0x060001FF RID: 511 RVA: 0x0008951C File Offset: 0x00087 ...

  8. 利用uniGUI中的TUniPageControl实现多页面

    远行效果: 实现代码: procedure TfrmMain.OpenForm(Caption,FormClassName:string);var  i:integer;  sheet:TUniTab ...

  9. html页面元素命名参考

    页面结构: (1)页面结构 容器: container 页头:header 内容:content/container 页面主体:main 页尾:footer 导航:nav 侧栏:sidebar 栏目: ...

  10. ValueStack对象

    ValueStack, 即值栈对象. 值栈对象: 是整个struts数据存储的核心,或者叫中转站. 用户每次访问struts的action,都会创建一个Action对象.值栈对象.ActionCont ...