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

一、GMM算法

EM算法实在是难以介绍清楚,因此我们用EM算法的一个特例GMM算法作为引入。

1、GMM算法问题描述

GMM模型称为混合高斯分布,顾名思义,它是由几组分别符合不同参数的高斯分布的数据混合而成的。

假设有n个样本点(x_{1},x_{2},...,x_{n}),它们来自K个不同的高斯分布。有如下参数:

1、不同高斯分布的数据占比:(pi_{i})
2、每个高斯分布的均值与方差:(pi_{i}~N(mu_{i},sigma_{i}^2))

我们的目的是求出每个(pi_{i})(mu_{i})(sigma_{i})

因此我们的目标即是求合适的(pi_{i})(mu_{i})(sigma_{i})来最大化对数似然函数。

[l_{pi,musigma}(x)=sum^{N}_{i=1}log[sum^{K}_{k=1}pi_{k}N(x_{I}|mu_{k},sigma_{k})] ]

这个目标函数中既有对数又有加和,因此不能直接求导因此我们采用迭代的方法。

2、GMM迭代方法描述

Step1:对于每一个样本点i,计算它由不同组分(第k个组分)生成的概率$$r(i,k)=dfrac{pi_{k}N(x_{i}|mu_{k},sigma_{k})}{sum^{K}{j=1}pi{j}N(x_{i}|mu_{j},sigma_{j})}$$
Step2:由各个样本点的(r(i,k))更新参数(pi_{i})(mu_{i})(sigma_{I})

Step3:回到Step1,迭代更新

这其实就是EM算法的E步和M步的过程。

下面给出通用的EM算法伪代码。

3、EM算法

Repeat util 收敛{ (E步):对每个样本$x_{i}$,计算$$Q_{i}(z^{i})=P(z^{i}|x^{i}; heta)$$ (M步):对每个参数$ heta$,有$$ heta:=argmax_{ heta }lleft( heta ight) =argmax_{ heta}sum^{}_{i}sum^{}_{z^{i}}Q_{i}(z^{i})logdfrac{P(x_{i};z_{i}; heta)}{Q_{i}(z_{i})}$$ }

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

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

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

原文地址:https://www.cnblogs.com/Yolanda7171/p/7242348.html