识别差异的最佳方法:欧几里得距离、余弦距离还是简单减法?

Posted

技术标签:

【中文标题】识别差异的最佳方法:欧几里得距离、余弦距离还是简单减法?【英文标题】:Best way to identify dissimilarity: Euclidean Distance, Cosine Distance, or Simple Subtraction? 【发布时间】:2019-04-09 22:47:23 【问题描述】:

我是数据科学的新手,目前正在学习可以用 Python 完成的不同技术。目前,我正在尝试使用 Spotify 的 API 来制作我自己的播放列表。

目标是找到两个不同播放列表之间最不同的特征。

我的问题是识别这两个播放列表之间最不同的功能的最佳方法是什么?

我首先获取每个播放列表中的所有曲目及其各自的功能。然后我计算了每个特征的平均值。

这是我最终得到的 DataFrame。数据值是所有曲目特征到其各自播放列表的平均值

                   playlist1  playlist2
                   --------------------
danceability      | 0.667509   0.592140
energy            | 0.598873   0.468020
acousticness      | 0.114511   0.398372
valence           | 0.376920   0.287250
instrumentalness  | 0.005238   0.227783
speechiness       | 0.243587   0.088612

我做了一些挖掘,发现了两个常见的程序:

1.欧几里得距离

2。余弦相似度

由于某种原因,我无法确定要使用哪个功能,并着手计算每个功能之间的绝对差异。简单的减法,因为这对我来说很直观。差异最大的特征将是“最不相似的”。

通过这种方法,我最终使用了这些结果并得出结论,能量声学是最不同的

                   playlist1    playlist2   absoluteDifference
                   ----------------------------------------------------
energy             |0.871310    0.468020    0.403290
acousticness       |0.041479    0.398372    0.356893
valence            |0.501890    0.287250    0.214640
instrumentalness   |0.049012    0.227783    0.178771
danceability       |0.531071    0.592140    0.061069
speechiness        |0.109587    0.088612    0.020975

我的直觉是正确还是不正确?我们什么时候会使用上述技术?这些技术中的任何一种都适用于这种情况吗?

最终,我想将前两个不同点作为 KNN 的轴。我的直觉是,我可以识别两个播放列表中最不同的特征,我将拥有一个更清晰、更明确的播放列表特征,并且可以更准确地预测一个播放列表应该属于哪一首歌。

【问题讨论】:

Imo 这是一种计算两个(或更多?)点之间距离的问题重新方法,因此更适合数据科学论坛:datascience.stackexchange.com。 【参考方案1】:

让我首先对欧几里得距离和余弦相似度做一些简短的评论:

欧几里得距离衡量n维空间中两点的距离,即衡量从A点到B点的直线长度

余弦相似度衡量它们在方向上的相似度,即顶点为零的两点 A 和 B 之间的夹角

让我添加一张图片来强调我的想法 点 A 和 B 之间的欧几里得距离用红色表示,余弦相似度用绿色表示(我的意思并不是字面上的度量值,而是 与它们的计算相关的值 em>)

现在让我谈谈一般度量:任何和所有度量都描述了某种相似性。没有通用的“最佳指标”之类的东西。最适合您的问题的指标始终由问题决定。

我在图片中添加了一些额外的点来表明这一事实:

点 D 和 E 与 A 和 B 具有 相同的余弦相似度,但 欧几里得距离大不相同 相反,点 A 和 F 与 A 和 B 相比,余弦相似度大不相同,但 欧几里得距离相同

现在,让我对针对您的特定问题选择合适的指标发表评论:您希望评估特征之间的距离。差异越大,特征之间的距离越远。你根本不关心点之间的角度。这是欧几里得距离的一个明确点。您可能没有意识到,但您实际上在示例中使用了欧几里得距离。您的特征是一维的,在一维中,欧几里得距离等于绝对差。

【讨论】:

感谢卢卡斯的帖子。现在说得通了。这就引出了另一个问题:欧几里得是否只用于一维数组?我们可以将欧几里得用于多维吗? 欧几里得距离可用于任意数量的维度,因为它是逐点平方差的总和(以及在其上抛出的平方根)。让我详细说明(我将使用 3 维情况,但它确实适用于任何维度):对于两个向量(表示更高维度的点)a = [1,1,3] 和 b = [5,4 ,3] 欧几里得距离是 sqrt( (1-5)² + (1-4)² + (3-3)²) = sqrt(16 + 9) = 5。维度越高,总和越长 - 但是这就是高维欧几里得距离的全部内容

以上是关于识别差异的最佳方法:欧几里得距离、余弦距离还是简单减法?的主要内容,如果未能解决你的问题,请参考以下文章

如何将欧几里得距离转换为范围 0 和 1,如余弦相似度?

数据挖掘中的度量方法

余弦相似度和余弦距离之间的差异

借助余弦相似度辅助背单词

借助余弦相似度辅助背单词

常用距离计算方法: