1. EM算法与K-means算法的联系
k-means算法是一类无监督的聚类算法,目的是将没有标签的数据分成若干个类,每一个类都是由相似的数据组成。这个类的个数一般是认为给定的。
k-means原理
假设给定一个数据集
X={x1,x2,...,xN}
和类的个数
k
。我们的我们的每个类都用一个中心点
μk
表示。每个数据集都应该被归为某一个类,那么我们定义
rnk
:如果
xn
属于类
k
,则
rnk=1
;如果
xn
不属于类
k
,则
rnk=0
。那么我们就可以定义一个误差函数
J
:
J=∑n∑krnk||xn−μk||2
误差函数直观理解为每个数据点离自己类的中心点的距离之和。那么我们的目标就是
minJ
。我们发现,
J
中
rnk
和
μk
都是未知的,直接求导的话没有闭式解。所以我们需要换一个方法,这就是所谓的k-keans算法。
k-means算法分为两步。第一步,假设各个类的中心
μk
已知,那么所有
rnk
都可以求出,计算方法采取最近邻原则,即
rnk=1ifk=argminj||xn−μj||2
rnk=0otherwise
第二步,假设所有
rnk
都已知,将
J
对
μk
求导等于0,那么:
∂J∂μk=2∑nrnk(xn−μk)=0
那么很容易得到
μk
的闭式解:
μk=∑nrnkxn∑nrnk
k-means有更通俗的解释,第一步其实是给每个数据点都分类,分类方法采取最近邻原则;第二步是根据分类的结果,将中心点重新计算,计算方式为类中所有点的中心点。
EM算法的关系
k-means是最简单的EM算法。EM算法全称为Expectation-Maximization algorithm。其也是分为两步,第一步叫Expectation,第二步叫Maximization。
EM算法取名是有其意义的,比如第一步Expectation,顾名思义就是计算期望。那么在k-means算法中,第一步计算
rnk
其实是计算Expectation的一步。
rnk
可以看做是
xn
属于各个类的概率,只不过它们取值只有0和1,但也符合概率的定义。那么
xn
的误差期望就是
∑krnk||xn−μk||2
.那么所有点的误差期望之和为:
∑n∑krnk||xn−μk||2
.
我们可以发现,这其实就是k-means算法中的J。
EM算法第二步就是对求得的期望求最值。那么在k-means算法中,第二步对
J
求导等于零其实就是在求最值,这也正好对应EM算法的第二步。所以我们可以看到,其实k-means就是EM算法的一种。
2. EM算法及推导
EM算法用来解决当概率模型含有隐变量或潜在变量的情况。EM算法就是含有隐变量的概率模型参数的极大似然估计法,或极大后验概率估计法。
算法2.1(EM算法)
输入:观测变量数据
Y
,隐变量数据
Z
,联合分布
P(Y,Z|θ)
,条件分布
P(Z|Y,θ)
;
输出:模型参数
θ
.
(1)选择参数的初值
θ(0)
,开始迭代;
(2)E步:记
θ(i)
为第
i
次迭代参数
θ
的估计值,在第
i+1
次迭代的E步,计算
Q(θ,θ(i))=EZ[logP(Y,Z|θ)|y,θ(i)]
=∑ZlogP(Y,Z|θ)P(Z|Y,θ(i))
这里,
P(Z|Y,θ(i))
是在给定观测数据
Y
和当前的参数估计
θ(i)
下隐变量数据
Z
的条件概率分布:
(3)M步:求使
Q(θ,θ(i))
极大化的
θ
,确定第
i+1
次迭代的参数的估计值
θ(i+1)
θ(i+1)=argmaxθQ(θ,θ(i))(1)
(4)重复第(2)步和第(3)步,直到收敛。
算法推导
当面对一个含有隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数
θ
的对数似然函数,即极大化
L(θ)=logP(Y|θ)=log∑ZP(Y,Z|θ)
=log(∑ZP(Y|Z,θ)P(Z|θ))(2)
注意到这一极大化的主要困难是式(1)中有未观测数据并有包含和(或积分)的对数。
事实上,EM算法是通过迭代逐步近似极大化
L(θ)
.假设在第
i
次迭代后
θ
的估计值是
θ(i)
.我们希望新估计值
θ
能使
L(θ)
增加,即
L(θ)>L(θ(i))
,并逐步达到极大值。为此考虑两者的差:
L(θ)−L(θ(i))=log(∑ZP(Y|Z,θ)P(Z|θ))−logP(Y|θ(i))
利用Jensen不等式得到其下界:
L(θ)−L(θ(i))=log(∑ZP(Y|Z,θ(i))P(Y|Z,θ)P(Z|θ)P(Y|Z,θ(i)))−logP(Y|θ(i))
≥∑ZP(Z|Y,θ(i))logP(Y|Z,θ)P(Z|θ)P(Z|Y,θ(i))−logP(Y|θ(i))
=∑ZP(Z|Y,θ(i))logP(Y|Z,θ)P(Z|θ)P(Z|Y,θ(i))P(Y|θ(i))
令
B(θ,θ(i))=^L(θ(i))+∑ZP(Z|Y,θ(i))logP(Y|Z,θ)P(Z|θ)P(Z|Y,θ(i))P(Y|θ(i))(3)
则
L(θ)≥B(θ,θ(i))(4)
即函数
B(θ,θ(i))
是
L(θ)
的一个下界,而且由式(3)可知,
L(θ)(i)=B(θ(i),θ(i))(5)
因此,任何可以使
B(θ,θ(i))
增大的
θ
,也可以使
L(θ)
增大。为了使
L(θ)
有尽可能大的增长,选择
θ(i+1))
使
B(θ,θ(i))
达到极大,即
θ(i+1))=argmaxθB(θ,θ(i))(6)
现在求
θ(i+1))
的表达式。省去对
θ
的极大化而言是常数的项。由式(1),(3),(6)有
θ(i+1)=argmaxθ(L(θ(i))+∑ZP(Z|Y,θ(i))logP(Y|Z,θ)P(Z|θ)P(Z|Y,θ(i))P(Y|θ(i)))
=argmaxθ(∑ZP(Z|Y,θ(i))logP(Y|Z,θ)P(Z|θ))
=argmaxθ(∑ZP(Z|Y,θ(i))logP(Y,Z|θ))
=argmaxθQ(θ,θ(i))(7)
式(7)等价于EM算法的一次迭代,即求Q函数及其极大化。EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。
3. EM算法的收敛性
定理3.1 设
P(Y|θ)
为观测数据的似然函数,
θ(i)(i=1,2,...)
为EM算法得到的参数估计序列,
P(Y|θ(i))(i=1,2,...)
为对应的似然函数序列,则
P(Y|θ(i))
是单调递增的,即
P(Y|θ(i+1))≥P(Y|θ(i))(8)
定理3.2 设
L(θ)=logP(Y|θ)
为观测数据的对数似然函数,
θ(i)(i=1,2,...)
为EM算法得到的参数估计序列,
L(θ(i))(i=1,2,...)
为对应的似然函数序列.
(1)如果
P(Y|θ)
有上界,则
L(θ(i))=logP(Y|θ(i))
收敛到某一值
L∗
;
(2)在函数
Q(θ,θ′)
与
L(θ)
满足一定条件下,由EM算法得到的参数估计序列
θ(i)
的收敛值
θ∗
是
L(θ)
的稳定点。