目录

一 样例

二 公式描述

三 参考文献


          最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。

最大期望算法经过两个步骤交替进行计算:

第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;

第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。

一 样例

举个例子,抛硬币,有两个硬币,但是两个硬币的材质不同导致其出现正反面的概率不一样,目前我们只有一组观测数据,要求出每一种硬币投掷时正面向上的概率。总共投了五轮,每轮投掷五次,现在先考虑一种简单的情况,假设我们知道这每一轮用的是哪一个硬币去投掷的:

那么我们拿着这样的一组数据,就可以很轻松的估计出A硬币和B硬币出现正面的概率,如下:

PA = (3+1+2)/ 15 = 0.4

PB= (2+3)/10 = 0.5

现在把问题变得复杂一点,假设我们不知道每一次投掷用的是哪一种硬币,等于是现在的问题加上了一个隐变量,就是每一次选取的硬币的种类。

那么现在可以想一想,假设我们把每一次硬币的种类设为z,则这五次实验生成了一个5维的向量(z1,z2,z3,z4,z5),现在问题来了,如果我们要根据观测结果去求出PA,PB,那么首先需要知道z,但是如果用最大似然估计去估计z,又要先求出PA,PB。这就产生了一个循环。那么这个时候EM算法的作用就体现出来了,EM算法的基本思想是:先初始化一个PA,PB,然后我们拿着这个初始化的PA,PB用最大似然概率估计出z,接下来有了z之后就用z去计算出在当前z的情况下的PA,PB是多少,然后不断地重复这两个步骤直到收敛。

有了这个思想之后现在用这个思想来做一下这个例子,假设初始状态下PA=0.2, PB=0.7,然后我们根据这个概率去估计出z:

按照最大似然估计,z=(B,A,A,B,A),有了z之后我们反过来重新估计一下PA,PB:

PA = (2+1+2)/15 = 0.33

PB =(3+3)/10 = 0.6

可以看到PA,PB的值已经更新了,假设PA,PB的真实值0.4和0.5,那么你在不断地重复这两步你就会发现PA,PB在不断地靠近这两个真实值。

二 公式描述

假设目标函数表示为:

其中为概率分布的参数,在没有隐变量的情况下,我们求解L的最大值的套路是先对L取对数,将连乘的形式转换成累加的形式,然后就可以对未知数进行求导,只需要求得导数为0的位置未知量的值即为目标函数的极大值。但是,如果概率分布中有隐变量存在时,我们用全概率公式把隐变量在上式中体现出来:

全概率公式:

其中A需是一组完备事件组且都有正概率,则对任意B上式都成立。

两边同时取对数ln:

从上式中可以看出,如果要按照之前的套路,那就需要对上式进行求偏导,但是由于ln中还包含了求和项,在偏导数中的形式将会非常复杂,而且很难求得解析解。因此需要找到一种办法去求得解析解的近似解,这里就引入了EM算法。为了表述的方便性,在这里用代表,则:

对于求解近似解,EM算法采用的是迭代的方式不断地逼近真实值,假设第n次迭代的参数值为,第n+1次迭代的参数值为,那么其实只要满足就可以不断地进行迭代。现在假设我们已经进行到了第n次迭代,也就是说目前是作为已知的值,那么来看一看

由于这里是作为常数的,因此右式中的第二项可以不用将隐变量体现出,化简如下:

上式中,其实只需要关注求和里面的项就好了,做一个标注,记为I项,记为II项,接下来分别对这两项进行化简:

I项:

上式中的变换是因为

接下来还会用到Jensen不等式,Jensen不等式是这么描述的:

假设f(x)为凸函数,X是随机变量,那么:E[f(X)]>=f(E[X]),通俗的说法是函数的期望大于等于期望的函数。

特别地,如果f是严格凸函数,当且仅当  ,即  是常量时,上式取等号,即,如下图所示:

再观察一下I项,感觉有一些像能够用Jensen不等式进行再一次的化简,下面写的直观一点:

当成X,那么上式就是EX,又因为ln函数是凹函数,所以根据Jensen不等式有f(E[X])>=E[f(X)],则

II项:

然后再把I-II合并起来看一下:

将上式代回

将右边的这一大串记为,称为下边界函数,EM算法的目的是要取得目标函数的极大值,那么可以通过不断地提升下边界函数值来不断地提升目标函数的值,接下来,再看一下,将其化简为便于优化迭代的形式:

可以看到在等式的右边,由于我们之前的假设是是已知的,那么把已知量和未知量分开:

上式中,等号右边的第一项中带未知项,第二项和第三项都是常数,所以接下来的过程就简单了,我们只要对这个式子求偏导,求得此时取极大值时的取值,这个值就是进入到下一步迭代是的概率分布参数值,有了之后就可以获得,然后不断地迭代直到收敛。图示的话如下:

三 参考文献

1. 如何通俗理解EM算法

【机器学习基础】EM算法相关推荐

  1. em算法怎么对应原有分类_机器学习基础-EM算法

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

  2. 机器学习基础 EM算法

    文章目录 一.初识EM算法 二.EM算法介绍 1. 极大似然估计 1.1 问题描述 1.2 用数学知识解决现实问题 1.3 最大似然函数估计值的求解步骤 2. EM算法实例描述 3. EM算法流程 三 ...

  3. 机器学习基础-经典算法总结

    机器学习基础-经典算法 逻辑回归 逻辑回归的原理,问题的假设 为什么逻辑回归也可称为对数几率回归 推导逻辑回归损失函数 逻辑回归损失函数求导 逻辑回归为什么使用交叉熵作为损失函数 LR是不是凸优化问题 ...

  4. 【机器学习基础】算法工程师必备的机器学习--EM

    『运筹OR帷幄』原创 作者:华校专 作者信息: 华校专,曾任阿里巴巴资深算法工程师.智易科技首席算法研究员,现任腾讯高级研究员,<Python 大战机器学习>的作者. 编者按: 算法工程师 ...

  5. 机器学习算法_机器学习之EM算法和概率图模型

    [晓白]今天我准备更新Machine Learning系列文章希望对机器学习复习和准备面试的同学有帮助!之前更新了感知机和SVM,决策树&代码实战,关注我的专栏可以的文章哦!今天继续更新EM算 ...

  6. em算法 实例 正态分布_【机器学习】EM算法详细推导和讲解

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

  7. 机器学习 之 EM算法

    EM(Expectation-Maximum)算法也称期望最大化算法 EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture m ...

  8. 机器学习之EM算法的原理及推导(三硬币模型)及Python实现

    EM算法的简介 EM算法由两步组成:E步和M步,是最常用的迭代算法. 本文主要参考了李航博士的<统计学习方法> 在此基础上主要依据EM算法原理补充了三硬币模型的推导. 1.EM算法的原理 ...

  9. 机器学习之EM算法的原理推导及相关知识总结

    文章目录 1.知道先验概率和后验概率 2.了解高斯混合模型GMM 3.通过最大似然估计推导EM算法的过程的实例 4.EM算法 5.知道pLSA模型 1.知道先验概率和后验概率 先验概率(prior p ...

  10. 【机器学习】EM算法

    EM算法 目录 一.似然函数与极大似然估计 二.Jenson不等式 三.数学期望的相关定理 四.边缘分布列 五.坐标上升法 六.EM算法 1. 概论 2. 算法流程 3. 算法的推导 4. 敛散性证明 ...

最新文章

  1. Python错误“ ImportError:未命名模块”
  2. 小白学数据分析-----回归分析在游戏人气分析的应用探索
  3. Windows,远程计算机:X.X.X.X,这可能是由于CredSSP加密Oracle修正
  4. Linux学习笔记4-三种不同类型的软件的安装(绿色软件、rpm软件、源代码软件)...
  5. 一文读懂 JAVA 异常处理
  6. faster rcnn windows 下c++版本
  7. dsoFramer 的原代码
  8. Qt Load and Save PCL/PLY 加载和保存点云
  9. 中国移动技术愿景2020+
  10. java volatile 原子性_Java中volatile不能保证原子性的证明
  11. ssh协议是osi_你见过这份864页神仙级的TCP/IP协议吗?,太香了!
  12. Interesting Finds: 2008.01.25
  13. 12. No More MVC
  14. 我的第一篇CBBLOGS博客
  15. 献给自己技术成长的第一年
  16. GJB150-2009军用装备实验室环境试验方法新版标准
  17. An invalid domain was specified for this cookie
  18. cmd 下删除mysql 服务命令
  19. jmeter下载(JMeter怎么读)
  20. nest笔记十:typeorm使用经验小结

热门文章

  1. 一机玩转docker之六:搭建crucible
  2. TrackFormer: Multi-Object Tracking with Transformers
  3. Python爬虫入门教程 12-100 半次元COS图爬取
  4. linux 内核更改,linux_kernel修改、编译、加载
  5. unity步步生花(触发类互动)
  6. eMMC和UFS的容量
  7. easyX——图形库
  8. Vmware Workstation 无法连接到虚拟机,请确保您有权运行该程序。
  9. flex布局 justify-content 新属性值 space-evenly
  10. ImportError: No module named PyQt4.