翻译:如何理解K-means的缺点

K-means的缺点 - 问题

K-means 是聚类分析中广泛使用的方法。在我的理解中,这种方法不需要任何假设,即给我一个数据集和一个预先指定的簇数,k,我只是应用这个算法来最小化平方误差总和(SSE),簇内平方错误。

所以k-means本质上是一个优化问题。

我阅读了一些关于 k-means 缺点的材料。他们中的大多数人说:

  1. k-means 假设每个属性(变量)的分布方差是球形的;
  2. 所有变量都具有相同的方差;
  3. 所有 k 个簇的先验概率是相同的,即每个簇具有大致相等的观测数;

如果违反这 3 个假设中的任何一个,则 k-means 将失败。

我无法理解这句话背后的逻辑。我认为 k-means 方法基本上没有做任何假设,它只是最小化了 SSE,所以我看不到最小化 SSE 和这 3 个“假设”之间的联系。

1. 聚类非聚类数据

在统一数据上运行 k-means,你仍然会得到集群!它不会告诉您数据何时没有聚类,并且可以通过这种方式使您的研究陷入死胡同。
翻译:如何理解K-means的缺点

2. 对规模敏感

重新调整数据集将完全改变结果。虽然这本身并不坏,但没有意识到您必须花费额外的注意力来扩展数据是不好的。缩放因子是 k-means 中额外的 d d d 隐藏参数,“默认”为 1,因此很容易被忽视,但具有重大影响(当然这也适用于许多其他算法)。

这可能就是您所说的“所有变量都具有相同的方差”。除了理想情况下,您还可以在适当的时候考虑非线性缩放。

另请注意,缩放每个轴以具有单位方差只是一种启发式方法。这并不能确保 k-means 有效。缩放取决于数据集的含义。如果您有多个集群,您会希望每个集群(独立地)在每个变量中也具有相同的方差。

这是 k-means无法聚类的数据集的经典反例。每个集群中的两个轴都是 iid,因此在 1 维中执行此操作就足够了。但是这些集群有不同的方差,因此 k-means 错误地分割了它们。
翻译:如何理解K-means的缺点
我不认为你的观点涵盖了 k-means 的这个反例:

  1. 所有簇都是球形的(iid Gaussian)。
  2. 所有轴都具有相同的分布,因此具有相同的方差。
  3. 两个集群各有 500 个元素。

然而,k-means 仍然严重失败(如果我将更大的集群的方差增加到 0.5 以上,情况会变得更糟)但是:失败的不是算法。这是假设,不成立。K-means 运行良好,只是优化了错误的标准。

3. 即使在完美的数据集上,它也可能陷入局部最小值

以下是经典 A3 数据集上 10 次 k 均值运行中最好的一次。这是一个合成数据集,专为 k-means 设计。50 个簇,每个簇都是高斯形状,分离得相当好。然而,只有使用 k-means++ 和 100 次迭代,我才得到了预期的结果…(下面是常规 k-means 的 10 次迭代,以供说明)。
翻译:如何理解K-means的缺点
您会很快在此数据集中找到许多集群,其中 k-means 未能找到正确的结构。例如在右下角,一个集群被分成三个部分。但是没有办法,k-means 会将这些质心之一移动到数据集的一个完全不同的位置——它被困在一个局部最小值(这已经是10 次运行中最好的!)

在这个数据集中有很多这样的局部最小值。很多时候,当你从同一个集群中得到两个样本时,它会卡在这个集群保持分裂的最小值中,而另外两个集群则合并了。不总是,但经常。所以你需要很多次迭代才能有一个幸运的选择。使用 100 次 k-means 迭代,我仍然计算出 6 个错误,并且通过 1000 次迭代,我将其减少到 4 个错误。K-means++ 通过它对随机样本进行加权的方式,在这个数据集上效果更好。

4. 均值是连续的

虽然您可以对二进制数据(或单热编码的分类数据)运行 k-means,但结果将不再是二进制的。所以你确实得到了一个结果,但你最终可能无法解释它,因为它的数据类型与原始数据不同。

5. 隐藏假设:SSE值得最小化

这基本上已经出现在上面的答案中,用线性回归很好地证明了这一点。在某些用例中,k-means 非常有意义。当 Lloyd 必须解码 PCM 信号时,他确实知道不同音调的数量,并且最小平方误差将解码错误的可能性降至最低。在图像的颜色量化中,您也可以在减少调色板时最大限度地减少颜色误差。但是在您的数据上,偏差平方和是一个有意义的最小化标准吗?

在上面的反例中,方差不值得最小化,因为它取决于集群。相反,高斯混合模型应该适合数据,如下图所示:
翻译:如何理解K-means的缺点
(但这也不是最终的方法。构造不满足“k 个高斯分布的混合”假设的数据同样容易,例如,通过添加大量背景噪声)

6. 太容易坏了

总而言之,在您的数据上使用 k 均值很容易,但仍然得到结果(这几乎是随机的,但您不会注意到)。我认为如果您不了解您的数据,最好有一种可能会失败的方法…

7. K-means 作为量化

如果您想要 k-means 的理论模型,请将其视为一种量化方法,而不是聚类算法。

如果用最近的质心替换每个对象,k-means 的目标 - 最小化平方误差 - 是一个合理的选择。(恕我直言,如果您检查组原始数据,则意义不大。)

这有很好的用例。我想到了劳埃德的原始 PCM 用例,或者例如颜色量化(*)。如果您想将图像减少到 k 种颜色,您确实希望用最近的质心替换每个像素。最小化的平方颜色偏差然后不使用仅$ $ķ颜色测量图像近似L2最优性。

这种量化可能与线性回归示例非常相似。线性回归找到最好的线性模型。并且 k-means 找到(有时)对多维数据集的k 值的最佳减少。其中“最佳”是最小平方误差。

恕我直言,k-means 是一种很好的量化算法(请参阅本文中的第一张图片 - 如果您想将数据集近似为两点,这是一个合理的选择!)。如果你想像发现结构那样进行聚类分析,那么 k-means 不是最好的选择。当没有集群时,它倾向于集群,并且无法识别您在数据中看到的各种结构。

精美打印:所有图像均使用ELKI生成。数据是使用.xml数据生成格式生成的,但它们非常基础,不值得分享。

8. 转移:安斯科姆四重奏

首先,打个比方。想象一下有人争论以下内容:

我阅读了一些关于线性回归缺点的材料 - 它期望线性趋势,残差呈正态分布,并且没有异常值。但所有线性回归所做的都是最小化预测线的平方误差总和 (SSE)。这是一个优化问题,无论曲线的形状或残差的分布如何,都可以解决。因此,线性回归不需要任何假设即可工作。

嗯,是的,线性回归通过最小化残差平方和来工作。但这本身并不是回归的目标:我们试图做的是绘制一条线,作为基于x的y的可靠、无偏预测器。在高斯-马尔科夫定理告诉我们,尽量减少上证所实现了这一目标-但定理休息一些非常具体的假设。如果这些假设被打破,你仍然可以尽量减少SSE,但它可能不会做任何事物。想象一下,“你通过踩踏板来开车:驾驶本质上是一个‘踩踏板的过程’。” 油箱里有多少油都可以踩油门。所以,即使油箱是空的,您仍然可以踩油门开车。”

但谈话是廉价的。让我们看看冷酷的数据。或者实际上是虚构的数据。
翻译:如何理解K-means的缺点
这实际上是我最喜欢的虚构数据:Anscombe’s Quartet。由统计学家弗朗西斯·安斯科姆 (Francis Anscombe) 于 1973 年创建,这种令人愉快的混合物说明了盲目相信统计方法的愚蠢之处。每个数据集都具有相同的线性回归斜率、截距、p 值和 R 2 R^2 R2-,但乍一看,我们可以看到其中只有一个I适用于线性回归。在II 中它暗示了错误的形状,在III 中它被一个异常值所扭曲——而在IV中显然根本没有趋势!

可以说“线性回归在这些情况下仍然有效,因为它最小化了残差的平方和。” 但这是一场多么惨烈的胜利!线性回归总会画一条线,但如果它是一条毫无意义的线,谁在乎呢?

所以现在我们看到,仅仅因为可以执行优化并不意味着我们正在实现我们的目标。我们看到,编造数据并将其可视化,是检查模型假设的好方法。坚持这种直觉,我们马上就会需要它。

9. 破碎的假设:非球形数据

您认为 k-means 算法可以在非球形集群上正常工作。像这样的非球形星团……这些?
翻译:如何理解K-means的缺点
也许这不是您所期望的 - 但这是构建集群的一种完全合理的方式。看着这张图片,我们人类会立即识别出两组自然点——没有错。那么让我们看看 k-means 是如何做的:分配以颜色显示,估算中心显示为 X。
翻译:如何理解K-means的缺点
嗯,这是不对的。K-means 试图在一个圆孔中安装一个方钉——试图找到周围有整齐球体的漂亮中心——但它失败了。是的,它仍然在最小化簇内平方和——但就像上面 Anscombe 的四重奏一样,这是一场得不偿失的胜利!

您可能会说“这不是一个公平的例子…没有任何聚类方法可以正确地找到如此奇怪的聚类。” 不对!尝试单链接 层次聚类
翻译:如何理解K-means的缺点
搞定了!这是因为单链接层次聚类为此数据集做出了正确的假设。(有一整个其他类的情况下失败)。

你可能会说“这是一个单一的、极端的、病态的案例。” 但事实并非如此!例如,您可以将外部组设为半圆而不是圆,并且您会看到 k-means 仍然表现出色(并且层次聚类仍然表现良好)。我可以很容易地想出其他有问题的情况,这只是二维的。当您对 16 维数据进行聚类时,可能会出现各种病症。

最后,我应该注意到 k-means 仍然可以挽救!如果您首先将数据转换为极坐标,则聚类现在可以工作:
翻译:如何理解K-means的缺点
这就是为什么理解一个方法背后的假设是必不可少的:它不只是告诉你一个方法什么时候有缺点,它告诉你如何修复它们。

10. 破碎的假设:不均匀大小的集群

如果集群的点数是奇数怎么办——这是否也会破坏 k 均值聚类?好吧,考虑一下这组大小为 20、100、500 的集群。我已经从多元高斯中生成了每个集群:
翻译:如何理解K-means的缺点
这看起来 k-means 可能会找到那些集群,对吧?一切似乎都被生成成整洁的群体。所以让我们试试k-means:

翻译:如何理解K-means的缺点
哎哟。这里发生的事情有点微妙。为了最小化集群内的平方和,k-means 算法为更大的集群提供了更多的“权重”。在实践中,这意味着很高兴让那个小集群远离任何中心,而它使用这些中心来“分裂”一个更大的集群。

如果您稍微使用这些示例(此处为 R 代码!),您会发现您可以构建更多场景,其中 k-means 出现令人尴尬的错误。

11. 结论:没有免费午餐

数学民间传说中有一个迷人的结构,由Wolpert 和 Macready正式化,称为“无免费午餐定理”。这可能是我在机器学习哲学中最喜欢的定理,我喜欢任何机会提出它(我有没有提到我喜欢这个问题?)基本思想是这样表述的(不严谨):“当在所有可能的情况下求平均值时,每个算法的表现都一样好。”

听起来违反直觉?考虑到对于算法有效的每种情况,我都可以构建一种它非常失败的情况。线性回归假设您的数据沿着一条线下降 - 但如果它遵循正弦波呢?t 检验假设每个样本都来自正态分布:如果您加入异常值怎么办?任何梯度上升算法都可能陷入局部最大值,并且任何监督分类都可能被欺骗为过度拟合。

这是什么意思?这意味着假设是你的力量的来源!当 Netflix 向您推荐电影时,它假设您喜欢一部电影,就会喜欢类似的电影(反之亦然)。想象一个并非如此的世界,您的品味完全随机,随意散布在各种类型、演员和导演之间。他们的推荐算法会非常失败。说“好吧,它仍在最小化一些预期的平方误差,因此算法仍在工作”是否有意义?如果不对用户的口味做一些假设,你就不能制定推荐算法——就像你不能在不对这些集群的性质做一些假设的情况下制定聚类算法一样。

所以不要只接受这些缺点。了解它们,以便它们可以告知您对算法的选择。了解它们,以便您可以调整算法并转换数据以解决它们。爱他们,因为如果你的模型永远不会错,那就意味着它永远不会是对的。

参考

https://stats.stackexchange.com/questions/133656/how-to-understand-the-drawbacks-of-k-means

上一篇:【学习笔记】2-小例子-动态规划和k-means


下一篇:K-Means例子