十大机器学习算法之EM算法讲解及推导

EM算法也就是Expectation Maximization Algorithm,它是基于极大似然估计方法,如果大家还不是很熟悉极大似然估计可以看看这篇文章https://blog.csdn.net/blank_tj/article/details/82015361


EM的理解

首先极大似然估计解决了一个什么样的问题呢?极大似然估计是一个已知模型也就是什么样的分布,但是不知道这个分布中参数的具体多少。就像是我知道班级里同学的身高服从正态分布,但是正态分布的μσ 我们不知道,然后我们通过极大似然估计来求这个参数,通过已有的数据样本,它是参数估计的一种方法。

那么EM算法是解决什么样子的事情呢?其实呀,EM算法可以理解为是极大似然估计的复杂版,也就是多个极大似然估计组合成了EM算法。
举个例子:一班的成绩服从μ1,σ1 ,二班的成绩服从μ2,σ2 都是正态分布。首先,我们给出一班的样本和这个模型,通过极大似然估计方法能把μ1,σ1 估计出来,同理给二班的样本和模型也能把μ2,σ2 求出来。对吧,这就是极大似然估计的用处。那么EM算法是什么样呢?现在如果我把一班和二班的样本混合在一起,挑出来了一个人,但是我们不知道这个人是属于一班还是属于二班的,也就是说,我们随便选一个人,但是我们不知道这个人是属于哪个班级,所以也就不知道该往哪个模型套用极大似然估计方法。这就是EM算法所要解决的问题,由两个或者多个混合的模型及其样本组成,来估算出整个混合模型的参数。


用到的公式:Jenson不等式

X 是一个随机变量,f(X) 是一个凸函数(二阶导数大或等于0),那么有:

E[f(x)]f[E(x)]

当且仅当X 是常数的时候等号成立。
如果f(X) 是凹函数,不等号反向。
这里写图片描述
横座标是参数,纵座标是似然函数,首先我们初始化一个θ1,根据它求似然函数一个紧的下界,也就是图中第一条黑短线,黑短线上的值虽然都小于似然函数的值,但至少有一点可以满足等号(所以称为紧下界),最大化小黑短线我们就hit到至少与似然函数刚好相等的位置,对应的横座标就是我们的新的θ2,如此进行,只要保证随着θ的更新,每次最大化的小黑短线值都比上次的更大,那么算法收敛,最后就能最大化到似然函数的极大值处。(别人的图)


EM的数学推导

以两个模型组合来说,即 z=0,z=1代表两个模型。所以当混合时,z就不知道是哪个模型的了,所以z是一个隐变量。因此,需要最大化的似然函数为:

l(θ)=i=1mlog p(xi;θ)=i=1mlogzp(xi,z;θ)

接着上图来说,构造这个小黑短线,就要靠Jensen不等式。注意我们这里的log函数是个凹函数,所以我们使用的Jensen不等式的凹函数版本。
根据Jensen函数,需要把log里面的东西写成一个数学期望的形式,注意到log里的和是关于隐变量Z的和,于是自然而然,这个数学期望一定是和Z有关,如果设Q(z)是Z的分布函数,那么可以这样构造:

logZp(xi,z;θ)=logZQ(z)p(xi,z;θ)Q(z)

Y=p(xi,z;θ)Q(z) ,则P(Y=p(xi,z;θ)Q(z))=Q

logZQp(xi,z;θ)Q=logYP(Y)Y=logE(Y)

所以log 里其实构造了一个随机变量YYZ 的函数。
构造好了数学期望,下一步根据Jensen不等式进行缩放:

logE(Y)E(logY)=YP(Y)logY=ZQ(Z)logp(xi,z;θ)Q(Z)

l(θ)=i=1mlogZp(xi,z;θ)i=1mZQ(Z)logp(xi,z;θ)Q(Z)

这个时候保证这个似然函数下界是紧的,需要使等号成立。由Jensen不等式,等式成立的条件是随机变量是常数:

Y=p(xi,z;θ)Q(Z)=C

因为Q(Z)Z 的分布函数,所以:

ZQ(Z)=Zp(xi,z;θ)C=1

C 乘过去,可得C就是p(xi,z)z 求和,所以我们终于知道了:

Q(Z)=p(xi,z;θ)C=p(xi,Z;θ)Zp(xi,z;θ)=p(xi,z;θ)p(xi)=p(z|xi;θ)

得到Q(Z)Q(Z) 就是p(zi|xi) ,或者写成p(zi) 都一样,代表第i 个数据是来自zi 的概率。


EM算法的流程:

首先,初始化参数 θ
1)E-step:根据参数θ 计算每个样本属于zi 的概率,即这个同学是一班或者二班的概率,这个概率是Q
2)M-step:根据计算得到的Q,求出含有 θ 的似然函数的下界并最大化它,得到新的参数 θ
重复1)和2),直到收敛。

需要额外说明的是,EM算法在一般情况是收敛的,但是不保证收敛到全局最优,即有可能进入局部的最优。
EM算法在混合高斯模型(GMM),隐马尔科夫模型(HMM)中都有应用,是著名的数据挖掘十大算法之一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章