期望最大化(EM)算法

1.前言

概率模型有时候既含有观测变量,又含有隐变量。只含有观测变量的情况下,直接对观测值进行极大似然估计便能够求出参数;比如抛一枚不均匀硬币n次,极大似然估计能够求解出正反面分别出现的概率。在含有隐变量的情况下,无法通过极大似然估计求得;比如手中有三枚不均匀硬币,先从中选取一枚硬币,然后再抛,得到的正反面为观测值;如果直接用极大似然估计,无法体现选择硬币的过程,错误地将三枚硬币视为同一枚硬币。本文要介绍的期望最大化算法便是用来求解含有隐变量的概率模型。

2.算法导出

EM算法实质是极大似然估计的变型,是由极大化似然函数导出的。回到三硬币的例子,将选择硬币的事件记为隐变量Z,所求参数记为混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型,观测值硬币正反面记为混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_02,于是似然函数为
混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_03
上式中不包含隐变量Z,于是引入隐变量Z可得
混合效应模型python实现 混合效应模型eviews步骤_期望最大化_04
上式极大化无法直接通过偏导求出,可采用迭代法求解,假设当前参数值为混合效应模型python实现 混合效应模型eviews步骤_期望最大化_05,迭代法希望每一步混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型都能够使得混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_07最大化,即
混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_08
又因为log函数是凹函数并且混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_09,由琴生不等式可得
混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_10
所以,混合效应模型python实现 混合效应模型eviews步骤_EM算法_11混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_07的下界,即最大化下界等价于最大化原函数
混合效应模型python实现 混合效应模型eviews步骤_EM算法_13
又因为上式中,后项与因变量混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型无关,可舍去,即
混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_15
于是极大似然估计等价于最大化混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_16函数。

综上所述,导出期望最大化算法:

  • 第一步(E步):求解期望Q函数
    混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_17
  • 第二步(M步):最大化Q函数

3.高斯混合模型

接下来举例介绍下EM算法应该如何使用,高斯分布是常用的概率分布,但是在实际问题中有些概率模型并不是单一高斯分布能够表示。比如说身高问题,我们可以假设身高满足单一高斯分布状态,两头少中间多,但身高跟性别有一定关系,更好地假设是,男生女生身高各满足一个不同的高斯分布。假设男女生出现的概率是混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_18,并且身高分别满足高斯分布混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_19,那么一个人身高为x的概率是混合效应模型python实现 混合效应模型eviews步骤_期望最大化_20。这样的概率分布就是混合高斯分布。

混合高斯分布的一般形式是
混合效应模型python实现 混合效应模型eviews步骤_期望最大化_21
假设观测值集合为Y,使用EM算法求解高斯混合模型:

1.求解Q函数(E步)

混合高斯分布可以视为两步,第一步以一定概率选择某一高斯分布,第二步根据该高斯分布确定概率。观测值记为Y,隐变量为选择哪一种高斯分布,记为混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_22,且定义
混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_23
完整似然函数为
混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_24

取对数得
混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_25
于是,
混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_26
上式中需要计算混合效应模型python实现 混合效应模型eviews步骤_期望最大化_27,记为混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_28,即有
混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_29
由贝叶斯公式得
混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_30
于是混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_31表示响应度,即对于第j个样本数据,属于第k个高斯分布的概率,可以由上一步参数来进行计算。

于是有,
混合效应模型python实现 混合效应模型eviews步骤_EM算法_32
2.求最大化操作(M步)

Q函数对混合效应模型python实现 混合效应模型eviews步骤_期望最大化_33分别求偏导可得
混合效应模型python实现 混合效应模型eviews步骤_EM算法_34

混合效应模型python实现 混合效应模型eviews步骤_期望最大化_35

将以上两式得零可以推导出
混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_36

混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_37

结合约束条件混合效应模型python实现 混合效应模型eviews步骤_期望最大化_38,求Q函数拉格朗日函数有
混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_39
分别对混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_40求偏导得
混合效应模型python实现 混合效应模型eviews步骤_期望最大化_41

混合效应模型python实现 混合效应模型eviews步骤_EM算法_42
令上两式为零,可得
混合效应模型python实现 混合效应模型eviews步骤_EM算法_43
综上所述,高斯混合模型(GMM)模型算法流程如下:

  • 1.初始化各参数
  • 2.按照上一次参数更新响应度
    混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_44
  • 3.更新模型参数
    混合效应模型python实现 混合效应模型eviews步骤_极大似然估计_45
    混合效应模型python实现 混合效应模型eviews步骤_高斯混合模型_46
    混合效应模型python实现 混合效应模型eviews步骤_混合效应模型python实现_47

  • 4.重复上述过程直至收敛

4.参考资料

  • 统计学习方法 - 李航