【问题标题】:How to convert Euclidean distance to range 0 and 1 like Cosine Similarity?如何将欧几里得距离转换为范围 0 和 1,如余弦相似度?
【发布时间】:2017-09-27 01:16:28
【问题描述】:

想将欧几里得距离映射到 [0, 1] 范围内,有点像向量的余弦相似度。

例如

input  output
  0      1.0
  1      0.9  approximate
  2      0.8 to 0.9 somewhere
 inf     0.0

我尝试了公式1/(1+d),但它从 1.0 下降得太快了。

【问题讨论】:

  • 你的英语已经足够好了。但是,缺少您的数学细节。 “喜欢”余弦相似度并不能告诉我们您需要什么。我们所知道的是,您想将某些东西映射到范围 [0,1] 中。为什么 1 映射到 0.9,具体来说? 1/(1+d) 怎么不正确?
  • d1 和 d2 的距离 = 1,也就是说,d1 和 d2 相似,对应的余弦相似度为 0,9 或其他数字。
  • 如果距离 d1 和 d2 = 2 => 1/1+d = 0,3。我希望该值等于 0,8 或 0,9,因为 d1 和 d2 靠得很近。
  • 我们需要您详细说明您想要什么样的映射。你需要用更清晰的术语来描述你对“关闭”的想法。您给我们的只是端点和其他两个数据点的模糊概念。
  • @Prune 非常感谢您编辑我的问题,这正是我的意思

标签: machine-learning data-mining text-mining bigdata


【解决方案1】:

您似乎希望分数的分母增长得更慢(分母是底部,到目前为止您拥有 (d+1) )。有多种方法可以处理这个问题。例如,为 d 尝试较低的幂,例如

1 / (1 + d**(0.25))

...或分母的指数衰减,例如

1 / (1.1 ** d)

...或使用三角函数来调整映射,例如

1 - tanh(d)

这些家庭中的某一个对你有用吗?

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2012-08-20
    • 2010-12-22
    • 2018-04-20
    • 2013-10-24
    • 2020-06-18
    • 2018-02-10
    • 1970-01-01
    • 2017-12-12
    相关资源
    最近更新 更多