【问题标题】:How to compute a correlation from Euclidean Distance? [closed]如何计算欧几里得距离的相关性? [关闭]
【发布时间】:2015-06-16 03:20:04
【问题描述】:

是否有可能使用欧几里得距离计算两个向量之间的相关性

我所说的欧几里得距离是:

Euclidean(X,Y) = sqrt((x1 - y1)*(x1 - y1) + ... + (xN - yN)*(xN - yN))

如果我们对向量进行标准化或规范化,甚至不进行规范化,是否有可能?

我正在寻找的是计算 0 到 1 之间的分数。 (1 ~ 高相关)

现在,我得到一个距离向量。我将它除以最大距离。 我得到向量D。

然后:1 - D

你认为这是从欧几里得距离中获得分数的好方法吗?

我也有兴趣在一个地方拥有所有不同的相关性度量及其应用领域。

【问题讨论】:

  • 两个归一化向量的点积范围为 (0,1)。那会奏效的。
  • 谢谢,但我真的希望它使用欧几里得距离/或“非常”类似的东西。
  • 你显然不懂向量。你如何规范化一个向量?使用欧几里得距离。点积包括两者。
  • 点积与欧几里得距离相同:见极化恒等式(本条目中的第二个公式:en.wikipedia.org/wiki/Polarization_identity
  • 我了解向量...我已经对向量进行了标准化。什么保证点积小于 1 ?欧几里得距离是:(x1 - y1)^2 + ... + (xN - yN)^2

标签: python math distance linear-algebra correlation


【解决方案1】:

您可以通过多种方法确定两个向量的相似程度,但我怀疑并非所有这些方法都是严格意义上的相关性度量。如果您对使用向量的大小及其差异感兴趣,那么明显的度量标准将是差异向量的相对大小和两个给定向量的平均大小。例如给定向量XY,它们都不是0,你可以计算一个度量M

       2∙||X-Y||
M  = -------------
     ||X|| + ||Y||

现在这将与您正在寻找的内容有些相反,其中接近 0 的值表示彼此相对接近的向量,并且它的大小并没有真正的限制。但是,有一些方法可以基于M 获得M'。一种方法可能是:

M' = 1-2∙atan(M)/π

根据您的描述获取M' 的另一种方法是使用指数衰减,如下所示:

M' = exp(-M)

在任何一种情况下,M' 都会在向量相同时为 1,并且随着它们相对于平均长度的差异越大,它们将逐渐接近 0。

我不知道这种方法有任何正式名称(这并不意味着没有)。我只是根据我认为是您的要求来弥补的。但是,我仍然不清楚您到底在寻找什么,所以如果这不是您所需要的,那么请描述为什么这对您不起作用,以便我或其他人可以更好地理解您的要求并提供更好的解决方案。

【讨论】:

  • 非常感谢;这是我一直在寻找的答案。我知道欧几里得距离可以用来计算基因之间的相关性。我的问题是:如何将距离转换为类似于 Pearson 相关性的分数。我不明白为什么有些人要结束我的问题...
【解决方案2】:

给定 3D 空间中的两个向量 u = (u1, u2, u3)v = (v1, v2, v3),您可以通过将每个分量除以向量的欧几里得长度来计算每个向量的单位向量:

m = u/mag(u) = (u1, u2, u3)/sqrt(u1*u1 + u2*u2 + u3*u3) = (m1, m2, m3)
n = v/mag(v) = (v1, v2, v3)/sqrt(v1*v1 + v2*v2 + v3*v3) = (n1, n2, n3)

两个单位向量的点积在(-1, 1)之间变化:

m dot n = m1*n1 + m2*n2 + m3*n3

【讨论】:

  • 抱歉,这不是我想要的。我知道点积。
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 2020-11-29
  • 2018-02-14
  • 2010-11-26
  • 2013-04-07
  • 2021-01-31
  • 2015-09-23
相关资源
最近更新 更多