余弦相似度和余弦距离之间的差异
Posted
技术标签:
【中文标题】余弦相似度和余弦距离之间的差异【英文标题】:Difference between cosine similarity and cosine distance 【发布时间】:2020-02-11 07:59:37 【问题描述】:看起来像 scipy.spatial.distance.cdist 余弦相似距离:
link to cos distance 1
1 - u*v/(||u||||v||)
不同于 sklearn.metrics.pairwise.cosine_similarity 是
link to cos similarity 2
u*v/||u||||v||
有人知道不同定义的原因吗?
【问题讨论】:
您标记为“链接到cos相似度1”的链接是不是余弦相似度,在链接中没有这样称呼。它是余弦距离。 想一个小例子:distance(X, X)应该是0,因为X到X的距离i> 为 0。similarity(X, X) 应该是衡量相似度的函数的最大值(在本例中为 1),因为 X 和 X 是两件事最相似的地方。 @WarrenWeckesser,谢谢,我改好了名字。 【参考方案1】:问得好,但是是的,这是两个不同的东西,但通过以下等式连接:
Cosine_distance = 1 - cosine_similarity
为什么?
通常,人们使用余弦相似度作为向量之间的相似度度量。现在,距离可以定义为 1-cos_similarity。
这背后的直觉是,如果 2 个向量完全相同,则 相似度 为 1(角度=0),因此,距离是 0 (1-1=0)。
同样,您可以为生成的相似值范围定义余弦距离。
余弦相似度范围: -1 表示完全相反,1 表示完全一样,0 表示正交。
参考文献:Scipywolfram
【讨论】:
感谢您的解释。术语有点混乱。我觉得余弦距离应该简称为余弦。余弦相似距离应该称为余弦距离。 我同意,但这是工程/数学社区的定义。 是的,现在改变它没有意义。 @user1700890 请参阅第一个要点here,对于要成为 距离 的事物,它必须满足 "d(x,y) = 0 当且仅如果 x = yie 从一个点到它自己正好为零”。余弦距离满足这一点,余弦相似度不满足。因此是术语。 看看this article 中的第二句话,虽然不是严格的数学指标,但在统计数据中,相似性通常被称为指标,因为它们扮演着相似的角色。 sklearn 的指标更像是测量(通俗地)。以上是关于余弦相似度和余弦距离之间的差异的主要内容,如果未能解决你的问题,请参考以下文章