为什么k均值聚类算法仅使用欧几里得距离度量?


62

在效率或功能方面是否有特定目的,为什么k-means算法不使用余弦(不)相似度作为距离度量,而只能使用欧几里得范数?通常,当考虑或使用除欧几里得以外的其他距离时,K均值方法会符合并正确吗?

[由@ttnphns添加。这个问题有两个方面。“非欧氏距离”可以涉及两个数据点之间的距离或数据点与聚类中心之间的距离。到目前为止,都尝试了两种方法来解决答案。]


这个问题已经在stackoverflow和此站点上被问过大约10次了。请使用搜索功能。
Anony-Mousse 2014年

3
@ Anony-Mousse:尽管我完全同意您的意见,并且最近在SO上提出了一堆旗帜,但我发现在大多数这些问题上缺少重复结束令人不安。
Nikana Reklawyks

4
这是在搜索该主题时首先出现的页面。
haripkannan

Answers:


62

K-Means过程-一种通常用作聚类方法的矢量量化方法- 根本没有明确使用 成对距离b / w数据点(与允许任意接近度的分层聚类和其他聚类相反)。它等于将点重复分配给最近的质心,从而使用从数据点到质心的欧几里得距离。但是,K-Means 隐式基于成对的欧几里得距离b / w数据点,因为与质心的平方偏差之和等于成对平方的欧几里得距离的总和除以点数。术语“质心”本身来自欧几里得几何学。它是欧氏空间中的多元均值。欧氏空间大约是欧氏距离。非欧几里得距离通常不会跨越欧几里得空间。这就是为什么K-Means仅用于欧几里得距离的原因。

但是,可以用许多替代方法表示两个数据点之间的欧氏距离b / w 。例如,它与余弦或标量积b / w点紧密相关。如果您具有余弦,协方差或相关性,则始终可以(1)将其转换为(平方)欧几里得距离,然后(2)为该欧几里得距离矩阵创建数据(通过主坐标或其他形式的度量多维缩放)到(3)将那些数据输入到K均值聚类。因此,可以 使K-Means与成对的余弦等“协同工作”。实际上,存在K-Means聚类的此类实现。也可以看看 关于“距离矩阵的K均值”实现。

当然,可以对K-means进行编程,使其直接在成对的欧几里德距离的平方矩阵上进行计算。但是它将运行缓慢,因此更有效的方法是为该距离矩阵创建数据(将距离转换为标量乘积,依此类推-上一段中概述的过程),然后应用标准K均值过程到那个数据集。

请注意,我正在讨论的主题是数据点之间的欧几里得或非欧几里得的差异是否与K均值兼容。与非核素偏离质心(广义上,中心或准质心)是否可以纳入K均值或修饰的“ K均值” 相关但不完全相同。

参见相关问题K-均值:为什么将WCSS最小化将群集之间的距离最大化?


您能否引用您提到的方法的一些示例文档?
2014年

4
@道格拉斯,请。我说过k均值不使用成对距离。明确指出。它使用到质心的距离。但这自动意味着它任务紧密关联,以优化群集内的成对距离。
ttnphns 2015年

1
@ttnphns:在您编写的字符数中But a Euclidean distance b/w two data points can be represented in a number of alternative ways. For example, it is closely tied with cosine or scalar product b/w the points. If you have cosine, or covariance, or correlation, you can always (1) transform it to (squared) Euclidean distance,您可能写得distance(x,y) = 1 - cosine_sim(x,y)同样容易:或者类似的精简且内容丰富的东西。
stackoverflowuser2010

1
这看起来像是有效和建设性的批评:最好直接在您的帖子中包含信息,而不要依赖链接。而且通常要明确而不是模糊。(CC @stackoverflowuser)
whuber

3
你在争什么 在这种情况下,最好是依靠链接,或者更好地模糊,或者两者兼而有之?又为什么呢
ub

46

另请参阅@ttnphns答案,以获取实际上涉及点式欧几里得距离的k均值的解释。

k均值的构造方法不是基于距离的

K均值使集群内方差最小化。现在,如果您看一下方差的定义,它就等于距中心的欧几里德距离的平方和。(@ttnphns答案是指成对的欧几里德距离!)

k均值的基本思想是使平方误差最小。这里没有“距离”。

为什么使用任意距离是不正确的:因为k均值可能会停止与其他距离函数收敛。收敛的通用证明是这样的:分配步骤均值更新步骤都优化了相同的准则。分配的数量有限。因此,它必须在有限数量的改进后收敛。要将此证明用于其他距离函数,必须显示均值(注意:k- 均值)也能使距离最小。

如果您正在寻找k均值的曼哈顿距离变型,则有k个中值。因为中位数是已知的最佳L1估计量。

如果要使用任意距离函数,请查看k形参(aka:PAM,围绕形参划分)。medoid可使任意距离最小化(因为它被定义为最小距离),并且也仅存在有限数量的可能的medoid 。但是,它比平均值贵得多。


但是在k均值的第一步,每个点都被放置在具有与簇的质心最接近的欧几里德距离的簇中...所以有一个距离度量标准
好奇

@AnonyMousse @ttnphns answer refers to pairwise Euclidean distances!在我的回答的第一段中,我清楚地同时提到 “ SS错误”(直接)和“成对d ^ 2”(隐式)两种解释。
ttnphns 2014年

3
我同意你的回答。请注意,您的运营帐户k-means may stop converging with other distance functions与我的理论相符Non-euclidean distances will generally not span euclidean space
ttnphns 2014年

很好的解释。我从未想过欧几里得距离,也没有意识到这实际上是在最小化平方的凋落总和。
Verena Haunschmid 2014年

我仍然看不到为什么均值会以欧几里得距离和余弦来最小化距离,这并不是证明的一部分
奇怪的是

9

我在这里可能有点学究,但是K-means是为特定算法指定的名称,该算法将标签分配给数据点,以使群集内的差异最小化,并且它不是“通用技术”的名称。

K-means算法已从多个领域独立提出,具有适用于该领域的强大解释。很好地证明,它也是到中心的欧几里得距离。有关K均值的简要历史,请阅读数据聚类:K均值后50年

除了欧几里得以外,还有许多其他使用度量标准的聚类算法。我知道的最一般的情况是使用Bregman发散度进行聚类,其中欧几里得是一个特例。


“除欧几里得之外的指标”我可能要学些些,但总体而言,这些差异不是指标:)
mic

true :); 我可能应该编辑答案。
user1669710 2015年

8

由于这显然是一个规范的问题,因此在这里尚未提及:

Rdφ:RpHdd(x,y)=φ(x)φ(y)H{φ(xi)}。在许多情况下,我们无法显式计算map,但是可以计算内核。并非所有距离度量标准都适合此模型,但许多度量标准都适用。在字符串,图形,图像,概率分布等上定义了此类函数。...φk(x,y)=φ(x),φ(y)H

在这种情况下,在标准的(Lloyd's)k均值算法中,我们可以轻松地将点分配给它们的聚类,但是我们隐式表示了聚类中心(作为希尔伯特空间中输入点的线性组合)。要在输入空间中找到最佳表示,将需要找到Fréchet平均值,这非常昂贵。因此,使用内核轻松获得群集分配,更难获得资源。

以下论文讨论了该算法,并将其与频谱聚类相关联:

I. Dhillon,Y。Guan和B. Kulis。内核k均值,频谱聚类和归一化割。KDD 2005。


我不明白如何在Lloyd算法中使用内核技巧。在我看来,要计算质心(甚至隐式在希尔伯特空间中),我们将需要显式映射φ(x_i)?对于将点分配给群集,我们只需要内核,而对于重新计算质心,就不能只放弃内核,因为质心是分配给该群集的{φ(x_i)}的平均值。我想念什么吗?
user2428107

没错,我们无法明确计算质心。但是我们可以简单地将它们表示为,并计算到点距离为。1nijCiφ(xj)xφ(x)1nijCiφ(xj)2=k(x,x)+1ni2j,jk(xj,xj)2nijk(x,xj)
Dougal

5

我在这里阅读了许多有趣的评论,但我要补充一点,Matlab的k均值“个人”实现支持4个非欧几里德距离(在数据点和聚类中心之间)。我可以看到的关于文档的唯一评论是:

在p维空间中用于最小化的距离度量,指定为由“ Distance”和字符串组成的逗号分隔对。

kmeans对于不同的受支持距离度量,对质心群集的计算方式有所不同。下表总结了可用的距离度量。在公式中,x是观察值(即X的行),c是质心(行向量)。

随后的功能列表cx遵循。因此,考虑到p输入数据的维数,似乎没有预先进行欧几里得嵌入。

顺便说一句,在过去,我一直在使用Matlab的具有相关距离的k均值,它(毫无疑问)做了它应该做的。


2
需要注意的是,支持的非欧几里得距离为cosine(这是归一化输入点上的欧几里得距离),correlation(标准化输入上的欧几里得距离),cityblock(,在这种情况下,使用中位数而不是均值),并且(仅用于二进制输入)。L1hammingcityblock
Dougal

@Dougal,算法中如何包含中位数?它不会将k- 均值更改为基本不同的算法吗?
ttnphns

1
还要注意,对于二进制数据,“汉明距离” = cityblock =平方欧几里德距离。
ttnphns

1
@ttnphns是的,它绝对不再是k均值,但是它具有完全相同的结构,只是计算出中位数而不是计算质心。是的,对于二进制输入hamming,但是Matlab使用中位数代替平均值。=L22=L1
Dougal

1
@Dougal,请注意,链接到的matlab过程说明了数据点和群集中心之间的各种距离;这与成对距离的种类不同。
ttnphns

2

这里

在此处输入图片说明

让我们考虑由上图中的向量表示的两个文档A和B。余弦通过对两个向量进行归一化处理,将它们视为单位向量,从而可以度量两个向量之间的角度。它确实提供了相似度的准确度量,但与幅度无关。但是幅度是考虑相似性时的重要因素。


这是一个普遍的答案。它没有解释为什么在k均值中没有余弦相似性。例如,在分层集群中,它被广泛使用
奇怪的

3
@DLDahly:有时幅度很重要,有时是噪音。它取决于研究领域,是数据标准化的问题。
ttnphns 2014年
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.