混合高斯模型和期望最大化算法(Mixture of Gaussians and the EM algorithm)

来源:互联网 发布:js返回根目录 编辑:程序博客网 时间:2024/05/22 14:03

在这一章中,我们通过密度估计引出期望最大化算法。

在非监督式学习的情况下,给出一组训练集{x(1),,x(m)},我们试图通过指定一个联合分布p(x(i),z(i))=p(x(i)|z(i))p(z(i))在数据集上建模。其中变量z(i)服从参数为ϕ的多项式分布且x(i)|z(i)服从均值为μj方差为j的高斯分布,用k表示z(i)可能取值的总数。所以我们的模型表明,每个x(i)都来自k个基于z(i)的高斯分布的其中一个。这被称为混合高斯模型

需要注意的是z(i)隐藏随机变量,因为它们是无法被观测的,实际是我们假设出来的。因此我们的估计会比监督式学习的情况要更加困难。组成模型的参数有ϕ,μ,Σ,为了估计它们的值,我们可以写出数据的似然估计:

(ϕ,μ,Σ)=i=1mlog p(x(i);ϕ,μ,Σ)=i=1mlog i=1kp(x(i)|z(i);μ,Σ)p(z(i);ϕ).

如果你对方程的各个参数求偏导,并令偏导为零联立方程组试图去解决该问题。你会发现极大似然估计在这种封闭形式下是无解的。
随机变量z(i)表示输入x(i)来自k个高斯分布中的哪一个。如果我们知道隐藏变量z(i)的值,那么这个极大似然估计问题就会变得很简单。具体而言,我们可以将似然估计改写成下面的形式:

(ϕ,μ,Σ)=i=1mlog p(x(i)|z(i);μ,Σ)+log p(z(i);ϕ).

求极大似然估计可得:

ϕj=1mi=1m1{z(i)=j},μj=mi=11{z(i)=j}x(i)mi=11{z(i)=j},Σj=mi=11{z(i)=j}(x(i)μj)(x(i)μj)Tmi=11{z(i)=j}.

当我们假设z(i)是已知的时候,除了z(i)代替了类标签y的作用,极大似然估计求解出的值和高斯判别分析模型的参数值几乎是一致的。然而在我们的密度估计模型中,隐藏参数z(i)实际是未知的,我们该如何解决这个问题呢?

期望最大化算法(EM算法)是一个内含两个步骤的循环算法。对于我们的问题,在E阶段,它首先猜测z(i)的值;在M阶段,根据上一步的猜测,更新模型的参数值。具体步骤如下:

循环直至收敛:{

(E步骤)循环每个i,j,有:

w(i)j:=p(z(i)=j|x(i);ϕ,μ,Σ)

(M步骤)更新模型参数:
ϕj:=1mi=1mw(i)j,μj:=mi=1w(i)jx(i)mi=1w(i)j,Σj:=mi=1w(i)j(x(i)μj)(x(i)μj)Tmi=1w(i)j.

}

在E阶段,通过贝叶斯公式我们求解通过x(i)等参数求解z(i)的后验概率:

p(z(i)=j|x(i);ϕ,μ,Σ)=p(x(i)|z(i)=j;μ,Σ)p(z(i)=j;ϕ)kl=1p(x(i)|z(i)=l;μ,Σ)p(z(i)=l;ϕ)

p(x(i)|z(i)=j;μ,Σ)样本所属的高斯分布在x(i)点处的概率密度计算得出;p(z(i)=j;ϕ)ϕj表示,E阶段中计算出的w(i)j是对z(i)的软猜测。

期望最大化算法是k-means算法的延伸,它只是将“硬”聚类分配c(i)替换成了“软”分配w(i)j。与k-means类似,它也可能嵌入局部最优解,所有你在具体应用时,最好多换几次初始参数。

1 0
原创粉丝点击