从混合高斯密度函数估计的角度,简述K-Means聚类算法的原理。给出K-Means聚类算法的计算步骤,说明会影响K-Means算法聚类性能的因素
K-Means算法可以看作是一种简化的混合高斯模型,在GMM模型中,需要估计的参数有每个高斯成分前的系数,每个高斯成分的协方差矩阵和均值向量。K-Means等价于固定GMM中每个高斯成分的系数都相等,每个高斯成分都协方差矩阵为单位阵,只需要优化每个高斯成分的均值向量。那么K-Means模型可以写成(一共有C个类别,n个样本):
p
(
x
)
=
1
C
∑
i
=
1
C
1
2
π
e
x
p
{
−
1
2
(
x
−
μ
i
)
T
(
x
−
μ
i
)
}
p(x)=\frac1C\sum_{i=1}^C \frac{1}{\sqrt{2\pi}}exp\{-\frac12(x-\mu_i)^T(x-\mu_i)\}
p(x)=C1i=1∑C2π1exp{−21(x−μi)T(x−μi)}
对上式运用极大似然估计,对数似然函数
log
∏
i
=
1
n
p
(
x
i
)
=
∑
i
=
1
n
log
p
(
x
i
)
=
−
n
log
(
C
2
π
)
+
∑
i
=
1
n
log
(
∑
j
=
1
C
exp
(
−
1
2
(
x
i
−
μ
j
)
T
(
x
i
−
μ
j
)
)
)
\log \prod_{i=1}^n p(x_i)=\sum_{i=1}^n\log p(x_i)=-n\log(C\sqrt{2\pi})+\sum_{i=1}^n\log\left(\sum_{j=1}^C\exp\left(-\frac{1}{2}(x_i-\mu_j)^T(x_i-\mu_j)\right)\right)
logi=1∏np(xi)=i=1∑nlogp(xi)=−nlog(C2π)+i=1∑nlog(j=1∑Cexp(−21(xi−μj)T(xi−μj)))
令似然函数对
μ
j
\mu_j
μj的梯度为0得到
∑
i
=
1
n
exp
(
−
1
2
(
x
i
−
μ
j
)
T
(
x
i
−
μ
j
)
)
∑
j
=
1
C
exp
(
−
1
2
(
x
i
−
μ
j
)
T
(
x
i
−
μ
j
)
)
(
x
i
−
μ
j
)
=
0
⇔
∑
i
=
1
n
γ
j
(
x
i
)
(
x
i
−
μ
j
)
=
0
其
中
γ
j
(
x
i
)
=
exp
(
−
1
2
(
x
i
−
μ
j
)
T
(
x
i
−
μ
j
)
)
∑
j
=
1
C
exp
(
−
1
2
(
x
i
−
μ
j
)
T
(
x
i
−
μ
j
)
)
(
▽
)
\sum_{i=1}^n\frac{\exp(-\frac12(x_i-\mu_j)^T(x_i-\mu_j))}{\sum_{j=1}^C \exp\left(-\frac{1}{2}(x_i-\mu_j)^T(x_i-\mu_j)\right)}(x_i-\mu_j)=0\\ \Leftrightarrow \sum_{i=1}^n \gamma_j(x_i)(x_i-\mu_j)=0\\ 其中\gamma_j(x_i)=\frac{\exp(-\frac12(x_i-\mu_j)^T(x_i-\mu_j))}{\sum_{j=1}^C \exp\left(-\frac{1}{2}(x_i-\mu_j)^T(x_i-\mu_j)\right)}\qquad(\triangledown)
i=1∑n∑j=1Cexp(−21(xi−μj)T(xi−μj))exp(−21(xi−μj)T(xi−μj))(xi−μj)=0⇔i=1∑nγj(xi)(xi−μj)=0其中γj(xi)=∑j=1Cexp(−21(xi−μj)T(xi−μj))exp(−21(xi−μj)T(xi−μj))(▽)
K-Means算法等价于使用近似的EM算法
-
在E步骤中近似计算得到 γ j ( x i ) \gamma_j(x_i) γj(xi)。近似规则为
γ j ( x i ) = { 1 , i f j = arg max j ( − 1 2 ( x i − μ j ) T ( x i − μ j ) ) 0 , o t h e r \gamma_j(x_i)=\left\{\begin{matrix}1 & ,&if\ j=\arg\max_j(-\frac12(x_i-\mu_j)^T(x_i-\mu_j))\\0&,&other\end{matrix}\right. γj(xi)={10,,if j=argmaxj(−21(xi−μj)T(xi−μj))other
即为每个 x i x_i xi分配一个最近高斯类。 -
在M步骤中,将近似的 γ j ( x i ) \gamma_j(x_i) γj(xi)代入 ( ▽ ) (\triangledown) (▽)式,可以得到 μ j = ∑ i = 1 n γ j ( x i ) x i ∑ i = 1 n γ j ( x i ) \mu_j = \frac{\sum_{i=1}^n\gamma_j(x_i)x_i}{\sum_{i=1}^n\gamma_j(x_i)} μj=∑i=1nγj(xi)∑i=1nγj(xi)xi,即更新 μ j \mu_j μj为属于 j j j类别的样本的均值。
计算步骤:
- 随机选择K个类中心。
- 将每个样本分配到离其最近的类中心。
- 更新类中心为上一步分配到该类的样本的均值。
影响聚类性能的因素:
- 数据本身的分布,如果数据分布不符合高斯特性,那么分类效果差。
- 不同类别数据的样本数量的差距,由于K-Means是GMM的一个简化,其假设了GMM中每个高斯项前的系数相同,所以当样本类别数量不均衡时效果差。
- 离群点的存在会对计算样本的均值造成影响。