机器学习算法Task3EM算法

EM算法简介

EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation-Maximization Algorithm)。
其基本思想是:首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。

引入EM算法

概率模型有时候既含有观测变量,又含有隐变量或潜在变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计方法估计模型参数,但是当模型含有隐变量时,就不能简单的使用这些方法,EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法,我们讨论极大似然估计,极大后验概率估计与其类似。
假如我们目前有100个男生和100个女生的身高,但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的。这个时候,对于每个样本,就有两个未知量需要估计:

(1)这个身高数据是来自于男生数据集合还是来自于女生?

(2)男生、女生身高数据集的正态分布的参数分别是多少?

上面的例子中,我们只能观测到每个人的身高,而不知道这个身高是男还是女,即这个身高是来自男生的身高的概率分布还是女生身高的概率分布,这个就是隐变量,我们没有观测到的数据。但我们又想根据现有的观测数据取求得男生和女生身高的概率分布的参数,上面例子中即正态分布的均值和方差。
机器学习算法Task3EM算法
那么,对于具体的身高问题使用EM算法求解步骤下图所示。
机器学习算法Task3EM算法
(1)初始化参数:先初始化男生身高的正态分布的参数:如均值=1.65,方差=0.15

(2)计算每一个人更可能属于男生分布或者女生分布;

(3)通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。

(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。

具体推导可以看《统计学习方法》对应章节,讲得非常详细。

EM算法流程

输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Zθ)P(Y,Z|\theta),条件分布P(ZY,θ)P(Z|Y,\theta); 输出:模型参数θ\theta

(1)选择参数的初值θ0\theta^0,开始迭代
(2) E步:记θi\theta^i为第i次迭代参数θ\theta的估计值,在第i+1次迭代的E步,计算Q(θ,θi)=EZ[logP(Y,Zθ)Y,θi]=ZlogP(Y,Zθ)P(ZY,θi) \begin{aligned} Q(\theta,\theta^i)&=E_{Z}[logP(Y,Z|\theta)|Y,\theta^i]\\ &=\sum_{Z}logP(Y,Z|\theta)P(Z|Y,\theta^i) \end{aligned} 这里,P(ZY,θi)P(Z|Y,\theta^i)是在给定观测数据Y和当前的参数估计θi\theta^i下隐变量数据Z的条件概率分布;

(3) M步:求使Q(θ,θi)Q(\theta,\theta^i)极大化的θ\theta,确定第i+1次迭代的参数的估计值θi+1\theta^{i+1}θi+1=argmaxθQ(θ,θi) \theta^{i+1}=arg \max \limits_{\theta}Q(\theta,\theta^{i}) Q(θ,θi)Q(\theta,\theta^{i})是EM算法的核心,称为Q函数(Q function),这个是需要自己构造的。

(4) 重复第(2)步和第(3)步,直到收敛.

参考:

https://github.com/datawhalechina/team-learning/blob/master/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AE%97%E6%B3%95%E5%9F%BA%E7%A1%80/Task3%20EM.ipynb
https://zhuanlan.zhihu.com/p/40991784