数据挖掘经典算法——最大指望算法

算法定义

      最大指望算法(Exception Maximization Algorithm,后文简称EM算法)是一种启发式的迭代算法,用于实现用样本对含有隐变量的模型的参数作极大似然估计。已知的几率模型内部存在隐含的变量,致使了不能直接用极大似然法来估计参数,EM算法就是经过迭代逼近的方式用实际的值带入求解模型内部参数的算法。html

算法描述

      算法的形式以下:java

随机对参数赋予初值;

    While(求解参数不稳定){

       E步骤:求在当前参数值和样本下的指望函数Q;

       M步骤:利用指望函数从新计算模型中新的估计值;

}

      上面的伪代码形式可能过于抽象,就结合一个实际的例子来讲明。算法

      例子:存在3枚硬币A,B和C,抛出正面的几率是π,p和q。进行以下抛硬币的试验:先抛硬币A,若是A是正面则须要抛硬币B,不然就抛硬币C。若是B或C是正面结果为1,不然结果为0;独立进行n次试验。取n = 10,获得的观测结果以下:函数

                            1,1,0,1,0,0,1,0,1,1学习

      每一枚硬币的分布都是一个二项分布,而A,B,C三个硬币对应的事件之间又潜在有某种联系。用Y表示观测变量,对于第i次观测结果的值记做yi,用向量θ来表示整个模型中的未知参数π,p和q,则整个三币模型的几率能够表示为:3d

                              

      若是采用最大似然估计法来求解公式(1),以此来估计模型中的参数,即求解下式:htm

                              

        因为公式(1)内部包含了+号,很难直接求偏导求解获得参数的估计值。必须寻求其余的办法解决这个问题,现引入一个隐含变量Z表示在试验中抛掷A硬币的结果(1表明正面,0表明反面),就能够将原先的似然函数转换成下式:blog

                           

         咱们给出E步骤中指望函数Q的定义以下,具体的证实会放到下一节:事件

                                 

对于上面的例子, P(Z|Y, θ(i)) =(zπpy(1-p)1-y + (1-z)(1-π)qy(1-q)1-y)/ P(Y|θ),上式中没有未知的参数(Z的值在每次累加时被肯定),因此能够直接算出具体的值。将计算出的结果带入(4)式咱们就获得了指望函数。get

         在M步骤中,分别对θ向量的每个份量求其偏导,另偏导数的值等于零求出极大值获得新的参数估计值,重复以上两个步骤,直到收敛。

 理论与推导

       在推导EM算法以前,有一些基本的数学概念须要从新梳理一下,以即可以透彻得理解EM算法。

     a) 极大似然估计

  极大似然估计是最经常使用的一种点估计方法,极大似然估计基于的一个直观想法就是“几率最大的事件最有可能出现”。假设有一系列事件A1,A2,…,An被观测到发生了,且事件Ai发生的几率为pi,就有理由相信事件序列A1,A2,…,An的理论几率是最大的,因此有max pi(1<=i<=n),以此能够估计出几率模型中参数。

  利用极大似然估计方法进行参数估计,必须知道整体的几率分布类型。构造一个似然函数,将样本的观察值带入似然函数,对某一个参数求偏导数另其为零,算出极值点的参数值就是估计获得的参数结果,用θ表示须要估计的参数向量,xi表示第i个样本的观测结果,似然函数的形式能够是:

                     

  b) Jessen不等式

  Jessen不等式的形式以下:

  f(E(X)) ≥ E[f(x)],当函数f(x)是一个凹函数时成立,且等号只有知足对于任意x,都有E(X) = x时取到。

  要理解Jessen不等式,能够参考下图。在图中曲线f(x)上取任意两点x,y,有不等式f(1/2(x+y))≥ 1/2[f(x) + f(y)]恒成立,将这个不等式推广到多维向量且考虑向量分布不均匀的状况,不等式左边就是f(E(X)),右边就是E(f(x))。

  

  c) 最大下界函数

   要用极大似然估计方法来肯定模型中的参数,就是要计算在似然函数L(θ)最大化的时候对应的参数的值,上一节中已经提过对于含有隐含变量的模型,直接经过求偏导数的方法来肯定似然函数的极大值是很困难的。在EM算法的求解过程当中,每一次迭代构造了一个新的下界函数,最大化这个下界函数来逼近实际的似然函数,求解获得一个局部最优的极值。

   假设在EM算法的求解过程当中,通过第i次迭代后获得的参数向量为θ(i),这里咱们以这组参数值做为观测点,以此估计隐含变量的几率分布;将这个分布带入似然函数的公式获得近似的L(θ(i)),考虑真实的似然函数与近似似然函数之间的差值:

            

          

    由(6)和(7)能够构造似然函数的一个下界函数B(θ, θ(i)),有以下结论:

                  

如今仔细回忆一下,模型中的参数之因此难以直接求解的根本缘由是:在这一类问题中,实际上存在两类参数,一类是模型自带的参数向量θ,第二类是受这个参数影响的隐藏变量Z。在EM算法的第i次迭代的过程当中,利用θ(i)构造了隐含变量Z的分布有效得消除了Z对结果的影响,同时根据Jessen不等式的性质,咱们也可以保证构造的下界函数与似然函数之间必然有交点,且始终处于了似然函数图像的下方。

总结EM算法的E步骤,包含了以下几个操做:

    1. 将当前轮次获得的参数θ(i)做为固定的观测点;
    2. 利用参数θ(i)计算出隐含变量Z的分布;
    3. 将隐含变量Z的分布带入构造似然函数在当前观测点下的下界函数;

  以后再M步骤中,经过极大化下界函数获得一组新的参数向量θ(i+1),如此循环既能够求出似然函数的一个局部最优。用一幅图像更直观得展示这第i次迭代的过程:

 

 

  由公式(8)可知,下界函数由两个部分组成,在参数θ(i)肯定的条件下,L(θ(i))就是一个常量,极大化下界函数等价于极大化公式(7)中的G(θ,θ(i)),同时将G(θ,θ(i))在log内部的对求极大值没有影响的常量部分P(Y,Z|θ(i)),即证最大化下界函数等价于证实公式(4)中的Q(θ,θ(i))。

  补充几点关于EM算法的细节,从图中也能够清晰得看出:

  a) EM算法是一种初始值敏感的算法,选取不一样初始参数会有不一样的最终结果;

  b) EM算法获得的不会是全局最优,每次迭代逼近的都是当前的局部最优。

  d)算法的收敛性

      以前已经证实了能够经过定点参数值估计隐含变量的分布,并以此来构造下界函数,经过极大化下界函数来逼近似然函数的极大值。要证实EM算法的合理性,还有一个关键点就是,是否是每一次迭代都一定能比以前更优,即证实算法的收敛性。

     

      已知条件几率公式:

     

      将公式(11) 带入(10)中而且在两边同时乘以P(Z|Y, θ(i)),能够获得下式:

    

      解释一下上面的公式,第一个不等号是调用了Jessen不等式,在EM算法M步骤中θ(i+1)是使Q(θ,θ(i))取极大值的参数,因此φ一定是大于等于零的值。

参考资料

[1].     《统计学习方法》李航

[2].     https://www.coursera.org/course/ml

[3].     http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

[4].     http://www.cnblogs.com/mindpuzzle/archive/2013/04/05/2998746.html

后记

   整理完成这篇文章前先后后花了本人接近半个月的时间(各期间种琐事,还生病静养了好几天),写得也是断断续续,可是总算是基本完成了。EM算法虽然看似结构简单,可是其证实和内部的数学原理理解起来仍是相对有些难度的。期间找了至关多的资料进行参考,发现不少文章里都夹杂了过多复杂的公式,看着也很头疼。在整理的过程当中,我也尽可能的避免大范围得套用数学数学公式。

相关文章
相关标签/搜索