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/21?exp{?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?πj?exp{?∥xi??μj?∥2/2σ2}πk?exp{?∥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∣μ,Σ,π)]→?21?n=1∑N?k=1∑K?rik?∥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=n1?i=1∑n?k=1∑K?ri?(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,?,n -
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=1∑n?ri(t+1)?(k)i=1∑n?ri(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)=n1?i=1∑n?k=1∑K?ri(t+1)?(k)∥xi??μk(t+1)?∥2 -
until ∣ 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)?=n1?i=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∑n?ln(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?)∣<τ