外观
KMeans 与高斯混合模型
KMeans vs. Gaussian Mixture Models
我喜欢把高斯混合模型(Gaussian Mixture Model,GMM)看作 KMeans 的一个更广义的版本,它弥补了 KMeans 一些众所周知的局限。

首先,KMeans 只能产生球状的簇。例如,如下图所示,即使数据中存在非圆形的簇,它依然会产生圆形的簇。
此外,它执行的是硬分配(hard assignment)。每个数据点属于每个簇并没有概率估计。

最后,它在把数据点分配给簇时只依赖基于距离的度量。
为了更好地理解这一点,考虑二维空间中的两个簇——A 和 B。簇 A 的散布程度比 B 更大。

现在考虑一条位于 A 和 B 质心正中间位置的直线。

尽管 A 的散布程度更大,但即使一个数据点只在中线稍偏右一点,它也会被分配到簇 B。

然而理想情况下,簇 A 本应拥有更大的影响范围。
这些局限常常使 KMeans 成为聚类的非理想之选。在这方面,高斯混合模型往往是更优的算法。顾名思义,它们可以对由多个高斯分布混合而成的数据集进行聚类。它们可以被看作 KMeans 的一个更灵活的双胞胎。

主要的区别在于,KMeans 学习的是质心,而高斯混合模型学习的是一个分布。例如,在二维空间中,KMeans 只能创建圆形的簇,而 GMM 可以创建椭圆形的簇。
GMM 相对 KMeans 的有效性从下图中可以明显看出。

- KMeans 只依赖距离,忽略了每个簇的分布。
- GMM 学习分布,从而产生更好的聚类。