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σ21∥x−μk∥2}(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−μj∥2/2σ2}πkexp{−∥xi−μk∥2/2σ2}(32)
考虑极限 σ 2 → 0 {\sigma^2} \to 0 σ2→0,式(32)右侧的分母中包含了以j索引的多个趋于零的项。假设使得 ∥ x i − μ j ∥ 2 \|\bm{x}_i-{\bm \mu}_j\|^2 ∥xi−μj∥2最小的特定项(例如 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} γik→rik,其中 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 σ2→0下,用来给出完整数据对数似然函数期望的式(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=1∑Nk=1∑Krik∥xi−μk∥2+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=1∑nk=1∑Kri(k)∥xi−μk∥2(34)
算法 K-Means
初始化 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
repeat
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,⋯,K∥xi−μj(t)∥2否则,i=1,⋯,nM 步:更新簇中心
μ 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=1∑nri(t+1)(k)i=1∑nri(t+1)(k)xi,对于 k=1,⋯,K(4)计算得分:
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=1∑nk=1∑Kri(t+1)(k)∥xi−μk(t+1)∥2until ∣ J ( t + 1 ) − J ( t ) ∣ < τ |J^{(t+1)} - J^{(t)}| < \tau ∣J(t+1)−J(t)∣<τ
算法 使用EM和高斯混合模型聚类
初始化 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
repeat
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=1∑Kπk(t)N(xi∣μk(t),Σk(t))πk(t)N(xi∣μk(t),Σk(t))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=1∑nγk(t)(xi)i=1∑nγ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=1∑nγk(t)(xi)i=1∑nγ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=1∑nγk(t)(xi)(21)计算对数似然:
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=1∑nln(k=1∑Kπk(t+1)N(xi∣μk(t+1),Σk(t+1)))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)∣<τ