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算法对初值是敏感的,即使用不同的初值,最后得到的结果可能是不同的!


0 0
原创粉丝点击