【问题标题】: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,因为XX的距离i> 为 0。similarity(X, X) 应该是衡量相似度的函数的最大值(在本例中为 1),因为 XX 是两件事最相似的地方。
  • @WarrenWeckesser,谢谢,我改好了名字。

标签: python scikit-learn scipy cosine-similarity


【解决方案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 的指标更像是测量(通俗地)。
猜你喜欢
  • 2017-12-12
  • 2014-02-25
  • 2015-05-31
  • 2010-10-31
  • 2020-04-22
  • 2020-08-12
  • 2017-04-04
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多