这是一个很大的问题-这是一个展示如何检查任何统计方法的缺点和假设的机会。即:组成一些数据,然后尝试算法!
我们将考虑您的两个假设,看看这些假设被打破时,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向您推荐电影时,假设您喜欢一部电影,就会喜欢类似的电影(反之亦然)。想象一个世界,事实并非如此,您的品味完全随机地散布在各种类型,演员和导演之间。他们的推荐算法将彻底失败。说“嗯,它仍在最小化一些预期的平方误差,所以算法仍在工作”是否有意义?如果不对用户的品味做出一些假设,就无法制定推荐算法,就像不对那些集群的性质做出一些假设就不能制定聚类算法一样。
因此,不要仅仅接受这些缺点。了解它们,以便它们可以告知您选择算法。了解它们,因此您可以调整算法并转换数据以解决它们。并爱他们,因为如果您的模型永远不会出错,那就意味着它永远不会正确。