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

Mus*_*afa 4 similarity euclidean-distance pandas cosine-similarity data-science

我是数据科学的新手,目前正在学习可以使用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
Run Code Online (Sandbox Code Playgroud)

我进行了一些挖掘,发现了两个常见过程:

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
Run Code Online (Sandbox Code Playgroud)

我的直觉是否正确/不正确?何时使用上述技术?这些技术中的任何一种在这种情况下是否适用?

最终,我想将最重要的两个差异作为KNN的轴。我的直觉是,我可以识别两个播放列表的最相似的功能,可以使播放列表具有更清晰,定义更明确的功能,并且可以更准确地预测该播放列表应属于哪首歌曲。

Luk*_*ler 7

让我首先谈谈欧几里得距离和余弦相似度:

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

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

让我添加图片以强调我的想法 不同指标的说明 点A和点B之间的欧几里得距离用红色表示,余弦相似度用绿色表示(因此,我的字面意思不是度量的实际值,而是与度量的实际值相关的值

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

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

  • D点和E点的余弦相似度与A点和B 点相同,但是欧氏距离相差很大
  • 相反,点A和F A和B的余弦相似度大不相同,但是欧氏距离相同

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

  • 很棒的帖子,我是盲人还是C点没有? (3认同)