EM算法
来源:互联网 发布:如何防止安装软件 编辑:程序博客网 时间:2024/05/16 18:37
概率模型有时既含有可观测变量也会隐含变量,当所有变量都是可观测的,则一般的MLE或MAP方法可以估计出模型参数。但是当模型中存在隐含变量时,无法用MLE和MAP直接估计出模型参数,这时就要使用到EM算法。
EM算法:
用Y表示观测随机变量数据(不完全数据),Z表示隐随机变量数据,Y和Z合在一起称为完全数据。
给定观测数据Y,则其概率分布为:,其中是需要估计的模型参数,那么其实就是Y的似然函数。对数似然函数为:。在这里可以看出如果Y是完全数据,也就是不存在隐数据Z,则可以直接使用MLE估计出。虽然我们的模型中多了隐数据Z,但是我们的目标还是一样的,即极大化。
假设Y和Z的联合概率分布为:,则完全数据的对数似然函数为:。
EM算法通过迭代的方式求的极大似然估计,每次迭代包含两步:
E步:求期望;
M步:极大化。
输入:观测变量Y,隐变量Z,联合分布,条件分布。、表示对模型的一些假设,即数据Y、Z满足什么样的分布。
输出:模型参数。
(1)选择参数的初值。
(2)E步:设为第i次迭代的参数的估计值,在第i+1次迭代的E步,计算:
(该公式可以通过期望的公式推导)
这个公式被称为Q函数,是EM算法中最重要的一步!
Q函数:完全数据的对数似然函数关于在给点观测数据Y和当前参数下对隐数据的条件概率分布的期望称为Q函数。
(3)M步:求使极大化的,确定第i+1次迭代的参数估计值:
(其中是变量,找到可以使最大的就是)
(4)重复第(2)步和di(3)步,直至收敛。
上述过程就是EM算法的流程。EM算法有效的原因就是通过E步和M步可以保证,当取等号时收敛,并且EM只能保证可以找到的局部极大值,而不一定是全局极大值。
至于为什么EM算法有的性质,需要使用Jensen不等式进行证明!
下面说一个包含隐变量的例子,并且可以使用EM算法解决。
有三枚硬币,分别为A、B、C。这些硬币正面朝上的概率为a、b、c。进行如下抛硬币实验:先抛A,根据结果抛B或C,如果A为正面抛B,如果A为反面抛C。记录B和C的结果。
在上面的实验中,抛B和C的结果是可观测变量(但不知道哪些是B哪些是C);而A的结果是隐变量。
该问题可以用EM算法估计出a、b、c的值。
EM算法对初值是敏感的,即使用不同的初值,最后得到的结果可能是不同的!
- EM 算法
- EM 算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- EM算法
- em算法
- EM算法
- EM算法
- EM算法
- EM算法
- Hive HDF 引用资源文件路径问题
- eclipse 错误信息 "File Search" has encounter a problem 解决
- 常用的20个代码段
- Ubuntu 14 安装MySQL指南
- 使用okhttp 报Can't create handler inside thread that has not called Looper.prepare()
- EM算法
- 【笔试】数组和线性表的区别
- 支付宝极简收银台(无线快捷支付)SDK,PHP服务端接入经验
- hdu 2845
- C/C++/PHP等语言 在线编译器
- Pyqt phonon的使用
- 01 设计模式之单例模式
- 基于采样的快速找图以及实现方式
- 工厂方法模式(二):工厂方法模式概述