高斯混合模型GMM&K均值(十三-1)——K均值是高斯混合模型的特例

发布于:2025-06-28 ⋅ 阅读:(16) ⋅ 点赞:(0)

EM算法与K均值算法的关系


K均值可以看成是高斯混合模型的特例。


对K均值算法与EM算法进行比较后,可以发现它们之间有很大的相似性。K均值算法将数据点硬(hard)分配到聚类中,每个数据点唯一地与一个聚类相关联,而EM算法基于后验概率进行软(soft)分配。事实上,可以从EM算法推导出K均值算法。

考虑一个高斯混合模型,其中混合分量的协方差矩阵由 σ 2 I {\sigma^2} I σ2I给出,其中 σ 2 {\sigma^2} σ2是所有分量共享的方差参数, I I I是单位矩阵,因此

N ( x ∣ μ k , Σ k ) = 1 ( 2 π σ 2 ) d / 2 exp ⁡ { − 1 2 σ 2 ∥ x − μ k ∥ 2 } (31) N(\bm{x}|{\bm \mu}_k, {\bm \varSigma}_k) = \frac{1}{(2\pi{\sigma^2})^{d/2}} \exp\left\{-\frac{1}{2{\sigma^2}}\|\bm{x}-{\bm \mu}_k\|^2\right\} \tag{31} N(xμk,Σk)=(2πσ2)d/21exp{2σ21xμk2}(31)

考虑将要应用于这种形式的包含K个分量的高斯混合模型的EM算法,其中将 σ 2 {\sigma^2} σ2当作固定常数而不是重新估计的参数处理。根据式(12),特定数据点 x i \bm{x}_i xi的后验概率或责任由下式给出:

γ i k = π k exp ⁡ { − ∥ x i − μ k ∥ 2 / 2 σ 2 } ∑ j π j exp ⁡ { − ∥ x i − μ j ∥ 2 / 2 σ 2 } (32) \gamma_{ik} = \frac{\pi_k \exp\left\{-\|\bm{x}_i-{\bm \mu}_k\|^2 / 2{\sigma^2}\right\}}{\sum_j \pi_j \exp\left\{-\|\bm{x}_i-{\bm \mu}_j\|^2 / 2{\sigma^2}\right\}} \tag{32} γik=jπjexp{xiμj2/2σ2}πkexp{xiμk2/2σ2}(32)

考虑极限 σ 2 → 0 {\sigma^2} \to 0 σ20,式(32)右侧的分母中包含了以j索引的多个趋于零的项。假设使得 ∥ x i − μ j ∥ 2 \|\bm{x}_i-{\bm \mu}_j\|^2 xiμj2最小的特定项(例如 j = l j=l j=l的项)将会最慢地趋于零并支配该平方和。因此,数据点 x i \bm{x}_i xi的责任 γ i k \gamma_{ik} γik除了第 l l l项外都会趋于零,第l项的责任 γ i k \gamma_{ik} γik将趋于1。注意,这独立于 π k \pi_k πk的值,只要没有任何 π k \pi_k πk为零即可。因此,在这个极限下,获得了数据点到聚类的硬分配,就像在K均值算法中一样,所以 γ i k → r i k \gamma_{ik} \to r_{ik} γikrik,其中 r i k r_{ik} rik由式(2)定义。每个数据点因此被分配到与其最近的均值所代表的聚类。

然后EM算法中 μ k {\bm \mu}_k μk的重估方程由式(16)给出,并简化为K均值算法的结果[式(4)]。注意,混合系数的重估方程[式(21)]仅是将 π k \pi_k πk的值重置为分配给聚类k的数据点的比例,这些参数在算法中已不再起作用。

最后,在极限 σ 2 → 0 {\sigma^2} \to 0 σ20下,用来给出完整数据对数似然函数期望的式(30),就可以变为

E Z [ ln ⁡ p ( X , Z ∣ μ , Σ , π ) ] → − 1 2 ∑ n = 1 N ∑ k = 1 K r i k ∥ x i − μ k ∥ 2 + const (33) {E}_Z[\ln p(X,Z|{\bm \mu},\Sigma,\pi)] \to -\frac{1}{2}\sum_{n=1}^N\sum_{k=1}^K r_{ik}\|\bm{x}_i-{\bm \mu}_k\|^2 + \text{const} \tag{33} EZ[lnp(X,Zμ,Σ,π)]21n=1Nk=1Krikxiμk2+const(33)

因此,看到在这个极限下,完整数据对数似然函数的最大化期望等价于最小化K均值算法的误差度量J,J由式(34)给出。注意,K均值算法不估计聚类的协方差,只估计聚类的均值。

J = 1 n ∑ i = 1 n ∑ k = 1 K r i ( k ) ∥ x i − μ k ∥ 2 (34) J = \frac{1}{n} \sum_{i=1}^n \sum_{k=1}^K r_i(k) \|{\bm x}_i - \boldsymbol{{\bm \mu}}_k\|^2\tag{34} J=n1i=1nk=1Kri(k)xiμk2(34)

在这里插入图片描述


算法 K-Means


  1. 初始化 K K K τ > 0 \tau > 0 τ>0 { μ k ( 0 ) } k = 1 K \{\boldsymbol{{\bm {\bm \mu}}}_k^{(0)}\}_{k=1}^K {μk(0)}k=1K

  2. repeat

  3. E 步:更新簇分配
    r i ( t + 1 ) ( k ) = { 1 , 若  k = arg ⁡ min ⁡ j = 1 , ⋯   , K ∥ x i − μ j ( t ) ∥ 2 0 , 否则 , i = 1 , ⋯   , n r_i^{(t+1)}(k) = \begin{cases} 1, & \text{若 } k = \arg \min_{j=1,\cdots,K} \|{\bm x}_i - \boldsymbol{{\bm {\bm \mu}}}_j^{(t)}\|^2 \\ 0, & \text{否则} \end{cases}, \quad i=1,\cdots,n ri(t+1)(k)={1,0, k=argminj=1,,Kxiμj(t)2否则,i=1,,n

  4. M 步:更新簇中心
    μ k ( t + 1 ) = ∑ i = 1 n r i ( t + 1 ) ( k ) x i ∑ i = 1 n r i ( t + 1 ) ( k ) , 对于  k = 1 , ⋯   , K (4) \boldsymbol{{\bm {\bm \mu}}}_k^{(t+1)} = \frac{\sum\limits_{i=1}^n r_i^{(t+1)}(k) {\bm x}_i}{\sum\limits_{i=1}^n r_i^{(t+1)}(k)}, \quad \text{对于 } k=1,\cdots,K\tag{4} μk(t+1)=i=1nri(t+1)(k)i=1nri(t+1)(k)xi,对于 k=1,,K(4)

  5. 计算得分:
    J ( t + 1 ) = 1 n ∑ i = 1 n ∑ k = 1 K r i ( t + 1 ) ( k ) ∥ x i − μ k ( t + 1 ) ∥ 2 J^{(t+1)} = \frac{1}{n} \sum\limits_{i=1}^n \sum\limits_{k=1}^K r_i^{(t+1)}(k) \|{\bm x}_i - \boldsymbol{{\bm {\bm \mu}}}_k^{(t+1)}\|^2 J(t+1)=n1i=1nk=1Kri(t+1)(k)xiμk(t+1)2

  6. until ∣ J ( t + 1 ) − J ( t ) ∣ < τ |J^{(t+1)} - J^{(t)}| < \tau J(t+1)J(t)<τ


算法 使用EM和高斯混合模型聚类


  1. 初始化 K K K τ > 0 \tau > 0 τ>0 { π k ( 0 ) , μ k ( 0 ) , Σ k ( 0 ) } k = 1 K \{\pi_k^{(0)}, {\bm {\bm \mu}}_k^{(0)}, {\bm \varSigma}_k^{(0)}\}_{k=1}^K {πk(0),μk(0),Σk(0)}k=1K

  2. repeat

  3. E步:更新簇成员
    γ k ( t ) ( x i ) = π k ( t ) N ( x i ∣ μ k ( t ) , Σ k ( t ) ) ∑ k = 1 K π k ( t ) N ( x i ∣ μ k ( t ) , Σ k ( t ) ) \gamma_k^{(t)}({\bm x}_i) = \frac{\pi_k^{(t)} {N}({\bm x}_i \mid {\bm {\bm \mu}}_k^{(t)}, {\bm \varSigma}_k^{(t)})}{\sum\limits_{k=1}^K \pi_k^{(t)} {N}({\bm x}_i \mid {\bm {\bm \mu}}_k^{(t)}, {\bm \varSigma}_k^{(t)})} γk(t)(xi)=k=1Kπk(t)N(xiμk(t),Σk(t))πk(t)N(xiμk(t),Σk(t))

  4. M步:重新估计模型参数
    μ k ( t + 1 ) = ∑ i = 1 n γ k ( t ) ( x i ) x i ∑ i = 1 n γ k ( t ) ( x i ) (16) {\bm {\bm \mu}}_k^{(t+1)} = \frac{\sum\limits_{i=1}^n \gamma_k^{(t)}({\bm x}_i) {\bm x}_i}{\sum\limits_{i=1}^n \gamma_k^{(t)}({\bm x}_i)}\tag{16} μk(t+1)=i=1nγk(t)(xi)i=1nγk(t)(xi)xi(16) Σ k ( t + 1 ) = ∑ i = 1 n γ k ( t ) ( x i ) ( x i − μ ^ k ( t + 1 ) ) ( x i − μ ^ k ( t + 1 ) ) ⊤ ∑ i = 1 n γ k ( t ) ( x i ) {\bm \varSigma}_k^{(t+1)} = \frac{\sum\limits_{i=1}^n \gamma_k^{(t)}({\bm x}_i) ({\bm x}_i - \hat{{\bm {\bm \mu}}}_k^{(t+1)}) ({\bm x}_i - \hat{{\bm {\bm \mu}}}_k^{(t+1)})^ {\top} }{\sum\limits_{i=1}^n \gamma_k^{(t)}({\bm x}_i)} Σk(t+1)=i=1nγk(t)(xi)i=1nγk(t)(xi)(xiμ^k(t+1))(xiμ^k(t+1)) π k ( t + 1 ) = 1 n ∑ i = 1 n γ k ( t ) ( x i ) (21) \pi_k^{(t+1)} = \frac{1}{n} \sum\limits_{i=1}^n \gamma_k^{(t)}({\bm x}_i)\tag{21} πk(t+1)=n1i=1nγk(t)(xi)(21)

  5. 计算对数似然:
    L ( { π k ( t + 1 ) , μ k ( t + 1 ) , Σ k ( t + 1 ) } k = 1 K ) = ∑ i = 1 n ln ⁡ ( ∑ k = 1 K π k ( t + 1 ) N ( x i ∣ μ k ( t + 1 ) , Σ k ( t + 1 ) ) ) L(\{\pi_k^{(t+1)}, {\bm {\bm \mu}}_k^{(t+1)}, {\bm \varSigma}_k^{(t+1)}\}_{k=1}^K) = \sum\limits_{i=1}^n \ln \left( \sum\limits_{k=1}^K \pi_k^{(t+1)} {N}({\bm x}_i \mid {\bm {\bm \mu}}_k^{(t+1)}, {\bm \varSigma}_k^{(t+1)}) \right) L({πk(t+1),μk(t+1),Σk(t+1)}k=1K)=i=1nln(k=1Kπk(t+1)N(xiμk(t+1),Σk(t+1)))

  6. until ∣ L ( { π k ( t + 1 ) , μ k ( t + 1 ) , Σ k ( t + 1 ) } k = 1 K ) − L ( { π k ( t ) , μ k ( t ) , Σ k ( t ) } k = 1 K ) ∣ < τ |L(\{\pi_k^{(t+1)}, {\bm {\bm \mu}}_k^{(t+1)}, {\bm \varSigma}_k^{(t+1)}\}_{k=1}^K) - L(\{\pi_k^{(t)}, {\bm {\bm \mu}}_k^{(t)}, {\bm \varSigma}_k^{(t)}\}_{k=1}^K)| < \tau L({πk(t+1),μk(t+1),Σk(t+1)}k=1K)L({πk(t),μk(t),Σk(t)}k=1K)<τ



网站公告

今日签到

点亮在社区的每一天
去签到