识别差异的最佳方法:欧氏距离,余弦距离或简单减法?

时间:2018-11-06 14:13:15

标签: pandas data-science similarity euclidean-distance cosine-similarity

我是数据科学的新手,目前正在学习可以使用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轴。我的直觉是,我可以识别两个播放列表的最相似的功能,可以使播放列表具有更清晰,定义更明确的功能,并且可以更准确地预测该播放列表应该属于哪首歌曲。

1 个答案:

答案 0 :(得分:3)

让我从关于欧几里得距离和余弦相似性的一些简短评论开始:

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

余弦相似度测量其方向相似度,即顶点为零的两个点A和B之间的角度

让我添加图片以强调我的想法 An illustration on different metrics 点A和点B之间的欧几里得距离用红色表示,余弦相似度用绿色表示(因此,我的字面意思不是测度的实际值,而是与测度的计算有关的

现在让我谈一谈措施:任何措施都描述了某种相似性。没有通用的“最佳指标”。始终由问题决定最适合您问题的指标。

我在图像中添加了一些额外的点以显示该事实:

  • 点D和E与A和B具有相同的余弦相似度,但是欧几里得距离差异很大
  • 相反,点A和F的余弦相似度不同于A和B,但欧几里德距离相同

现在,让我谈谈针对您的特定问题的适当度量标准:您希望评估要素之间的距离。差异越大,功能越远。您根本不在乎点之间的角度。这是欧几里得距离的明确点。您可能没有意识到,但是您在示例中实际使用了欧几里得距离。您的特征是一维的,在一维中,欧几里得距离等于绝对差。