K-means 在许多机器学习环境中都很有用, 一些明显的弱点
k-means 的优势
实现起来相对简单。
可扩容到大型数据集。
始终会收敛。
允许形心位置温启动。
顺畅地适应新样本。
可以泛化到不同级别的集群 形状和大小,例如椭圆簇。
泛化 k-means
简单地实现 k-means 可能会难以处理大量 不同的密度和尺寸图 1 的左侧显示了集群 而右侧显示的是 k-means 提出的聚类。
为了在如图 1 所示的不平衡集群上获得更好的性能, 您可以泛化,也就是调整 k-means。图 2 显示了三种不同的 具有两种不同泛化的聚类。第一个数据集显示了 无泛化的 k-means,而第二和第三个允许聚类 不尽相同
本课程不介绍如何泛化 k-means, 请参阅聚类 - k-means 高斯混合 模型 作者:卡内基梅隆大学的 Carlos Guestrin。
k-means 的缺点
必须手动选择\(k\) 。
结果取决于初始值。
对于低 \(k\),您可以通过运行 k-means 数次 使用不同的初始值并从中选出最佳结果。为 \(k\) 则需要使用 k-means 种子,以选择更好的初始值 形心有关 k-means 种子的完整讨论,请参阅 “比较 K-means 聚类的高效初始化方法的研究 算法”,作者:M.Emre Celebi、Hassan A.Kingravi 和 Patricio A.Vela。
难以对不同大小和 也就是未泛化处理的密度数据。
难以聚类离群值。
形心可以由离群值拖动,或者离群值可能有自己的聚类 而不是被忽略。考虑先移除或裁剪离群值, 集群模型。
难以根据维度数量进行缩放。
随着数据中维度数量的增加,基于距离的相似度 会在任意给定样本之间收敛到一个常量值。减少 来训练机器学习模型, PCA 或者使用光谱聚类来修改聚类 算法。
维度和光谱聚类的诅咒
在这三个图表中,请注意随着维度的增加,标准差 与样本之间的平均距离相比, 示例。这个 因此 k-means 在区分 随着数据维度的增加而变化。这称为 维度的诅咒。
您可以通过光谱聚类来避免这种性能下降, 这会为算法添加预聚类步骤。为了执行光谱 聚类:
- 使用 PCA 来降低特征数据的维度。
- 将所有数据点投影到低维子空间中。
- 使用您选择的算法对此子空间中的数据进行聚类。
请参阅关于光谱的教程 由乌尔丽克·冯·卢克斯堡 (Ulrike von Luxburg) 创作的聚类,关于光谱的更多信息 集群模型。