所谓高斯混合模型就是一组高斯分布的和,可以表示如下:
P(y|θ)=∑k=1Kαkϕ(y|θk)
αk
是第k个高斯分布的系数,大于0且
∑kk=1αk=1
。
ϕ(y|αk)
是第k个高斯分布:
ϕ(y|αk)=1(√2π)σkexp(−(y−μk)22σ2k)
从上面的定义可以看出,高斯混合模型的参数包括
αk
和每个高斯分布的均值和方差
μk,σk
在高斯混合模型中,观测变量就是
yj,j=1,2...N
,隐含变量就是这个样本来自于哪个高斯模型,我们把这个变量记做
γjk
,表示第j个变量是否来自第k个高斯模型:
γjk={1 第j个变量来自第k个模型0,否则j=1,2,...,N,k=1,2,...,K
所以完全数据是
(yj,γj1,γj2,...,γjK),j=1,2,..,N
。
完全数据的对数似然函数是:
P(y,γ|θ)=∏j=1NP(yj,γj1,γj2,...,γjK|θ)=∏j=1N∏k=1K[αkϕ(yj|θk)]γjk=∏k=1K∏j=1N[αkϕ(yj|θk)]γjk=∏k=1Kα∑Nj=1γjkk∏j=1N[ϕ(yj|θk)]γjk=∏k=1K⎛⎝αnkk∏j=1N⎡⎣1(√2π)σkexp(−(yj−μk)22σ2k)⎤⎦γjk⎞⎠
其中,
nk=∑j=1Nγjk,∑k=1Knk=N
显然,
nk
表示来自第k个高斯分布的样本数量。
对上式取对数即得到完全数据的对数似然函数
logP(y,γ|θ)=∑i=1K⎛⎝nklogαk+∑j=1Nγjk⎡⎣log(1(√2π)−logσk−(yj−μk)22σ2k⎤⎦⎞⎠
下面求Q函数。
Q函数是完全数据的对数似然函数关于在给定观测数据和当前参数的条件下隐含变量的条件概率分布的期望,即
Q(θ,θi)=E[logP(y,γ|θ)P|y,θi)]=E⎛⎝∑i=1K⎛⎝nklogαk+∑j=1Nγjk⎡⎣log1(√2π)−logσk−(yj−μk)22σ2k⎤⎦⎞⎠⎞⎠=∑i=1K⎛⎝∑j=1NEγjklogαk+∑j=1NEγjk⎡⎣log1(√2π)−logσk−(yj−μk)22σ2k⎤⎦⎞⎠
上面这个式子里面我们需要计算的是
E(γjk)
,将该值记为
γ^jk
γ^jk=E(γjk|y,θ)=P(γjk=1|y,θ)=P(γjk=1,yj|θ)∑Kk=1P(γjk=1,yj|θ)=P(yj|γjk=1,θ)P(γjk=1|θ)∑Kk=1P(yj|γjk=1,θ)P(γjk=1|θ)=αkϕ(yj|θk)∑Kk=1αkϕ(yj|θk)j=1,2,...,N,k=1,2,..,K
第二步的推导使用了贝叶斯公式。
γ^jk
是在当前参数下第j个样本来自第k个模型的概率。
将
γ^jk=Eγjk
和
nk=∑Nj=1Eγjk
代码Q函数得到:
Q(θ,θi)=∑i=1K⎛⎝nklogαk+∑j=1Nγ^jk⎡⎣log1(√2π)−logσk−(yj−μk)22σ2k⎤⎦⎞⎠
至此,我们得到了Q函数的表达式了,
下面就是M步了,即最大化Q函数。
参数有
μk,σk和αk
。
首先求
μk
求Q函数关于
μk
的导数
∂Q(θ,θi)∂μk=∑j=1Nγjk^yj−μkσ2k
令偏导为0,可以得到
μk
的表达式
μk=∑Nj=1γ^jkyj∑Nj=1γ^jk
求Q函数对
σ2k
的偏导
∂Q(θ,θi)∂σ2k=∑j=1Nγ^jk⎛⎝−12σ2k+(yj−μk)22(σ2k)2⎞⎠
令偏导为0
得
σ2k=∑Nj=1γ^jk(yj−μk)2∑Nj=1γ^jk
由于
αk
满足
∑Kk=1αk=1
,所以求解
αk
需要使用拉格朗日函数。
L=Q(θ,θi)+λ(∑k=1Kαk−1)
求L关于
αk
的偏导
∂L∂αk=nkαk+λk=1,2,...,K
令偏导等于0
nk+λαk=0k=1,2,...,K
K个等式相加,有
∑k=1Knk+λ=0λ=−∑k=1Knk=−Nαk=−nkλ=nkN=∑j=1Nγ^jkN
至此,高斯混合模型的EM推导就完成了。