我只是在阅读《集体智慧》(Toby Segaran 着)这本书,并遇到了欧几里得距离分数。在书中作者展示了如何计算两个推荐数组之间的相似度(即。
他通过 计算两个人和
这对我来说完全有意义。我真正不明白的是为什么他在最后计算以下以获得“基于距离的相似性”:
所以,我不知何故知道这一定是从距离到相似度的转换(对吧?)。但是为什么公式看起来像这样?有人可以解释一下吗?
我只是在阅读《集体智慧》(Toby Segaran 着)这本书,并遇到了欧几里得距离分数。在书中作者展示了如何计算两个推荐数组之间的相似度(即。
他通过 计算两个人和
这对我来说完全有意义。我真正不明白的是为什么他在最后计算以下以获得“基于距离的相似性”:
所以,我不知何故知道这一定是从距离到相似度的转换(对吧?)。但是为什么公式看起来像这样?有人可以解释一下吗?
逆向是从距离变为相似。
分母中的 1 是为了使其最大值为 1(如果距离为 0)。
平方根 - 我不确定。如果距离通常大于 1,则根将使大距离变得不那么重要;如果距离小于 1,它将使大距离更重要。
要测量距离和相似性(在语义上),首先要检查的是您是否在欧几里得空间中移动。验证这一点的经验方法是估计您知道其含义的一对值的距离。
正如您所提到的,您知道欧几里得距离的计算,所以我正在解释第二个公式。欧几里得公式计算距离,对于更相似的人或物品,距离会更小。就像如果它们相同,则距离为 0,完全不同则大于 0。
但是,我们需要一个提供更高值的函数。这可以通过将 1 添加到函数来完成(这样您就不会得到被零除的错误,并且最大值保持 1)并将其取反。就像如果距离 0 那么相似度得分 1/1=1
假设第 1 项和第 2 项之间的欧几里得距离为 4,第 1 项和第 3 项之间的欧几里得距离为 0(意味着它们 100% 相似)。这些是虚拟空间中物品的距离。距离值越小意味着它们彼此靠近意味着更可能相似。现在我们想要数值,如果它们非常相似,它会给出更高的数字。所以我们可以反演距离值。但是如果我们的距离为 0,这就是我们在分母中加 1 的原因。因此项目 1 和项目 2 的相似度得分为 1/(1+4) = 0.2,项目 1 和项目 3 的相似度得分为 1/(1+0) = 1
欧几里得基本上是计算两个向量的相异性,因为如果两个向量相似,它将返回 0。而余弦相似度给出 1 作为相似度的回报。那本书的作者有点想要基于相似性的度量,但他想使用欧几里得。所以,为了得到一个基于相似度的距离,他翻转了公式并将其与 1 相加,这样当两个向量相似时它给出 1。去检查一下,尝试使用 2 个包含相同值的向量。