k-means 的优缺点

K-means 在许多机器学习环境中都很有用, 一些明显的弱点

k-means 的优势

实现起来相对简单。

可扩容到大型数据集。

始终会收敛。

允许形心位置温启动。

顺畅地适应新样本。

可以泛化到不同级别的集群 形状和大小,例如椭圆簇。

泛化 k-means

简单地实现 k-means 可能会难以处理大量 不同的密度和尺寸图 1 的左侧显示了集群 而右侧显示的是 k-means 提出的聚类。

两个并排的图表。第一张图片显示了一个包含比较明显聚类的数据集。第二组显示的是运行 k-means 后为奇数组样本的样本。
图 1:未广义的 k-means 示例。

为了在如图 1 所示的不平衡集群上获得更好的性能, 您可以泛化,也就是调整 k-means。图 2 显示了三种不同的 具有两种不同泛化的聚类。第一个数据集显示了 无泛化的 k-means,而第二和第三个允许聚类 不尽相同

三个图,显示了未泛化的 k-means 和 k-means
       K-means 允许不同的宽度,则 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 在区分 随着数据维度的增加而变化。这称为 维度的诅咒

三个曲线图,显示样本之间距离的标准差如何随维度数量的增加而减少
图 3:维度的诅咒演示。每个曲线图显示的是 200 个随机点之间的成对距离。

您可以通过光谱聚类来避免这种性能下降, 这会为算法添加预聚类步骤。为了执行光谱 聚类:

  1. 使用 PCA 来降低特征数据的维度。
  2. 将所有数据点投影到低维子空间中。
  3. 使用您选择的算法对此子空间中的数据进行聚类。

请参阅关于光谱的教程 由乌尔丽克·冯·卢克斯堡 (Ulrike von Luxburg) 创作的聚类,关于光谱的更多信息 集群模型。