EM算法的理解

EM算法的理解

建议先看一下下面这篇关于极大似然函数的理解,要不下面理解起来有点困难。

极大似然的理解

还是上面的博客中的例子。

你想要的知道学校的男生和女生的身高分布。你该怎么做呢?首先假设全校同学的身高分布是符合正态分布的。那么,我们就需要知道正态分布的均值和方差。那该怎么求呢?总不能全部统计一下吧,这样太费时费力了。然后你就想到了一个好办法,通过随机抽样,取出100个男生和100个女生,然后统计他们的身高分布,然后用这200个人的身高分布近似代替总体的身高分布。

上面这个例子是极大似然估计的方法,但是我们加入改一下题目。还是求学校里面男生和女生的身高分布,同样抽取了200个人,但是你不知道你抽出来的人是男生还是女生,这时候你怎么估计?随机抽出一个人的身高,问你是男生还是女生,你又怎么估计?

EM的意思是“Expectation Maximization”,具体方法为:
EM算法的理解
上面的学生属于男生还是女生我们称之为隐含参数,女生和男生的身高分布参数称为模型参数。

EM 算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含参数(EM 算法的 E 步),接着基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐含参数是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。我们基于当前得到的模型参数,继续猜测隐含参数(EM算法的 E 步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

一个最直观了解 EM 算法思路的是 K-Means 算法。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的 E 步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。

具体推导见这篇博文,说实话有点复杂。。。