在效率或功能方面是否有特定目的,为什么k-means算法不使用余弦(不)相似度作为距离度量,而只能使用欧几里得范数?通常,当考虑或使用除欧几里得以外的其他距离时,K均值方法会符合并正确吗?
[由@ttnphns添加。这个问题有两个方面。“非欧氏距离”可以涉及两个数据点之间的距离或数据点与聚类中心之间的距离。到目前为止,都尝试了两种方法来解决答案。]
在效率或功能方面是否有特定目的,为什么k-means算法不使用余弦(不)相似度作为距离度量,而只能使用欧几里得范数?通常,当考虑或使用除欧几里得以外的其他距离时,K均值方法会符合并正确吗?
[由@ttnphns添加。这个问题有两个方面。“非欧氏距离”可以涉及两个数据点之间的距离或数据点与聚类中心之间的距离。到目前为止,都尝试了两种方法来解决答案。]
Answers:
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最小化将群集之间的距离最大化?。
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)
同样容易:或者类似的精简且内容丰富的东西。
另请参阅@ttnphns答案,以获取实际上涉及点式欧几里得距离的k均值的解释。
k均值的构造方法不是基于距离的。
K均值使集群内方差最小化。现在,如果您看一下方差的定义,它就等于距中心的欧几里德距离的平方和。(@ttnphns答案是指成对的欧几里德距离!)
k均值的基本思想是使平方误差最小。这里没有“距离”。
为什么使用任意距离是不正确的:因为k均值可能会停止与其他距离函数收敛。收敛的通用证明是这样的:分配步骤和均值更新步骤都优化了相同的准则。分配的数量有限。因此,它必须在有限数量的改进后收敛。要将此证明用于其他距离函数,必须显示均值(注意:k- 均值)也能使距离最小。
如果您正在寻找k均值的曼哈顿距离变型,则有k个中值。因为中位数是已知的最佳L1估计量。
如果要使用任意距离函数,请查看k形参(aka:PAM,围绕形参划分)。medoid可使任意距离最小化(因为它被定义为最小距离),并且也仅存在有限数量的可能的medoid 。但是,它比平均值贵得多。
@ttnphns answer refers to pairwise Euclidean distances!
在我的回答的第一段中,我清楚地同时提到了 “ SS错误”(直接)和“成对d ^ 2”(隐式)两种解释。
k-means may stop converging with other distance functions
与我的理论相符Non-euclidean distances will generally not span euclidean space
。
我在这里可能有点学究,但是K-means是为特定算法指定的名称,该算法将标签分配给数据点,以使群集内的差异最小化,并且它不是“通用技术”的名称。
K-means算法已从多个领域独立提出,具有适用于该领域的强大解释。很好地证明,它也是到中心的欧几里得距离。有关K均值的简要历史,请阅读数据聚类:K均值后50年
除了欧几里得以外,还有许多其他使用度量标准的聚类算法。我知道的最一般的情况是使用Bregman发散度进行聚类,其中欧几里得是一个特例。
由于这显然是一个规范的问题,因此在这里尚未提及:
。在许多情况下,我们无法显式计算map,但是可以计算内核。并非所有距离度量标准都适合此模型,但许多度量标准都适用。在字符串,图形,图像,概率分布等上定义了此类函数。...
在这种情况下,在标准的(Lloyd's)k均值算法中,我们可以轻松地将点分配给它们的聚类,但是我们隐式表示了聚类中心(作为希尔伯特空间中输入点的线性组合)。要在输入空间中找到最佳表示,将需要找到Fréchet平均值,这非常昂贵。因此,使用内核轻松获得群集分配,更难获得资源。
以下论文讨论了该算法,并将其与频谱聚类相关联:
我在这里阅读了许多有趣的评论,但我要补充一点,Matlab的k均值“个人”实现支持4个非欧几里德距离(在数据点和聚类中心之间)。我可以看到的关于文档的唯一评论是:
在p维空间中用于最小化的距离度量,指定为由“ Distance”和字符串组成的逗号分隔对。
kmeans对于不同的受支持距离度量,对质心群集的计算方式有所不同。下表总结了可用的距离度量。在公式中,x是观察值(即X的行),c是质心(行向量)。
随后的功能列表c
和x
遵循。因此,考虑到p
输入数据的维数,似乎没有预先进行欧几里得嵌入。
顺便说一句,在过去,我一直在使用Matlab的具有相关距离的k均值,它(毫无疑问)做了它应该做的。
cosine
(这是归一化输入点上的欧几里得距离),correlation
(标准化输入上的欧几里得距离),cityblock
(,在这种情况下,使用中位数而不是均值),并且(仅用于二进制输入)。hamming
cityblock
从这里:
让我们考虑由上图中的向量表示的两个文档A和B。余弦通过对两个向量进行归一化处理,将它们视为单位向量,从而可以度量两个向量之间的角度。它确实提供了相似度的准确度量,但与幅度无关。但是幅度是考虑相似性时的重要因素。