识别差异的最佳方法:欧几里德距离、余弦距离或简单减法?
Best way to identify dissimilarity: Euclidean Distance, Cosine Distance, or Simple Subtraction?
我是数据科学的新手,目前正在学习可以用 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。余弦相似度
出于某种原因,我无法确定要使用哪一个并继续计算每个特征之间的绝对差异。简单的减法,因为这对我来说很直观。差异最大的特征是 'most dissimilar'.
通过这种方法,我最终使用了这些结果并得出结论,energy 和 acousticness 是最不同的
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
我的直觉 correct/incorrect 我们什么时候会使用上述技术?这些技术是否适用于这种情况?
最后,我想把最重要的两个不同点作为我的 KNN 轴心。我的直觉是,我可以识别出两个播放列表最不同的特征,我将拥有一个更清晰、更明确的播放列表特征,并且可以更准确地预测一个播放列表应该属于哪首歌。
首先让我对欧氏距离和余弦相似度做一些简短的评论:
欧几里得距离测量n维space中两点的距离,即测量长度从A点到B点的直线
余弦相似度 衡量它们在方向上的相似性,即顶点为零的两点 A 和 B 之间的角度
让我添加一张图片来强调我的想法
A 点和 B 点之间的欧几里得距离用红色表示,余弦相似度用绿色表示(我的意思不是字面意思是测量的实际值,而是 与它们的计算相关的东西)
现在让我谈谈 总体上的度量 :任何和所有度量都描述了某种相似性。没有万能的"best metric"。最适合您的问题的指标始终由问题决定。
我在图片中添加了一些额外的点来表明这一事实:
- 点 D 和 E 与 A 和 B 具有 相同的余弦相似度,但欧几里得距离
- 相反,点 A 和 F 的余弦相似度与 A 和 B 的余弦相似度大不相同,但欧氏距离相同
现在,让我对您的特定问题的适当度量选择做一个评论:您希望评估特征之间的距离。差异越大,特征相距越远。你根本不关心点之间的角度。这是欧几里德距离的一个明确点。您可能没有意识到,您实际上在示例中使用了欧氏距离。你的特征是一维的,在1D中,欧氏距离等于绝对差。
我是数据科学的新手,目前正在学习可以用 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。余弦相似度
出于某种原因,我无法确定要使用哪一个并继续计算每个特征之间的绝对差异。简单的减法,因为这对我来说很直观。差异最大的特征是 'most dissimilar'.
通过这种方法,我最终使用了这些结果并得出结论,energy 和 acousticness 是最不同的
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
我的直觉 correct/incorrect 我们什么时候会使用上述技术?这些技术是否适用于这种情况?
最后,我想把最重要的两个不同点作为我的 KNN 轴心。我的直觉是,我可以识别出两个播放列表最不同的特征,我将拥有一个更清晰、更明确的播放列表特征,并且可以更准确地预测一个播放列表应该属于哪首歌。
首先让我对欧氏距离和余弦相似度做一些简短的评论:
欧几里得距离测量n维space中两点的距离,即测量长度从A点到B点的直线
余弦相似度 衡量它们在方向上的相似性,即顶点为零的两点 A 和 B 之间的角度
让我添加一张图片来强调我的想法
现在让我谈谈 总体上的度量 :任何和所有度量都描述了某种相似性。没有万能的"best metric"。最适合您的问题的指标始终由问题决定。
我在图片中添加了一些额外的点来表明这一事实:
- 点 D 和 E 与 A 和 B 具有 相同的余弦相似度,但欧几里得距离
- 相反,点 A 和 F 的余弦相似度与 A 和 B 的余弦相似度大不相同,但欧氏距离相同
现在,让我对您的特定问题的适当度量选择做一个评论:您希望评估特征之间的距离。差异越大,特征相距越远。你根本不关心点之间的角度。这是欧几里德距离的一个明确点。您可能没有意识到,您实际上在示例中使用了欧氏距离。你的特征是一维的,在1D中,欧氏距离等于绝对差。