一般地,用(Y)表示观测随机变量的数据,(Z)表示隐随机变量的数据,(Y)和(Z)连在一起称为完全数据,观测数据(Y)又称为不完全数据。假设给定观测数据(Y),其概率分布是(P(Y| heta)),其中( heta)是需要估计的模型参数。那么不完全数据(Y)的似然函数是(P(Y| heta)),完全数据的联合概率分布是(P(Y,Z| heta))
算法流程
EM算法通过迭代求(L( heta)=log P(Y| heta))的极大似然估计。每次迭代包含两步:E步,求期望;M步,求极大化:
-
输入:观测变量数据(Y),隐变量数据(Z),联合分布(P(Y,Z| heta)),条件分布(P(Z|Y, heta))
-
输出:模型参数( heta)
-
选择参数的初始值( heta^{(0)}),开始迭代
-
E步:记( heta^{(i)})为第(i)次迭代参数( heta)的估计值,在第(i+1)次迭代的E步,计算(Q)函数
[egin{aligned} Q( heta, heta^{(i)}) &=E_Z[log P(Y,Z| heta)|Y, heta^{(i)}] \ & =sum_Z log P(Y,Z| heta) P(Z|Y, heta^{(i)}) end{aligned}]这里,(P(Z|Y, heta^{(i)}))是在给定观测数据(Y)和当前的参数估计下隐变量数据(Z)的条件概率分布
- M步:求使(Q( heta, heta^{(i)}))极大化的( heta),确定第(i+1)次迭代的参数估计值( heta^{(i+1)})
[ heta^{(i+1)}=mathop{argmax}limits_{ heta} Q( heta, heta^{(i)}) ]- 重复第2和第3步,直到收敛
-
-
参数的初始值可以任意选择,但需注意EM算法对初始值是敏感的
-
终止迭代条件,一般是对较小的正数(epsilon_1,epsilon_2),若满足
[|| heta^{(i+1)}- heta^{(i)}||<epsilon_1 qquad ||Q( heta^{(i+1)}, heta^{(i)})-Q( heta^{(i)}, heta^{(i)})||<epsilon_2 ]则停止迭代