【记录读论文时遇到的一些算法7】—— 高斯混合模型(Gaussian Mixed Model)

高斯混合模型(GMM)是一种概率模型,常用于数据聚类。它由多个高斯分布函数线性组合而成,能有效处理复杂分布的数据。GMM通过EM算法进行参数估计,包括混合系数、均值和协方差矩阵。在EM算法中,E-step计算后验概率,M-step更新参数。GMM的可分性可通过计算重叠度来评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个例子

高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。

如图1,图中的点在我们看来明显分成两个聚类。这两个聚类中的点分别通过两个不同的正态分布随机生成而来。但是如果没有GMM,那么只能用一个的二维高斯分布来描述图1中的数据。图1中的椭圆即为二倍标准差的正态分布椭圆。这显然不太合理,毕竟肉眼一看就觉得应该把它们分成两类。

图1
图1

这时候就可以使用GMM了!如图2,数据在平面上的空间分布和图1一样,这时使用两个二维高斯分布来描述图2中的数据,分别记为 N ( μ 1 , Σ 1 ) \mathcal{N}\left(\boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1}\right) N(μ1,Σ1) N ( μ 2 , Σ 2 ) \mathcal{N}\left(\boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}\right) N(μ2,Σ2). 图中的两个椭圆分别是这两个高斯分布的二倍标准差椭圆。可以看到使用两个二维高斯分布来描述图中的数 据显然更合理。实际上图中的两个聚类的中的点是通过两个不同的正态分布随机生成而来。如果将两个二维高斯分布 N ( μ 1 , Σ 1 ) \mathcal{N}\left(\mu_{1}, \boldsymbol{\Sigma}_{1}\right) N(μ1,Σ1) N ( μ 2 , Σ 2 ) \mathcal{N}\left(\boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}\right) N(μ2,Σ2) 合成一个二维的分布,那么就可以用合成后的分布来描述图2中的所有点。最直观的方法就是对这两个二维高斯分布做线性组合,用线性组合后的分布来描述整个集合中的数据。这就是高斯混合模型(GMM)。

图2
图2

高斯混合模型 (GMM)

设有随机变量 X \boldsymbol{X} X ,则混合高斯模型可以用下式表示:
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) p(\boldsymbol{x})=\sum_{k=1}^{K} \pi_{k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) p(x)=k=1KπkN(xμk,Σk)
其中 N ( x ∣ μ k , Σ k ) \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) N(xμk,Σk) 称为混合模型中的第 k k k 个分量 (component)。如前面图2中的例子,有两个聚类,可以用两个二维高斯分布来表 示,那么分量数 K = 2. π k K=2 . \pi_{k} K=2.πk 是混合系数(mixture coefficient),且满足:
∑ k = 1 K π k = 1 \sum_{k=1}^{K} \pi_{k}=1 k=1Kπk=1
0 ≤ π k ≤ 1 0 \leq \pi_{k} \leq 1 0πk1
实际上,可以认为 π k \pi_{k} πk 就是每个分量 N ( x ∣ μ k , Σ k ) \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) N(xμk,Σk) 的权重。

GMM的应用

GMM常用于聚类。如果要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 K个 Component 之中选一 个,每个 Component 被选中的概率实际上就是它的系数 π k \pi_{k} πk ,选中 Component 之后,再单独地考虑从这个 Component 的分布中选取一 个点就可以了一这里已经回到了普通的 Gaussian 分布,转化为已知的问题。

将GMM用于聚类时,假设数据服从混合高斯分布 (Mixture Gaussian Distribution),那么只要根据数据推出 GMM 的概率分布来就可 以了;然后 GMM 的 K个 Component 实际上对应 K K K 个 cluster。根据数据来推算概率密度通常被称作 density estimation。特别地,当我 已知 (或假定) 概率密度函数的形式,而要估计其中的参数的过程被称作『参数估计』。

例如图2的例子,很明显有两个聚类,可以定义 K = 2 K=2 K=2. 那么对应的GMM形式如下:
p ( x ) = π 1 N ( x ∣ μ 1 , Σ 1 ) + π 2 N ( x ∣ μ 2 , Σ 2 ) p(\boldsymbol{x})=\pi_{1} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1}\right)+\pi_{2} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}\right) p(x)=π1N(xμ1,Σ1)+π2N(xμ2,Σ2)

上式中末知的参数有六个: ( π 1 , μ 1 , Σ 1 ; π 2 , μ 2 , Σ 2 ) \left(\pi_{1}, \boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1} ; \pi_{2}, \boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}\right) (π1,μ1,Σ1;π2,μ2,Σ2). 之前提到GMM聚类时分为两步,第一步是随机地在这 K K K 个分量中选一个,每个分 量被选中的概率即为混合系数 π k \pi_{k} πk. 可以设定 π 1 = π 2 = 0.5 \pi_{1}=\pi_{2}=0.5 π1=π2=0.5 ,表示每个分量被选中的概率是 0.5 0.5 0.5 ,即从中抽出一个点,这个点属于第一类 的概率和第二类的概率各占一半。但实际应用中事先指定 π k \pi_{k} πk 的值是很笨的做法,当问题一般化后,会出现一个问题: 当从图 2 中的集合随 机选取一个点,怎么知道这个点是来自 N ( x ∣ μ 1 , Σ 1 ) N\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{1}, \boldsymbol{\Sigma}_{1}\right) N(xμ1,Σ1) 还是 N ( x ∣ μ 2 , Σ 2 ) N\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{2}, \boldsymbol{\Sigma}_{2}\right) N(xμ2,Σ2) 呢? 换言之怎么根据数据自动确定 π 1 \pi_{1} π1 π 2 \pi_{2} π2 的值? 这就是 G M M \mathrm{GMM} GMM 参数估计的问题。要解决这个问题,可以使用EM算法。通过EM算法,我们可以迭代计算出GMM中的参数: ( π k , x k , Σ k ) \left(\pi_{k}, \boldsymbol{x}_{k}, \boldsymbol{\Sigma}_{k}\right) (πk,xk,Σk).

GMM参数估计过程

GMM的贝叶斯理解

在介绍GMM参数估计之前,先改写GMM的形式,改写之后的GMM模型可以方便地使用EM估计参数。GMM的原始形式如下:
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) (1) p(\boldsymbol{x})=\sum_{k=1}^{K} \pi_{k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) \tag{1} p(x)=k=1KπkN(xμk,Σk)(1)
前面提到 π k \pi_{k} πk 可以看成是第 k k k 类被选中的概率。我们引入一个新的 K K K 维随机变量 z . z k ( 1 ≤ k ≤ K ) \boldsymbol{z} . z_{k}(1 \leq k \leq K) z.zk(1kK) 只能取0或1两个值; z k = 1 z_{k}=1 zk=1 表示第 k k k 类 被选中的概率,即: p ( z k = 1 ) = π k p\left(z_{k}=1\right)=\pi_{k} p(zk=1)=πk ;如果 z k = 0 z_{k}=0 zk=0 表示第 k k k 类没有被选中的概率。更数学化一点, z k z_{k} zk 要满足以下两个条件:
z k ∈ { 0 , 1 } ∑ K z k = 1 \begin{aligned} &z_{k} \in\{0,1\} \\ &\sum_{K} z_{k}=1 \end{aligned} zk{0,1}Kzk=1
例如图2中的例子,有两类,则 z \boldsymbol{z} z 的维数是2. 如果从第一类中取出一个点,则 z = ( 1 , 0 ) \boldsymbol{z}=(1,0) z=(1,0) ;如果从第二类中取出一个点,则 z = ( 0 , 1 ) \boldsymbol{z}=(0,1) z=(0,1).

z k = 1 z_{k}=1 zk=1 的概率就是 π k \pi_{k} πk ,假设 z k z_{k} zk 之间是独立同分布的(iid),我们可以写出 z \boldsymbol{z} z 的联合概率分布形式,就是连乘:
p ( z ) = p ( z 1 ) p ( z 2 ) … p ( z K ) = ∏ k = 1 K π k z k (2) p(\boldsymbol{z})=p\left(z_{1}\right) p\left(z_{2}\right) \ldots p\left(z_{K}\right)=\prod_{k=1}^{K} \pi_{k}^{z_{k}}\tag{2} p(z)=p(z1)p(z2)p(zK)=k=1Kπkzk(2)

因为 z k z_{k} zk 只能取 0 或 1 ,且 z \boldsymbol{z} z 中只能有一个 z k z_{k} zk 为 1 而其它 z j ( j ≠ k ) z_{j}(j \neq k) zj(j=k) 全为 0 ,所以上式是成立的。

图2中的数据可以分为两类,显然,每一類中的数据都是服从正态分布的。这个叙述可以用条件概率来表示:
p ( x ∣ z k = 1 ) = N ( x ∣ μ k , Σ k ) p\left(\boldsymbol{x} \mid z_{k}=1\right)=\mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) p(xzk=1)=N(xμk,Σk)
即第 k k k 类中的数据服从正态分布。进而上式有可以写成如下形式:
p ( x ∣ z ) = ∏ k = 1 K N ( x ∣ μ k , Σ k ) z k (3) p(\boldsymbol{x} \mid \boldsymbol{z})=\prod_{k=1}^{K} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)^{z_k}\tag{3} p(xz)=k=1KN(xμk,Σk)zk(3)
上面分别给出了 p ( z ) p(\boldsymbol{z}) p(z) p ( x ∣ z ) p(\boldsymbol{x} \mid \boldsymbol{z}) p(xz) 的形式,根据条件概率公式,可以求出 p ( x ) p(\boldsymbol{x}) p(x) 的形式:
p ( x ) = ∑ z p ( z ) p ( x ∣ z ) = ∑ z ( ∏ k = 1 K π k z k N ( x ∣ μ k , Σ k ) z k ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) (4) \begin{aligned} p(\boldsymbol{x}) &=\sum_{\boldsymbol{z}} p(\boldsymbol{z}) p(\boldsymbol{x} \mid \boldsymbol{z}) \\ &=\sum_{\boldsymbol{z}}\left(\prod_{k=1}^{K} \pi_{k}^{z k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)^{z_{k}}\right) \\ &=\sum_{k=1}^{K} \pi_{k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right) \end{aligned}\tag{4} p(x)=zp(z)p(xz)=z(k=1KπkzkN(xμk,Σk)zk)=k=1KπkN(xμk,Σk)(4)
(注: 上式第二个等号,对 z \boldsymbol{z} z 求和,实际上就是 ∑ k = 1 K \sum_{k=1}^{K} k=1K 。又因为对某个 k k k ,只要 i ≠ k i \neq k i=k ,则有 z i = 0 z_{i}=0 zi=0 ,所以 z k = 0 z_{k}=0 zk=0 的项为 1 ,可省略,最终 得到第三个等号)

可以看到GMM模型的(1)式与(4)式有一样的形式,且(4)式中引入了一个新的变量 z \boldsymbol{z} z ,通常称为隐含变量 (latent variable)。对于图2中的 数据,『隐含』的意义是: 我们知道数据可以分成两类,但是随机抽取一个数据点,我们不知道这个数据点属于第一类还是第二类,它的 归属我们观察不到,因此引入一个隐含变量 z \boldsymbol{z} z 来描述这个现象。

注意到在贝叶斯的思想下, p ( z ) p(\boldsymbol{z}) p(z) 是先验概率, p ( x ∣ z ) p(\boldsymbol{x} \mid \boldsymbol{z}) p(xz) 是似然概率,很自然我们会想到求出后验概率 p ( z ∣ x ) p(\boldsymbol{z} \mid \boldsymbol{x}) p(zx) :
γ ( z k ) = p ( z k = 1 ∣ x ) = p ( z k = 1 ) p ( x ∣ z k = 1 ) p ( x , z k = 1 ) = p ( z k = 1 ) p ( x ∣ z k = 1 ) ∑ j = 1 K p ( z j = 1 ) p ( x ∣ z j = 1 ) (  全概率公式  ) = π k N ( x ∣ μ k , Σ k ) ∑ j = 1 K π j N ( x ∣ μ j , Σ j ) (  结合  ( 3 ) 、 ( 4 ) ) (5) \begin{aligned} \gamma\left(z_{k}\right) &=p\left(z_{k}=1 \mid \boldsymbol{x}\right) \\ &=\frac{p\left(z_{k}=1\right) p\left(\boldsymbol{x} \mid z_{k}=1\right)}{p\left(\boldsymbol{x}, z_{k}=1\right)} \\ &=\frac{p\left(z_{k}=1\right) p\left(\boldsymbol{x} \mid z_{k}=1\right)}{\sum_{j=1}^{K} p\left(z_{j}=1\right) p\left(\boldsymbol{x} \mid z_{j}=1\right)}(\text { 全概率公式 }) \\ &=\frac{\pi_{k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{\boldsymbol{k}}, \boldsymbol{\Sigma}_{\boldsymbol{k}}\right)}{\sum_{j=1}^{K} \pi_{j} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{\boldsymbol{j}}, \boldsymbol{\Sigma}_{j}\right)}(\text { 结合 }(3) 、(4)) \end{aligned}\tag{5} γ(zk)=p(zk=1x)=p(x,zk=1)p(zk=1)p(xzk=1)=j=1Kp(zj=1)p(xzj=1)p(zk=1)p(xzk=1)( 全概率公式 )=j=1KπjN(xμj,Σj)πkN(xμk,Σk)( 结合 (3)(4))(5)
(第2行,贝叶斯定理。关于这一行的分母,很多人有疑问,应该是 p ( x , z k = 1 ) p\left(\boldsymbol{x}, z_{k}=1\right) p(x,zk=1) 还是 p ( x ) p(\boldsymbol{x}) p(x) ,按昭正常写法,应该是 p ( x ) p(\boldsymbol{x}) p(x) 。但是为了强 调 z k z_{k} zk 的取值,有的书会写成 p ( x , z k = 1 ) p\left(\boldsymbol{x}, z_{k}=1\right) p(x,zk=1) ,比如李航的《统计学习方法》,这里就约定 p ( x ) p(\boldsymbol{x}) p(x) p ( x , z k = 1 ) p\left(\boldsymbol{x}, z_{k}=1\right) p(x,zk=1) 是等同的)

上式中我们定义符号 γ ( z k ) \gamma\left(z_{k}\right) γ(zk) 来表示来表示第 k k k 个分量的后验概率。在贝叶斯的观点下, π k \pi_{k} πk 可视为 z k = 1 z_{k}=1 zk=1 的先验概率。

上述内容改写了GMM的形式,并引入了隐含变量 z \boldsymbol{z} z 和已知 x \boldsymbol{x} x 后的的后验概率 γ ( z k ) \gamma\left(z_{k}\right) γ(zk) ,这样做是为了方便使用EM算法来估计GMM的参数。

EM算法估计GMM参数

EM算法 (Expectation-Maximization algorithm) 分两步,第一步先求出要估计参数的粗略值,第二步使用第一步的值最大化似然函数。 因此要先求出GMM的似然函数。

假设 x = { x 1 , x 2 , … , x N } \boldsymbol{x}=\left\{\boldsymbol{x}_{1}, \boldsymbol{x}_{2}, \ldots, \boldsymbol{x}_{N}\right\} x={x1,x2,,xN} ,对于图2, x \boldsymbol{x} x 是图中所有点(每个点有在二维平面上有两个坐标,是二维向量,因此 x 1 , x 2 \boldsymbol{x}_{1}, \boldsymbol{x}_{2} x1,x2 等都用粗体表 示)。GMM的概率模型如(1)式所示。GMM模型中有三个参数需要估计,分别是 π , μ \boldsymbol{\pi} , \boldsymbol{\mu} πμ Σ \boldsymbol{\Sigma} Σ. 将(1)式稍微改写一下:
p ( x ∣ π , μ , Σ ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) (6) p(\boldsymbol{x} \mid \boldsymbol{\pi}, \boldsymbol{\mu}, \boldsymbol{\Sigma})=\sum_{k=1}^{K} \pi_{k} \mathcal{N}\left(\boldsymbol{x} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)\tag{6} p(xπ,μ,Σ)=k=1KπkN(xμk,Σk)(6)

为了估计这三个参数,需要分别求解出这三个参数的最大似然函数。先求解 μ k \mu_{k} μk 的最大似然函数。样本符合iid, (6)式所有样本连乘得到最大似然函数,对 (6)式取对数得到对数似然函数,然后再对 μ k \mu_{k} μk 求导并令导数为 0 即得到最大似然函数。

0 = − ∑ n = 1 N π k N ( x n ∣ μ k , Σ k ) ∑ j π j N ( x n ∣ μ j , Σ j ) Σ k − 1 ( x n − μ k ) (7) 0=-\sum_{n=1}^{N} \frac{\pi_{k} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)}{\sum_{j} \pi_{j} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{j}, \boldsymbol{\Sigma}_{j}\right)} \boldsymbol{\Sigma}_{k}^{-1}\left(\boldsymbol{x}_{n}-\boldsymbol{\mu}_{k}\right)\tag{7} 0=n=1NjπjN(xnμj,Σj)πkN(xnμk,Σk)Σk1(xnμk)(7)

注意到上式中分数的一项的形式正好是(5)式后验概率的形式。两边同乘 Σ k \boldsymbol{\Sigma}_{k} Σk ,重新整理可以得到:
μ k = 1 N k ∑ n = 1 N γ ( z n k ) x n (8) \boldsymbol{\mu}_{k}=\frac{1}{N_{k}} \sum_{n=1}^{N} \gamma\left(z_{n k}\right) \boldsymbol{x}_{n}\tag{8} μk=Nk1n=1Nγ(znk)xn(8)

其中:

N k = ∑ n = 1 N γ ( z n k ) (9) N_{k}=\sum_{n=1}^{N} \gamma\left(z_{n k}\right)\tag{9} Nk=n=1Nγ(znk)(9)

(8)式和(9)式中, N N N 表示点的数量。 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) 表示点 n ( x n ) n\left(\boldsymbol{x}_{n}\right) n(xn) 属于聚类 k k k 的后验概率。则 N k N_{k} Nk 可以表示属于第 k k k 个聚类的点的数量。那么 μ k \boldsymbol{\mu}_{k} μk 表 示所有点的加权平均,每个点的权值是 ∑ n = 1 N γ ( z n k ) \sum_{n=1}^{N} \gamma\left(z_{n k}\right) n=1Nγ(znk) ,跟第 k k k 个聚类有关。

同理求 Σ k \boldsymbol{\Sigma}_{k} Σk 的最大似然函数,可以得到:
Σ k = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k ) ( x n − μ k ) T (10) \boldsymbol{\Sigma}_{k}=\frac{1}{N_{k}} \sum_{n=1}^{N} \gamma\left(z_{n k}\right)\left(x_{n}-\boldsymbol{\mu}_{k}\right)\left(x_{n}-\boldsymbol{\mu}_{k}\right)^{T}\tag{10} Σk=Nk1n=1Nγ(znk)(xnμk)(xnμk)T(10)

最后剩下 π k \pi_{k} πk 的最大似然函数。注意到 π k \pi_{k} πk 有限制条件 ∑ k = 1 K π k = 1 \sum_{k=1}^{K} \pi_{k}=1 k=1Kπk=1 ,因此我们需要加入拉格朗日算子:

ln ⁡ p ( x ∣ π , μ , Σ ) + λ ( ∑ k = 1 K π k − 1 ) \ln p(\boldsymbol{x} \mid \boldsymbol{\pi}, \boldsymbol{\mu}, \boldsymbol{\Sigma})+\lambda\left(\sum_{k=1}^{K} \pi_{k}-1\right) lnp(xπ,μ,Σ)+λ(k=1Kπk1)
求上式关于 π k \pi_{k} πk 的最大似然函数,得到:
0 = ∑ n = 1 N N ( x n ∣ μ k , Σ k ) ∑ j π j N ( x n ∣ μ j , Σ j ) + λ (11) 0=\sum_{n=1}^{N} \frac{\mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)}{\sum_{j} \pi_{j} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{j}, \boldsymbol{\Sigma}_{j}\right)}+\lambda\tag{11} 0=n=1NjπjN(xnμj,Σj)N(xnμk,Σk)+λ(11)
上式两边同乘 π k \pi_{k} πk ,我们可以做如下推导:
0 = ∑ n = 1 N π k N ( x n ∣ μ k , Σ k ) ∑ j π j N ( x n ∣ μ j , Σ j ) + λ π k (11.1) 0=\sum_{n=1}^{N} \frac{\pi_{k} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)}{\sum_{j} \pi_{j} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{j}, \boldsymbol{\Sigma}_{j}\right)}+\lambda \pi_{k}\tag{11.1} 0=n=1NjπjN(xnμj,Σj)πkN(xnμk,Σk)+λπk(11.1)
结合公式(5)、(9),可以将上式改写成:
0 = N k + λ π k (11.2) 0=N_{k}+\lambda \pi_{k}\tag{11.2} 0=Nk+λπk(11.2)
注意到 ∑ k = 1 K π k = 1 \sum_{k=1}^{K} \pi_{k}=1 k=1Kπk=1 ,上式两边同时对 k k k 求和。此外 N k N_{k} Nk 表示属于第个聚类的点的数量 (公式(9))。对 N k N_{k} Nk, 从 k = 1 k=1 k=1 k = K k=K k=K 求和后, 就是所有点的数量 N N N :
0 = ∑ k = 1 K N k + λ ∑ k = 1 K π k (11.3) 0=\sum_{k=1}^{K} N_{k}+\lambda \sum_{k=1}^{K} \pi_{k}\tag{11.3} 0=k=1KNk+λk=1Kπk(11.3)
0 = N + λ (11.4) 0=N+\lambda \tag{11.4} 0=N+λ(11.4)

从而可得到 λ = − N \lambda=-N λ=N ,带入(11.2),进而可以得到 π k \pi_{k} πk 更简洁的表达式:
π k = N k N (12) \pi_{k}=\frac{N_{k}}{N}\tag{12} πk=NNk(12)

EM算法估计GMM参数即最大化(8),(10)和(12)。需要用到(5),(8),(10)和(12)四个公式。我们先指定 π , μ \boldsymbol{\pi} , \boldsymbol{\mu} πμ Σ \boldsymbol{\Sigma} Σ 的初始值,带入(5)中计 算出 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) ,然后再将 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) 带入(8),(10)和(12),求得 π k , μ k \pi_{k} , \boldsymbol{\mu}_{k} πkμk Σ k \boldsymbol{\Sigma}_{k} Σk ;接着用求得的 π k , μ k \pi_{k} , \boldsymbol{\mu}_{k} πkμk Σ Σ k \boldsymbol{\Sigma} \boldsymbol{\Sigma}_{k} ΣΣk 再带入 (5)得到新的 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) ,再将 更新后的 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) 带入(8),(10)和(12),如此往复,直到算法收敛。

EM算法

  1. 定义分量数目 K K K ,对每个分量 k k k 设置 π k , μ k \pi_{k} , \boldsymbol{\mu}_{k} πkμk Σ k \boldsymbol{\Sigma}_{k} Σk 的初始值,然后计算(6)式的对数似然函数。
  2. E step
    根据当前的 π k 、 μ k 、 Σ k \pi_{k} 、 \boldsymbol{\mu}_{k} 、 \boldsymbol{\Sigma}_{k} πkμkΣk 计算后验概率 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk)
    γ ( z n k ) = π k N ( x n ∣ μ n , Σ n ) ∑ j = 1 K π j N ( x n ∣ μ j , Σ j ) \gamma\left(z_{n k}\right)=\frac{\pi_{k} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{n}, \boldsymbol{\Sigma}_{n}\right)}{\sum_{j=1}^{K} \pi_{j} \mathcal{N}\left(\boldsymbol{x}_{n} \mid \boldsymbol{\mu}_{j}, \boldsymbol{\Sigma}_{j}\right)} γ(znk)=j=1KπjN(xnμj,Σj)πkN(xnμn,Σn)
  3. M step
    根据E step中计算的 γ ( z n k ) \gamma\left(z_{n k}\right) γ(znk) 再计算新的 π k 、 μ k 、 Σ k \pi_{k} 、 \boldsymbol{\mu}_{k} 、 \boldsymbol{\Sigma}_{k} πkμkΣk
    μ k n e w = 1 N k ∑ n = 1 N γ ( z n k ) x n Σ k n e w = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k n e w ) ( x n − μ k n e w ) T π k n e w = N k N \begin{aligned} \boldsymbol{\mu}_{k}^{n e w} &=\frac{1}{N_{k}} \sum_{n=1}^{N} \gamma\left(z_{n k}\right) \boldsymbol{x}_{n} \\ \boldsymbol{\Sigma}_{k}^{n e w} &=\frac{1}{N_{k}} \sum_{n=1}^{N} \gamma\left(z_{n k}\right)\left(\boldsymbol{x}_{n}-\boldsymbol{\mu}_{k}^{n e w}\right)\left(\boldsymbol{x}_{n}-\boldsymbol{\mu}_{k}^{n e w}\right)^{T} \\ \pi_{k}^{n e w} &=\frac{N_{k}}{N} \end{aligned} μknewΣknewπknew=Nk1n=1Nγ(znk)xn=Nk1n=1Nγ(znk)(xnμknew)(xnμknew)T=NNk
    其中:
    N k = ∑ n = 1 N γ ( z n k ) N_{k}=\sum_{n=1}^{N} \gamma\left(z_{n k}\right) Nk=n=1Nγ(znk)
  4. 计算(6)式的对数似然函数
    ln ⁡ p ( x ∣ π , μ , Σ ) = ∑ n = 1 N ln ⁡ { ∑ k = 1 K π k N ( x k ∣ μ k , Σ k ) } \ln p(\boldsymbol{x} \mid \boldsymbol{\pi}, \boldsymbol{\mu}, \boldsymbol{\Sigma})=\sum_{n=1}^{N} \ln \left\{\sum_{k=1}^{K} \pi_{k} \mathcal{N}\left(\boldsymbol{x}_{k} \mid \boldsymbol{\mu}_{k}, \boldsymbol{\Sigma}_{k}\right)\right\} lnp(xπ,μ,Σ)=n=1Nln{k=1KπkN(xkμk,Σk)}
  5. 检查参数是否收敛或对数似然函数是否收敛,若不收敛,则返回第2步。

GMM聚类的可分性评价

使用GMM得到聚类结果后如何定量评价两个类别的可分性呢? 可以通过计算两个或多个类别分布的重疍度来评价模型的可分性。这里介 绍一种高斯混合模型的重叠度计算方法:计算高斯混合模型的可分性和重叠度 (Overlap Rate, OLR)。

Reference

  1. 漫谈 Clustering (3): Gaussian Mixture Model
  2. Draw Gaussian distribution ellipse
  3. Pang-Ning Tan 等, 数据挖掘导论 (英文版), 机械工业出版社, 2010
  4. Christopher M. Bishop etc., Pattern Recognition and Machine Learning, Springer, 2006
  5. 李航, 统计学习方法, 清华大学出版社, 2012
  6. 高斯混合模型(GMM)及其EM算法的理解
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值