EM(Expectation Maximization)算法原理
先来一个比较直观的理解:
现在一个班里有50个男生,50个女生,且男生站左,女生站右。我们假定男生的身高服从正态分布 ,女生的身高则服从另一个正态分布。这时候我们可以用极大似然法(MLE),分别通过这50个男生和50个女生的样本来估计这两个正态分布的参数。但现在我们让情况复杂一点,就是这50个男生和50个女生混在一起了。我们拥有100个人的身高数据,却不知道这100个人每一个是男生还是女生。这时候情况就有点尴尬,因为通常来说,我们只有知道了精确的男女身高的正态分布参数我们才能知道每一个人更有可能是男生还是女生。但从另一方面去考量,我们只有知道了每个人是男生还是女生才能尽可能准确地估计男女各自身高的正态分布的参数。这个时候有人就想到我们必须从某一点开始,并用迭代的办法去解决这个问题:我们先设定男生身高和女生身高分布的几个参数(初始值),然后根据这些参数去判断每一个样本(人)是男生还是女生,之后根据标注后的样本再反过来重新估计参数。之后再多次重复这个过程,直至稳定。这个算法也就是EM算法
知乎文兄的答案:https://www.zhihu.com/question/27976634/answer/154998358
1 预备知识
1.1 极大似然估计(MLE)
来源于百度百科:
1.2 Jensen不等式
来源于知乎
对于优化问题,凸函数可以取到最小值,而凹函数可能陷入鞍点,所以我们希望他是一个凸函数
2 EM算法
2.1 问题描述
假设我们有100个男生身高的数据,我们还有100个女生的身高数据,很显然女生身高的分布和男生肯定不同。
此时我们要单独求出男生或女生身高的分布,由1.1可知,我们可用极大似然估计得出。
但是,若男生女生数据是混在一起的,并且无法区分男女,那么对这一堆混杂的数据抽样时,我们怎么确认:
1. 每一个样本属于男生分布还是女生分布
2. 男生分布和女生分布的参数各是多少
推而广之就是,当一堆样本是由两个为止分布构成的时候,我们如何求出每个样本所属于的分布,以及两个样本各自的分布情况。
2.2 解决思路
EM问题的解决思路大概是如下几部(还是以男女同学为例):
1.假设总分布参数已知
2.通过上一部获得的分布参数,计算所抽样是属于男生还是女生分布
3.通过获得的男生女生分类结果,重新估计分布参数
4.重复2-3直到收敛
2.3 算法推导
2.3.1公式推导
假设我们有训练集样本:
我们对于这样一个模型,用1.1多介绍的极大似然估计法可以得到如下过程:
但是由于这一式子有
那么按照之前2.2的思路,我们先假设
公式中
Lazy Statistician规则:
设Y是随机变量X的函数 设Y是随机变量X的函数,Y=g(X) ,那么
1. 当X是离散随机变量,他的分布律为P(X=xk)=pk,k=1,2,.... 。则有E(Y)=E[g(X)]=∑k=1∞g(xk)pk
2. 当X是连续型变量,他的概率密度为f(x) 。则有E(Y)=E[g(X)]=∫∞−∞g(x)f(x)dx
那么对于上面的公式
若此时设
于是有
接下来再根据1.2Jensen不等式的内容
则有
式子右部分展开即是公式
2.3.2 E过程
下面我们来看刚才推导出来的公式:
如果
这时候我们采取一个策略来不断逼近
1. 取
2. 不断提升
那么什么时候策略调整结束呢?就是公式
因为,
所以
于是有如下推导
于是我们就得到了男生和女生各自的分布律。
这个在
2.3.3 M过程
当