如何理解K均值的弊端


365

K均值是聚类分析中广泛使用的方法。以我的理解,该方法不需要任何假设,即给我一个数据集和一个预先指定的聚类数k,而我只是应用了这种算法,该算法将平方误差之和(SSE)最小化,聚类内平方错误。

因此,k-means本质上是一个优化问题。

我阅读了一些有关k均值缺点的材料。他们大多数说:

  • k-均值假设每个属性(变量)的分布方差是球形的;
  • 所有变量具有相同的方差;
  • 所有k个聚类的先验概率是相同的,即每个聚类具有大约相等数量的观察值;

如果违反了这三个假设中的任何一个,则k均值将失败。

我不明白这句话背后的逻辑。我认为k-means方法基本上不做任何假设,只是将SSE最小化,因此我看不到将SSE最小化与这3个“假设”之间的联系。


49
我要说的是集群的数量已经是一个假设。
njzk2

30
k均值的主要假设是:1.有 k个簇。2. SSE是最小化的正确目标。3.所有群集都具有相同的 SSE。4.所有变量对于每个集群都具有相同的重要性。这些都是很强的假设……
Anony-Mousse 2015年

2
对于第二个问题(发布为答案,然后删除):如果您想将k-means理解为类似于线性回归的优化问题,请将其理解为量化。它尝试使用实例查找数据的最小二乘近似。即,如果您实际上最近的质心替换了每个点。k
Anony-Mousse 2015年

2
@ Anony-Mousse,我阅读了一些材料,然后提出了以下想法:表示作为统计模型(而不是优化方法)假设存在k个聚类,并且数据的分散纯粹是由于正态分布方差相等的随机噪声。这类似于简单线性回归模型的假设。然后,通过某种形式的高斯-马尔可夫定理(我相信我还没有找到论文),均值将为您假设我们为数据假设的潜在k聚类的均值提供一致的估计量。k kk
KevinKim 2015年

1
我在下面的数据集答案中添加了一个说明,其中有人可能假设k均值确实很好用(所有相同形状的簇),但仍然陷入局部极小值;甚至1000次迭代都找不到最佳结果。
Anony-Mousse,2015年

Answers:


273

尽管我非常喜欢David Robinson的答案,但这里还有一些对k均值的批评。

集群非集群数据

在统一数据上运行k-means,您仍然会得到簇!它不会告诉您数据何时不会聚集,并且可以通过这种方式使您的研究陷入僵局。

统一数据的K均值

规模敏感

重新缩放数据集将完全改变结果。虽然这本身还不错,但是没有意识到您必须花更多的精力来扩展数据是不好的。缩放因子是k均值中的额外隐藏参数,“默认”为1,因此很容易被忽略,但会产生重大影响(当然,这也适用于许多其他算法)。d

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

另请注意,按比例缩放每个轴以具有单位方差只是一种试探法。这不能确保k均值有效。缩放取决于数据集的含义。而且,如果您有多个集群,那么您将希望每个集群(独立地)在每个变量中也具有相同的方差。

这是k均值无法聚类的数据集的经典反例。两个轴在每个群集中都是iid,因此在一维中完成此操作就足够了。但是聚类具有变化的方差,因此k均值会错误地拆分它们。

K均值无法对该数据集进行聚类

我不认为您的观点涵盖了k均值的反例:

  • 所有的簇都是球形的(高斯)。
  • 所有轴具有相同的分布,因此具有方差。
  • 两个群集每个都有500个元素。

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

即使是完美的数据集,也可能陷入局部最小值

以下是在经典A3数据集上进行的10次k均值测试中的最佳结果。这是为k均值设计的综合数据集。50个簇,每个簇呈高斯形状,合理地分开。但是,仅使用k-means ++和100次迭代,我确实获得了预期的结果...(下面为常规k-means的10次迭代)。

A3数据集上的k均值

您将在此数据集中迅速找到许多聚类,其中k均值未能找到正确的结构。例如,在右下角,群集分为三个部分。但是没有办法,k均值会将这些质心之一移动到数据集的另一个不同的位置-它被困在一个局部最小值中(这已经是10次​​运行中最好的!)

在此数据集中有许多这样的局部最小值。很多时候,当您从同一个群集中获取两个样本时,它将被卡在一个最小的位置,该群集将保持拆分状态,而另两个群集将合并。并非总是如此,但非常频繁。因此,您需要进行很多次迭代才能获得幸运的选择。在进行100次k均值迭代后,我仍然算出了6个错误,而对于1000次迭代,我将其归结为4个错误。K-means ++通过加权随机样本的方式,在此数据集上效果更好。

均值是连续的

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

隐藏的假设:值得将 SSE 降至最低

以上答案基本上已经存在,并通过线性回归很好地证明了这一点。在某些用例中,k均值非常有意义。劳埃德(Lloyd)必须解码PCM信号时,他确实知道不同音调的数量,并且最小二乘误差最大程度地减少了解码错误的机会。并且在成像的颜色量化中,当减小调色板时,也可以使颜色误差最小化。但是根据您的数据,平方差的总和是否是有意义的,可最小化的标准?

在上面的反例中,方差值得最小化,因为它取决于集群。取而代之的是,高斯混合模型应适合数据,如下图所示:

高斯混合模型

(但这也不是最终的方法。构造不满足“ k个高斯分布的混合”假设的数据也很容易,例如,通过添加大量背景噪声)

太容易使用不好

总而言之,将k均值放在数据上太容易了,尽管如此却得出结果(这几乎是随机的,但您不会注意到)。我认为最好是有一种方法,如果您不了解自己的数据,该方法可能会失败...

K-均值量化

如果您想了解k均值的理论模型,请考虑将其视为量化方法,而不是聚类算法。

如果将每个对象替换为其最近的质心,则k均值的目标(使平方误差最小)是一个合理的选择。(如果您检查组原始数据恕我直言,这将变得毫无意义。)

有很好的用例。想到了劳埃德(Lloyd)的原始PCM用例,或例如颜色量化(Wikipedia)。如果要将图像缩小为k色,则确实要用最接近的质心替换每个像素。然后最小化平方的颜色偏差确实可以仅使用种颜色来测量图像逼近中的L2最优性。k

此量化可能与线性回归示例非常相似。线性回归可以找到最佳的线性模型。k均值发现(有时)将多维数据集的k值最好地减少。其中“最佳”是最小平方误差。

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


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


17
(请注意-谈论“上方答案”可能不是一个好主意,因为读者看到的答案顺序可能是可变的。例如,如果他们将显示顺序设置为“有效”,那么您的答案就是实际上就是上面的一个!)
Silverfish

1
@ Anony-Mousse这个答案真的很棒。但是直到现在,我还是忘了说“ k-means在某些情况下会工作而在其他情况下会失败”通常意味着什么。在这种情况下,“工作”或“失败”是什么意思?“工作”是否意味着k均值生成的解将在视觉上“看起来合理”?这有点含糊。或“工作”是指k-means提供的解决方案与“标准解决方案”相同,即,我们预先生成数据集并使用k-means。在这种情况下,“工作”是有意义的,但实际上,数据不是通过某种分布预先生成的。
KevinKim

通常,人们指的是一些基本事实,即如何生成数据或隐藏在算法中的某些标签。与生成的数据进行比较将倾向于使用算法优化用于生成的模型(例如GMM和高斯的k均值)。甚至对于真实和标记的数据,此评估也要重现已知结果。当您考虑探索/知识发现方面时,您想在此学习新知识。但这就是我们所拥有的。
Anony-Mousse 2015年

如果将调整为先验确定的有效存在簇的数量,在A3数据集上会更好吗?k
TMOTTM

@TMOTTM这是先验知识选择的k。10个最佳组合中的所有都与先验选择的“正确” k一起运行。
Anony-Mousse

450

这是一个很大的问题-这是一个展示如何检查任何统计方法的缺点和假设的机会。即:组成一些数据,然后尝试算法!

我们将考虑您的两个假设,看看这些假设被打破时,k-means算法会发生什么。我们将坚持二维数据,因为它很容易可视化。(由于维数诅咒,增加维数可能会使这些问题更加严重,而不是更少)。我们将使用统计编程语言R:您可以在此处找到完整的代码(以及此处的博客形式的帖子)。

转移:安斯科姆四重奏

首先,比喻。想象有人争论了以下几点:

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

好吧,是的,线性回归通过最小化残差平方和而起作用。但这本身并不是回归的目标:我们试图做的是画一条线,该线基于x成为y的可靠,无偏预测量。在高斯-马尔科夫定理告诉我们,尽量减少上证所实现了这一目标-但定理建立在一些非常具体的假设。如果这些假设被打破,你仍然可以尽量减少SSE,但它可能不会任何东西。想象一下,“您通过踩踏板来驾驶汽车:驾驶本质上是一个'踩踏板的过程'。” 无论油箱中有多少汽油,踏板都可以被推动。因此,即使油箱中的油量是空的,您仍然可以推动踏板并驾驶汽车。”

但是谈话很便宜。让我们看一下冷硬数据。或实际上是虚构数据。

在此处输入图片说明

实际上,这是我最喜欢的虚构数据:Anscombe的Quartet。由统计学家弗朗西斯·安斯科姆(Francis Anscombe)于1973年创立,这种令人愉悦的结合说明了盲目地信任统计方法的愚蠢行为。每个数据集都具有相同的线性回归斜率,截距,p值和但一眼就能看出,只有其中一个I适用于线性回归。在II中,它表示错误的形状;在III中,它被单个异常值所歪斜;而在IV中,则根本没有趋势!R2

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

因此,现在我们看到,仅仅因为可以执行优化并不意味着我们已经实现了目标。而且,我们看到组成数据并进行可视化是检查模型假设的好方法。坚持这种直觉,我们在一分钟内将需要它。

坏的假设:非球面数据

您认为k-means算法在非球形簇上可以正常工作。像...这些非球形的星团?

在此处输入图片说明

也许这不是您所期望的,但这是构建集群的一种完全合理的方法。观察这张图片,我们人类会立即认识到两个自然的点组-不会误解它们。因此,让我们看一下k均值的工作方式:分配以彩色显示,估算中心以X表示。

在此处输入图片说明

好吧,是不对的。K-means试图将一个方形钉钉入一个圆孔中 -试图找到周围有整洁球体的漂亮中心-但它失败了。是的,它仍在使簇内平方和最小化,但是就像在上面Anscombe的四重奏中一样,这是Pyrrhic的胜利!

您可能会说:“这不是一个公平的例子。没有任何一种聚类方法可以正确地找到那些奇怪的聚类。” 不对!尝试单链接 层次聚类

在此处输入图片说明

搞定了!这是因为单链接层次聚类为该数据集做出了正确的假设。(在其他情况下,它也会失败)。

您可能会说:“那是一个极端的病态案例。” 但这不是!例如,您可以将外部组设为半圆形而不是圆形,并且您会看到k均值仍然非常出色(层次聚类仍然很不错)。我可以轻松地提出其他有问题的情况,而这只是二维的。当您对16维数据进行聚类时,可能会出现各种病理情况。

最后,我要指出,k均值仍然是可替代的!如果首先将数据转换为极坐标,则聚类现在可以工作:

在此处输入图片说明

这就是为什么理解方法基础的假设至关重要的原因:它不仅告诉您方法何时有缺点,还告诉您如何解决它们。

坏的假设:集群大小不均

如果聚类的点数不均匀怎么办-是否也会破坏k均值聚类?好吧,考虑一下这组集群,大小分别为20、100、500。我是根据多元高斯生成的:

在此处输入图片说明

看起来k均值可能会找到这些簇,对吗?一切似乎都生成了整洁的组。因此,让我们尝试k-均值:

在此处输入图片说明

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

如果稍微研究一下这些示例(此处为R代码!),您会发现可以构造更多的场景,其中k均值会令人尴尬地犯错。

结论:没有免费的午餐

Wolpert和Macready正式定义了一种数学民俗的迷人结构,称为“无免费午餐定理”。这可能是我在机器学习哲学中最喜欢的定理,并且我很乐意提出这个定理(我提过我喜欢这个问题吗?)这个基本思想(不严格地)描述为:“在所有可能情况下取平均值,每种算法的效果都一样好。”

听起来违反直觉?考虑到对于每种算法有效的情况,我都可以构造出一种严重失败的情况。线性回归假设您的数据沿直线分布,但是如果它跟随正弦波会怎样?T检验假设每个样本都来自正态分布:如果抛出异常值怎么办?任何梯度上升算法都可能陷入局部最大值,并且任何监督分类都可能被诱使过度拟合。

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

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



50
为这个热情的答案+1。我特别喜欢极地转换的例子,那些聪明的窍门永远不会使我的数学无知的大脑惊奇。
莫肯

20
+ 1,这是一个绝对漂亮的答案,可以很好地说明假设如何分解而不会陷入分析细节中。
Louis Cialdella

15
+1人们经常向我抱怨的一件常见事情是,理论上的事情在实践中不起作用。但是当我问“您的数据是否符合模型的假设吗?” 我只是从他们的脸上茫然。您的回答,尤其是最后一节,让我感到非常高兴。
TenaliRaman

9
+1哇,我已经待了一段时间,但我想我从未见过在一天之内获得50份以上投票的答案。这是一个令人印象深刻的成就。
变形虫

7
正如我所看到的,极坐标变换在这里主要是作为内核聚类技术的第一个且没有术语的示例,在这种情况下,这种预变换就是如何使线性学习方法起作用。
Mikael Vejdemo-Johansson 2015年

7

我想补充一下@DavidRobinson的答案,即聚类到最小总聚类方差实际上是组合优化问题,其中k-Means只是一种技术-鉴于后者的“ 一发不可收拾”,局部“最速下降”的性质,也很糟糕。同样,从一开始就注定要设法通过某种方式(但很快!)来通过某种方式(但很快!)来显着改善“裸露的骨骼” k均值,因为注定会影响(最终!)最终的簇,因此它的价值实际计算最佳值之前,先 “知道”什么是最佳值。

但是,作为大多数优化问题,它可能仍然适用于某些严肃的优化技术。其中之一非常适合问题的结构(如NFL要求!),并且肯定会在结果中显示出来。我不想在这里做任何广告(这确实是-正确的是-违反礼节),因此,如果您有兴趣,请在这里阅读并做出自己的判断。

话虽如此,我同意@ttnphns的观点,即k-Means当然不能确定高斯混合体-这两个问题的成本函数完全不同。事实证明,找到最佳拟合(就给定数据的模型的概率而言)的高斯混合也是一个组合优化问题-并且存在一种严谨的优化技术。再说一次,没有广告:您可以在这里得出自己的结论-我只是说,在那里讨论的算法确实可以正确地识别聚类,例如@DavidRobinson帖子中的最后一个图像。它甚至正确地(即以数学上定义明确的方式)解决了常年存在的离群值问题,即不属于任何聚类的数据点,因为它们只是完全随机的(例如,众所周知,它们使k-Means完全脱轨)。这是通过一个额外的,做均匀分布与高斯......和灿烂的竞争结果是,在均匀分布的数据,它确实报告没有在那里(我从来没有看到其他地方)。

根据NFL,现在很明显,正如您正确指出的那样,即使具有异常值标识的全局最优高斯混合也确实依赖于先前的假设-即数据的确是正态分布的。幸运的是,由于有了大数定律,许多自然现象确实符合该假设。

免责声明:我深表歉意,写了以上两篇论文,以及他们讨论的算法。

PS:我曾经在一次会议上遇到Macready-一个非常聪明的人!


这应该是对这个问题的答案。
Michael Chernick

3
Michael,这实际上是一个答案,k-Means倾向于解决实际上是组合优化问题的问题……但它绝对不会(以任何方式都不认真)!而且,k-Means假定(通过设计)呈球形分布,它们是如此la脚,以至于会让您哭泣(将尺寸之一乘以2,得到的东西完全不同,无论您使用哪种“智能”种子!)。即使在k均值中,异常值(存在于我见过的任何现实数据中!)中的离群值问题也根本没有得到解决,即使它们完全破坏了k均值可能具有的“严重”聚类的前提。
伊曼纽尔·法尔肯纳尔

1
@EmanuelFalkenauer,欢迎来到站点。我为您的回答投了(+1),但这有点自命不凡。K-mean怎能假装某物不属于人类?对于简单/快速的方法,它可以完成它的工作,也可以做到不错。
ttnphns

@ttnphns:感谢您的欢迎和支持!当然,k-Means不会伪装任何东西(这只是一段代码-我的坏人!),但是推广它的人却可以-就像OP所发现的那样。我同意您所指出的那样,这是一种“简单/快速”的方法-但最大的麻烦是,依靠除最简单数据以外的任何数据输出都接近于自杀:它不仅做出了不符合大多数情况的假设的时间,但即使是这样,它也做得很糟糕。您只是无法解决下降最快的组合问题。;-)
Emanuel Falkenauer

6

从逻辑上讲,K-means的缺点是:

  • 需要集群的线性可分离性
  • 需要指定集群数
  • 算法:即使有很多点或维,但初始化良好时,Loyds过程也不会收敛到真正的全局最大值

但是K均值比我们通常认为的要好。在针对一百万个文本的现实文本分类中,使用其他聚类方法(光谱,密度...)和LDA对它进行了测试后,我对此变得非常热情:例如,K均值的准确度远优于LDA(88%vs 59%)。其他一些聚类方法也不错,但是K-means接近顶部...并且在复杂性方面更便宜。

我从未读过关于在各种问题上普遍更好的聚类方法。我也没有说过K-means普遍更好,只是据我所知,没有普遍的集群超级英雄。很多文章,很多方法,并不是真正的革命(以我个人对其中一些测试的有限经验)。

K均值的逻辑缺陷通常仅显而易见的主要原因是,在2D平面中对点进行聚类是您在机器学习中很少做的事情。几何直觉中的许多事情在2D,3D中是正确的...在相当高的维度或抽象向量空间中不相关(例如单词袋,变量向量...)

线性可分离性: 您几乎不必处理现实生活中的数据中的圆形簇。最好假设它们在这些情况下不存在。允许您的算法搜索它们将允许它在噪声中找到奇数个圆形簇。K均值中的线性假设使其通常更可靠。

簇数: 您通常不会希望看到真正理想的簇数。例如,对于文本分类,可能有100个类别,105、110 ...这都是相当主观的。指定群集数等同于指定全局粒度。无论如何,所有群集方法都需要粒度规范。

10a lot

但是所有聚类算法都有这样的局限性。例如,在光谱聚类中:您无法找到真实的特征向量,只能找到近似值。

在相同的计算时间下,经过充分优化的LDA库的性能不如我们自制(未优化优化)的K均值。从那时起,我的想法有所不同。


1

为了理解K-means的缺点,我想考虑它背后的模型是什么。

KK

Kσ2Iσ2Kσ20

那么,这如何告诉我们有关K均值的弊端?

  1. K均值导致看起来是多元高斯的聚类。
  2. 由于变量之间的方差相同,因此K均值会导致簇看起来像球形。
  3. K
  4. K均值倾向于规模相等的群体。

K-means实际上是一个限制性算法。优点是,根据上述假设,您可以非常快速地执行算法。但是,如果群集性能是您最关心的问题,那么在实际情况下,K均值通常会过于严格。


2
我不能完全同意。声称K均值是高斯混合的一个特例是遥不可及的。K均值不采用特定的分布类型,例如正态分布(因此不是概率基础)。它确实假定了不重叠的群集(即没有“混合”)。它假设球形簇,但更准确地说是假设Voronoi细胞的凸多边形。也许说K-means不对任何事物进行“建模”是正确的,它没有直接引用数据生成过程。K均值“趋于[按点数]组的大小相等”-不一定。
ttnphns

4
@ttnphns可以证明,k均值确实是GMM的特例:en.wikipedia.org/wiki/K-means_clustering#Gaussian_Mixture_Model
TrynnaDoStat

It can be shown that。通过充分的努力,任何事情都可以超出理性地“显示”为亲属关系。
ttnphns

2
@ttnphns不,不能用数学方式显示所有内容。
TrynnaDoStat '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.