码迷,mamicode.com
首页 > 其他好文 > 详细

K-means的缺点(优化不仅仅是最小化误差)

时间:2015-05-27 20:57:28      阅读:1676      评论:0      收藏:0      [点我收藏+]

标签:

K-means的缺点(优化不仅仅是最小化误差)

 #转载时,请注明英文原作David Robinson,译者Ding Chao。#

我最近遇到一个交叉验证的问题,我认为这个给我提供了一个很好的机会去用“R”和“ggplot2”探索下K-means算法的一些基本假设。

K-means方法广泛用于聚类分析。可是在我看来,这个算法不需要任何假设啊,也就是说,给我一个数据集和一个预先指定的聚类数目k,然后我就可以应用这个算法去最小化SSE(误差平方和)就行了嘛。

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

我阅读了一些关于K-means缺点的材料,他们大多指出如下几点:

  • K-means每个属性(变量)的分布方差是球形的。
  • 所有的变量有同样的方差。
  • 对于所有的的聚类来说先验概率相等,也就是说,每一类有大致相等的观测数量。如果以上3个任何一个被触犯K-means就会失效。

我不太能理解这些观点后面的逻辑。我认为K-means本质上是不该有假设的,它就最小化SSE而已,一下子还真看不出来最小化SSE和这3条有什么联系。

我们将考虑假设中的两个,我们来看看如果这个假设被打破这个算法会怎么样。我们贴上2维数据,因为这个更直观些。(感谢“curse of dimensionality”, 增加额外的维度会让这个问题变得更严重)。我们将用统计语言R,全代码在这里

分歧前奏:安斯库姆四重奏

首先,来个类似的。想象有人讨论下面这个:

我读了一些关于线性回归缺点的材料。但是所有的线性回归都是在做基于预测(曲)线的SSE最小化问题。这是一个优化问题,不关乎曲线的形状或者残差值分布。因此,线性回归不需要假设。

嗯,是的,线性回归的工作原理是减少残差平方的总和。但是,这本身并不是回归的目标:我们所试图做的是画一条线,一个可靠的、无偏置的Y-X预测线。高斯 – 马尔科夫定理告诉我们,尽量减少SSE就会达到目标 – 但这定理依赖于一些非常具体的假设。如果这些假设被打破,你仍然可以最小化SSE ,但它可能无任何效果。因为你可以试想一下,比如说说:“你脚推踏板开车。该踏板一直可以被推,不管有多少汽油在汽油罐里。因此,即使油箱是空的,你仍然可以推踏板,驾驶汽车“ 。

但是,说起来很轻松。让我们来看看这冰冷的数据。实际上就是人工数据.

技术分享

 

这是我最喜欢的人造数据:安斯库姆四重奏。于1973年由统计学家Francis Anscombe提出。这个能证明盲目相信统计学方法是多么愚蠢的。每个数据集有同样的回归斜率、截距、p-值 和 $R^2$-而且可以瞟一下发现,里面只有 对于线性回归来说是正确的。在 II 它表现出了错误的形状, 在 III 它因为一个离群点弯了形状,在 IV 压根就没有恰当的趋势!

有人会说,“线性回归在这些例子里依旧有效果,因为它在最小化残差值的平方和“。多无聊。。线性回归做了一个线,但是没意义,有啥用?

所以,我们可以发现一个常理的优化可以被执行但是并不意味着达到了预先的目标。

如果打破第一个假设:非球面数据

你说k-means算法在非球面聚类上表现的很好?非球面聚类。。像这样?

技术分享

 

也许这不是你期待样子,但它构建地完全合理。看着这个图像,我们人类一眼就认出两个群集。因此,让我们来看看K-means做的咋样:分配不同颜色:

技术分享

你可能会说:“这不是一个公平的例子…没有聚类方法能正确找到这样怪异的cluster。 ”事实并非如此!尝试下single linkagehierachical clustering

技术分享

看到了吧!这是因为single-linkage hierarchical clustering对这个数据集做了正确的假设。 (在很多其他的情形下他会失败) 。

你可能会说:“这是一个单一的、极端的、病态的情况。 ” No!例如,可以使外组半圆,而不是一个圈,你会看到k均值仍然如此可怕的(hierarchical clustering仍然做得很好) 。我能想到很多其他情况下,不仅仅是二维的情况。当你集群是16维数据,有各种可能出现的病症。

最后,我要指出, K-means仍然是可用的 !如果您将您的数据转化为极坐标,聚类会有效哦:

技术分享

这就是为什么了解基本方法的假设是至关重要的:它不只是告诉你什么时候的方法也有缺点,它会告诉你如何解决这些问题。

 大小不均匀的集群

如果群集有不太均匀的分部,也能打破K-means聚类?好了,可以考虑这套集群,大小20 , 100 , 500。我从多元高斯函数生成的每个集:

技术分享

这看起来像K-means或许可以找到这些集群,对不对?所以让我们试试K-means:

技术分享

哎哟!这里发生的事情是有点微妙。在寻求最大限度地减少内集平方和, K-means算法提供了更多的“权重”给较大的集群。在实践中,要么小群远离任何中心,否则大群就像黑洞,会更多的吞噬小群成员。

如果你试试看这些例子,你会看到,你可以构建k-means构建的一些更感概的场景。

结论:世上没有免费的午餐

对不同的案例下的算法,我可以建造一些让这些算法失效的情形。线性回归假定你的数据沿着直线 – 但如果它遵循一个正弦波呢? t检验假设每个样本来自正态分布:如果你异常抛出个离群值呢?任何梯度上升算法可以得到被困在局部最大值,而任何监督分类可以被过度拟合。

这是什么意思?这意味着,”假设“是你力量的来源!当Netflix推荐给你电影,它是在假设,如果你喜欢一部电影,你会喜欢那些相似的(反之亦然)。难道可以认为:“他只要在最小化误差,算法仍然是有效的”?如果不对用户的口味做出合理的假设,你就不能做出推荐。所以,你也不能用好任何算法在你没有对你的集合数据做出自然假设。

所以,有时候不要只是知道这些缺点。你要认识他们,这样他们就可以告知你如何选择算法。了解他们,你可以知道如何调整你的算法,并且如何转换数据来解决这些问题。

英语原文:http://varianceexplained.org/r/kmeans-free-lunch/

翻译:Ding Chao.

K-means的缺点(优化不仅仅是最小化误差)

标签:

原文地址:http://www.cnblogs.com/yymn/p/4534209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!