机器学习笔记——11 混合高斯模型(Mixtures of Gaussian):利用EM算法估计参数

机器学习笔记——11 混合高斯模型(Mixtures of Gaussian):利用EM算法估计参数

本文主要介绍混合高斯模型,它涉及到对个分布来源,因此参数的估计将是一个难题。本文着重介绍如何利用EM算法对参数进行估计。

混合高斯模型(Mixtures of Gaussian)

在我们之前接触的大部分分布中,样本数据大部分独立同分布与某个分布。但是混合高斯模型中,样本数据并不是来自一个单一的高斯分布,而是来自多个高斯分布。我们假设共有 k k k个高斯分布,如果第i个样本 x ( i ) x^{(i)} x(i)来自第j个高斯分布,记 z ( i ) = j z^{(i)} = j z(i)=j。在高斯混合模型中, p ( x ∣ z = j ) = N ( u j , Σ j ) p(x|z = j) = N(u_j,\Sigma_j) p(xz=j)=N(uj,Σj)。而参数 z z z服从多项分布 M u l t i n o m i a l ( ϕ ) Multinomial(\phi) Multinomial(ϕ)。即 z z z j j j的概率为 ϕ j \phi_j ϕj。由此我们可以导出混合高斯的边缘分布为: m ( x ) = ∑ j = 1 k p ( z = j ) p ( x ∣ z = j ) = ∑ j = 1 k ϕ j p ( x ∣ u j , Σ j ) m(x) = \sum_{j = 1}^{k}p(z = j)p(x|z = j) = \sum_{j = 1}^{k}\phi_jp(x|u_j,\Sigma_j) m(x)=j=1kp(z=j)p(xz=j)=j=1kϕjp(xuj,Σj)因此样本的对数似然函数为: ℓ ( ϕ , u , Σ ) = log ⁡ ∏ i = 1 m m ( x ( i ) ) = ∑ i = 1 m log ⁡ m ( x ( i ) ) = ∑ i = 1 m log ⁡ ∑ j = 1 k ϕ j p ( x ∣ u j , Σ j ) \begin{aligned} \ell(\phi,u,\Sigma) = & \log \prod_{i = 1}^{m}m(x^{(i)}) \\ =& \sum_{i = 1}^{m}\log m(x^{(i)}) \\ =& \sum_{i = 1}^{m}\log \sum_{j = 1}^{k}\phi_jp(x|u_j,\Sigma_j) \\ \end{aligned} (ϕ,u,Σ)===logi=1mm(x(i))i=1mlogm(x(i))i=1mlogj=1kϕjp(xuj,Σj)不难发现,我们对上述函数进行求导,得到的方程是无法直接求解。但是如果我们已经事先知道各个 z ( i ) z^{(i)} z(i)的取值,那么参数的估计将变得很简单,即 ϕ j = 1 m ∑ i = 1 m 1 { z ( i ) = j } \phi_j = \frac{1}{m}\sum_{i = 1}^{m}1\{z^{(i)} = j\} ϕj=m1i=1m1{z(i)=j} u j = ∑ i = 1 m 1 { z ( i ) = j } x ( i ) ∑ i = 1 m 1 { z ( i ) = j } u_j = \frac{\sum_{i = 1}^{m}1\{z^{(i)} = j\}x^{(i)}}{\sum_{i = 1}^{m}1\{z^{(i)} = j\}} uj=i=1m1{z(i)=j}i=1m1{z(i)=j}x(i) Σ j = ∑ i = 1 m 1 { z ( i ) = j } ( x ( i ) − u j ) ( x ( i ) − u j ) T ∑ i = 1 m 1 { z ( i ) = j } \Sigma_j = \frac{\sum_{i = 1}^{m}1\{z^{(i)} = j\}(x^{(i)}-u_j)(x^{(i)}-u_j)^T}{\sum_{i = 1}^{m}1\{z^{(i)} = j\}} Σj=i=1m1{z(i)=j}i=1m1{z(i)=j}(x(i)uj)(x(i)uj)T基于此,我们可以利用EM算法来求解。记 w j ( i ) = P ( z ( i ) = j ) w_j^{(i)} = P(z^{(i)} = j) wj(i)=P(z(i)=j),其初始值在合理范围内随机分配,然后进行EM算法:
Repeate until convergence
(E-step) For each i,j,set
w j ( i ) = p ( z ( i ) = j ∣ x ( i ) , ϕ , u , Σ ) w_j^{(i)} = p(z^{(i)} = j |x^{(i)},\phi,u,\Sigma) wj(i)=p(z(i)=jx(i),ϕ,u,Σ)(M-step) Update the parameters
ϕ j = 1 m ∑ i = 1 m w j ( i ) \phi_j = \frac{1}{m}\sum_{i = 1}^{m}w_j^{(i)} ϕj=m1i=1mwj(i) u j = ∑ i = 1 m w j ( i ) x ( i ) ∑ i = 1 m w j ( i ) u_j = \frac{\sum_{i = 1}^{m}w_j^{(i)}x^{(i)}}{\sum_{i = 1}^{m}w_j^{(i)}} uj=i=1mwj(i)i=1mwj(i)x(i) Σ j = ∑ i = 1 m w j ( i ) ( x ( i ) − u j ) ( x ( i ) − u j ) T ∑ i = 1 m w j ( i ) \Sigma_j = \frac{\sum_{i = 1}^{m}w_j^{(i)}(x^{(i)}-u_j)(x^{(i)}-u_j)^T}{\sum_{i = 1}^{m}w_j^{(i)}} Σj=i=1mwj(i)i=1mwj(i)(x(i)uj)(x(i)uj)T其中 w j ( i ) w_j^{(i)} wj(i)的更新利用的是贝叶斯公式,如下: w j ( i ) = p ( z ( i ) = j ∣ x ( i ) , ϕ , u , Σ ) = ϕ j p ( x ( i ) ∣ u j , Σ j ) ∑ l = 1 k ϕ l p ( x ( i ) ∣ u l , Σ l ) \begin{aligned} w_j^{(i)} = p(z^{(i)} = j |x^{(i)},\phi,u,\Sigma) \\ = \frac{\phi_j p(x^{(i)}|u_j,\Sigma_j)}{\sum_{l = 1}^{k}\phi_lp(x^{(i)}|u_l,\Sigma_l)} \\ \end{aligned} wj(i)=p(z(i)=jx(i),ϕ,u,Σ)=l=1kϕlp(x(i)ul,Σl)ϕjp(x(i)uj,Σj)不难发现,我们这里采用的算法和Kmean聚类中采用的算法,其思想是一致的。我们通过引入一些潜在变量(latent variables)(在本例中潜在变量是样本来源于哪个高斯分布,在Kmean中潜在变量是样本属于哪个类别),并在开始时随机分配值,然后不断通过EM步骤迭代更新,最终达到收敛。
一个非常重要的问题是,我们如何保证本例中算法一定会收敛,在Kmean中我们具体的分析证明了所用算法的收敛性,在EM算法的博客中,我们将一般化地对EM算法进行讨论。

你可能感兴趣的:(机器学习笔记,混合高斯模型,EM算法,统计学,机器学习,数学)