我是数据科学的新手,目前正在学习可以使用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轴。我的直觉是,我可以识别两个播放列表的最相似的功能,可以使播放列表具有更清晰,定义更明确的功能,并且可以更准确地预测该播放列表应该属于哪首歌曲。
答案 0 :(得分:3)
让我从关于欧几里得距离和余弦相似性的一些简短评论开始:
欧几里德距离测量 n 维空间中两个点的间隔,即测量从A点到B点的直线长度>
余弦相似度测量其方向相似度,即顶点为零的两个点A和B之间的角度
让我添加图片以强调我的想法 点A和点B之间的欧几里得距离用红色表示,余弦相似度用绿色表示(因此,我的字面意思不是测度的实际值,而是与测度的计算有关的)
现在让我谈一谈措施:任何措施都描述了某种相似性。没有通用的“最佳指标”。始终由问题决定最适合您问题的指标。
我在图像中添加了一些额外的点以显示该事实:
现在,让我谈谈针对您的特定问题的适当度量标准:您希望评估要素之间的距离。差异越大,功能越远。您根本不在乎点之间的角度。这是欧几里得距离的明确点。您可能没有意识到,但是您在示例中实际使用了欧几里得距离。您的特征是一维的,在一维中,欧几里得距离等于绝对差。