一、GMM算法
EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入。
1、GMM算法问题描述
GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混合而成的。
假设有n个样本点 x1,x2,...,xn ,它们来自K个不同的高斯分布。有如下参数:
1、不同高斯分布的数据占比:
πi
2、每个高斯分布的均值与方差:
πi N(μi,σ2i)
我们的目的是求出每个 πi , μi , σi
因此我们的目标即是求合适的 πi , μi , σi 来最大化对数似然函数。
lπ,μσ(x)=∑i=1Nlog[∑k=1KπkN(xI|μk,σk)]
这个目标函数中既有对数又有加和,因此不能直接求导因此我们采用迭代的方法。
2、GMM迭代方法描述
Step1:对于每一个样本点i,计算它由不同组分(第k个组分)生成的概率
r(i,k)=πkN(xi|μk,σk)∑Kj=1πjN(xi|μj,σj)
Step2:由各个样本点的 r(i,k) 更新参数 πi , μi , σI
Step3:回到Step1,迭代更新
这其实就是EM算法的E步和M步的过程。
下面给出通用的EM算法伪代码。
3、EM算法
Repeat util 收敛{
(E步):对每个样本
xi
,计算
Qi(zi)=P(zi|xi;θ)
(M步):对每个参数 θ ,有
θ:=argmaxθl(θ)=argmaxθ∑i∑ziQi(zi)logP(xi;zi;θ)Qi(zi)
}
其中,E步的那个
Q
就是第i个样本的分布,就是那个
这个形式可以推导可得,其实是等价的
M步中,那个公式就是对数似然函数,求使它最大化的参数
总结:EM算法说到底是一个迭代更新的过程。它首先对各个样本计算分布,然后更新参数;再计算分布,再更新参数……