机器学习算法(七)EM算法族 EM、GMM

一、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θiziQi(zi)logP(xi;zi;θ)Qi(zi)

}

其中,E步的那个 Q 就是第i个样本的分布,就是那个 r(i,k)
这个形式可以推导可得,其实是等价的

M步中,那个公式就是对数似然函数,求使它最大化的参数

总结:EM算法说到底是一个迭代更新的过程。它首先对各个样本计算分布,然后更新参数;再计算分布,再更新参数……

点赞