如何将欧几里得距离转换为范围 0 和 1,如余弦相似度?

ati*_*ber 5 machine-learning data-mining text-mining bigdata

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

例如

input  output
  0      1.0
  1      0.9  approximate
  2      0.8 to 0.9 somewhere
 inf     0.0
Run Code Online (Sandbox Code Playgroud)

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

Pru*_*une 5

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

1 / (1 + d**(0.25))
Run Code Online (Sandbox Code Playgroud)

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

1 / (1.1 ** d)
Run Code Online (Sandbox Code Playgroud)

... 或使用触发函数来调整您的映射,例如

1 - tanh(d)
Run Code Online (Sandbox Code Playgroud)

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