统计学习方法(5)---EM

EM,GMM

Posted by weber on February 5, 2020

Expectation Maximization,EM

1. 一句话介绍EM

EM是一种用于估计含有隐变量的概率模型的参数的迭代算法。

关键词:含有隐变量的模型,参数估计,迭代算法

1.1 EM步骤

输入:观察数据 ${y_1.y_2,…,y_n}$,联合分布 $P(y,z|\theta)$,条件分布$P(z|y,\theta)$,迭代次数$J$

输出:模型参数 $ \theta $

过程:

  1. 随机初始化参数,记为$\theta^{(0)}$

  2. E步,利用当前估计的参数值,求出在该参数下隐含变量的条件概率期望:

  1. M步,计算使得Q函数最大的参数值:
  1. 重复2,3至收敛。

1.2 EM推导

对于给定的观察数据 ${y_1.y_2,…,y_n}$,我们的目标是找到参数 $\theta$,极大化模型分布的对数似然函数:

如果数据含有隐变量${z_1,z_2,…,z_m}$,则有:

上式无法直接求,所以使用Jensen不等式缩放:

其中 $\sum_{z_i} Q(z_i) = 1$,要取得等号,需要$\frac{P(y_i,z_i \theta)}{Q(z_i)} = c$

由上面两个式子,解得:

回到之前的式子,我们的最大化目标为:

可以去掉第二项分母上的 $Q(z_i)$,它是一个常数项,得:

这就是我们的Q函数。

2. EM扩展-GMM

2.1 高斯混合模型

高斯混合模型(Gaussian Mixture Model,GMM)是多个高斯分布的模型混合而成,其表达式为:

其中,$\phi(y|\theta_k) = \frac{1}{\sqrt{2\pi }\sigma_k} \exp(-\frac{(y-\mu_k)^2}{2\sigma_k^2})$

2.2 EM估计参数

确定隐变量 $\gamma_{jk} \in \mathbb{R}^{N \times K}$:

确定联合分布:

确定条件分布:

E步,求出Q函数:

其中,$n_k = \sum_{i=1}^N \hat \gamma_{jk}$

M步,求极大值:对 $\mu_k$ ,$\sigma_k$,求导即可得到,而$\alpha_k$可以利用和为1的条件下求偏导数得到。

3. EM用于聚类

EM可以将样本的潜在类别看作是隐变量,将样本看作观察值,从而将聚类问题转化为参数估计问题。

以sklearn的包中的GMM来做聚类应用为例:

from sklearn.mixture import GaussianMixture

gmm = GaussianMixture(n_components=1, covariance_type='full', max_iter=100)
  • n_components:表示高斯混合模型的个数(聚类个数)。
  • covariance_type:协方差类型,协方差的类型代表了不同的高斯混合模型的特征。

  • max_iter:代表最大迭代次数。

4. EM面试问题总结

EM是否收敛到全局最优?

EM 算法具备收敛性,但并不保证找到全局最大值,有可能找到局部最大值。解决方法是初始化几次不同的参数进行迭代,取结果最好的那次。

参考资料

EM算法原理总结-刘建平

机器学习——经典十大算法之EM算法

【白话机器学习】算法理论+实战之EM聚类