机器学习(七)EM算法
7.1 EM
已知X为观测变量,Z为隐变量,θθ为模型参数,欲对θθ做极大似然估计
LL(θ|X,Z)=lnP(X,Z|θ)(7.1.1)(7.1.1)LL(θ|X,Z)=lnP(X,Z|θ)
Z为隐变量无法直接求解上式,转为求解:
LL(θ|X)=lnP(X|θ)=ln∑ZP(X,Z|θ)(7.1.2)(7.1.2)LL(θ|X)=lnP(X|θ)=ln∑ZP(X,Z|θ)
原型:
基于θtθt推测隐变量Z的期望记为ZtZt
基于已观测变量X和ZtZt对于θθ做极大似然估计,记为θt+1θt+1
重复上诉步骤直至收敛
E-step:
基于参数θtθt计算隐变量Z的概率分布P(Z|X,θt)P(Z|X,θt),计算对数似然函数LL(θ|X,Z)LL(θ|X,Z)关于Z的期望:
Q(θ|θt)=EZ|X,θtLL(θ|X,Z)(7.1.3)(7.1.3)Q(θ|θt)=EZ|X,θtLL(θ|X,Z)
M-step,参数最大化:
θt+1=argmaxθQ(θ|θt)(7.1.3)(7.1.3)θt+1=argmaxθQ(θ|θt)
7.2 高斯混合聚类
多元高斯分布定义:
p(x|μ,Σ)=1(2π)n2|Σ|12e−12(x−μ)TΣ−1(x−μ)(7.2.1)(7.2.1)p(x|μ,Σ)=1(2π)n2|Σ|12e−12(x−μ)TΣ−1(x−μ)
多元高斯混合分布:
pM(x)=∑i=1kαip(x|μi,Σi)(7.2.2)(7.2.2)pM(x)=∑i=1kαip(x|μi,Σi)
假设样本的生成过程如下,首先根据α1,α2...,αkα1,α2...,αk定义的先验分布选择在高斯主成分,其中αiαi为选择第i个主成分的概率,根据被选择概率密度进行采样,生成相应样本
令zj∈{1,2,..k}zj∈{1,2,..k}表示生成样本xjxj的高斯混合主成分,先验概率P(zj=i)=αiP(zj=i)=αi
后验分布:
pM(zj=i|xj)==P(zj=1)pM(xj|zj=i)pM(xj)αip(xj|μi,Σi)∑kl=1αlp(xj|μl,Σl)(7.2.3)pM(zj=i|xj)=P(zj=1)pM(xj|zj=i)pM(xj)(7.2.3)=αip(xj|μi,Σi)∑l=1kαlp(xj|μl,Σl)
将pM(zj=i|xj)pM(zj=i|xj)记为γjiγji
每个样本的xjxj簇标记记为λjλj:
λj=argmaxi∈{1,2,...k}γji(7.2.4)(7.2.4)λj=argmaxi∈{1,2,...k}γji
对数似然:
LL(D)==ln(∏j=1mpM(xj))∑j=1Mln(∑i=1kαip(xj|μi,Σi)(7.2.5)LL(D)=ln(∏j=1mpM(xj))(7.2.5)=∑j=1Mln(∑i=1kαip(xj|μi,Σi)
采用EM算法进行迭代求解:
对p(xj|μi,Σi)p(xj|μi,Σi)进行求导:
∂|X|∂X=|x|tr(X−1dX)∂|X|∂X=|x|tr(X−1dX)
∂X−1∂X=−X−1dXX−1∂X−1∂X=−X−1dXX−1
∂p(xj|μi,Σi)∂μi=p(xj|μi,Σi)Σ−1i(xj−μi)(7.2.6)(7.2.6)∂p(xj|μi,Σi)∂μi=p(xj|μi,Σi)Σi−1(xj−μi)
dp(xj|μi,Σi)=+=++=+1(2π)n2d1|Σi|12⋅e−12(xj−μi)TΣ−1i(xj−μi)1(2π)n2|Σ|12de−12(xj−μi)TΣ−1i(xj−μi)−|Σ|−12(2π)n2|Σ|12|Σi|tr(Σ−1idΣi)⋅e−12(xj−μi)TΣ−1i(xj−μi)p(xj|μi,Σi)⋅tr(12Σ−1i(xj−μi)(xj−μi)T(xj−μi)Σ−1idΣi)....−12p(xj|μi,Σi)tr(Σ−1idΣi)12p(xj|μi,Σi)tr(Σ−1i(xj−μi)(xj−μi)T(xj−μi)Σ−1idΣi)(7.2.7)dp(xj|μi,Σi)=1(2π)n2d1|Σi|12⋅e−12(xj−μi)TΣi−1(xj−μi)+1(2π)n2|Σ|12de−12(xj−μi)TΣi−1(xj−μi)=−|Σ|−12(2π)n2|Σ|12|Σi|tr(Σi−1dΣi)⋅e−12(xj−μi)TΣi−1(xj−μi)+p(xj|μi,Σi)⋅tr(12Σi−1(xj−μi)(xj−μi)T(xj−μi)Σi−1dΣi)+....=−12p(xj|μi,Σi)tr(Σi−1dΣi)(7.2.7)+12p(xj|μi,Σi)tr(Σi−1(xj−μi)(xj−μi)T(xj−μi)Σi−1dΣi)
∂p(xj|μi,Σi)∂Σi=12p(xj|μi,Σi)(Σ−1i(xj−μi)(xj−μi)T(xj−μi)Σ−1i−Σ−1i)(7.2.6)(7.2.6)∂p(xj|μi,Σi)∂Σi=12p(xj|μi,Σi)(Σi−1(xj−μi)(xj−μi)T(xj−μi)Σi−1−Σi−1)
令偏导为0可得,
∂LL∂μi=∑j=1mαip(xj|μi,Σi)∑ki=1αip(xj|μi,ΣiΣ−1i(xj−μi)=0(7.2.7)(7.2.7)∂LL∂μi=∑j=1mαip(xj|μi,Σi)∑i=1kαip(xj|μi,ΣiΣi−1(xj−μi)=0
μi=∑mj=1γjixj∑mj=1γji(7.2.8)(7.2.8)μi=∑j=1mγjixj∑j=1mγji
∂LL∂Σi=∑j=1mαip(xj|μi,Σi)2∑ki=1αip(xj|μi,Σi(Σ−1i(xj−μi)(xj−μi)T(xj−μi)Σ−1i−Σ−1i)=0(7.2.9)(7.2.9)∂LL∂Σi=∑j=1mαip(xj|μi,Σi)2∑i=1kαip(xj|μi,Σi(Σi−1(xj−μi)(xj−μi)T(xj−μi)Σi−1−Σi−1)=0
Σi=∑mj=1γji(xj−μi)(xj−μi)T∑mj=1γji(7.2.10)(7.2.10)Σi=∑j=1mγji(xj−μi)(xj−μi)T∑j=1mγji
对αiαi求导,引入拉个朗日乘子
LL(D)+λ(∑i=1kαi−1)LL(D)+λ(∑i=1kαi−1)
∂LLL∂αi=∑j=1mp(xj|μi,Σi)∑ki=1αip(xj|μi,Σi)+λ=0(7.2.11)(7.2.11)∂LLL∂αi=∑j=1mp(xj|μi,Σi)∑i=1kαip(xj|μi,Σi)+λ=0
得到:
∑j=1mγji=−λαi(7.2.12)(7.2.12)∑j=1mγji=−λαi
对上式进行累加:
∑i=1k∑j=1mγji=−λ∑i=1kαi(7.2.13)(7.2.13)∑i=1k∑j=1mγji=−λ∑i=1kαi
可得:
λ=−m(7.2.14)(7.2.14)λ=−m
将(7.2.14)(7.2.14)带入(7.2.12)(7.2.12),可得:
αi=1m∑j=1mγji(7.2.15)(7.2.15)αi=1m∑j=1mγji
由上可得EM算法:
E-step: 对每个样本计算γjiγji
M-step:利用(7.2.8)(7.2.8),(7.2.10)(7.2.10),(7.2.15)(7.2.15)更新 αi,μi,Σiαi,μi,Σi
迭代速度慢,次数多,容易陷入局部最优
当所要优化的函数不是凸函数时,EM算法容易给出局部最佳解,而不是最优解。