正确解释余弦角距离相似度和欧几里得距离相似度

数据挖掘 机器学习 推荐系统 初学者
2022-02-13 11:15:48

例如,假设我有一个非常简单的数据集。我得到一个包含三列的 csv,user_id、book_id、评级。评分可以是 0-5 之间的任意数字,其中 0 表示用户尚未该书评分。

假设我随机挑选了三个用户,我得到了这些特征/评分向量。

马丁:<3,3,5,1,2,3,2,2,5>

雅各布:<3,3,5,0,0,0,0,0,0>

授予:<1,1,1,2,2,2,2,2,2>

相似度计算:

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 6.85 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

现在,我对相似性的期望是马丁和雅各布将是最相似的。我会预料到这一点,因为他们对他们俩都评价过的书的评价完全相同。但我们最终发现马丁和格兰特是最相似的。

我从数学上理解我们是如何得出这个结论的,但我不明白如果发生这种情况,我怎么能依靠余弦角距离或欧几里得距离作为计算相似度的方法。对于什么解释,马丁和格兰特比马丁和雅各布更相似?

我的一个想法是只计算欧几里得距离,但忽略所有一位用户没有为这本书评分的书。

然后我结束了这个

+--------------+---------+---------+----------+ | | M & J | M & G | J & G | +--------------+---------+---------+----------+ | Euclidean | 0 | 5.91 | 6.92 | +--------------+---------+---------+----------+ | Cosine | .69 | .83 | .32 | +--------------+---------+---------+----------+

当然,现在我的欧几里得距离为 0,这符合我对推荐系统的期望。我看到很多教程和讲座都使用余弦角距离来忽略未评级的书籍,而不是使用欧几里得并忽略它们,所以我相信这在一般情况下一定行不通。

编辑:

只是为了做一点实验,我将 Jacob 的特征向量调整为更加相似:

雅各布:<3,3,5,1,2,3,2,0,0>

当我用 Martin 计算余弦角距离时,我仍然只得到 0.82!仍然不如马丁和格兰特相似,但通过检查,我希望这两个非常相似。

有人可以帮助解释我的想法错在哪里,并可能提出另一种相似性度量吗?

1个回答

如果您查看两个距离的定义,余弦距离是两个向量的归​​一化点积,欧几里得是差向量的平方元素之和的平方根。

M 和 J 之间的余弦距离小于 M 和 G 之间的余弦距离,因为 M 的向量的归一化因子仍然包括 J 没有任何评级的数字。即使你像你一样让 J 的向量更相似,M 的剩余数字(2 和 5)也会让你得到你得到的数字。M 和 G 的数字如此之高,因为它们的所有书籍都不是零。尽管它们看起来完全不同,但余弦中的归一化因子被点积中相应条目的非零值更加“中和”。数学不会说谎。

如果您在计算 M 的归一化因子时将 J 未评分的书籍设为零,则将忽略 J 未评分的书籍。您的想法中的错误可能是 J 未评分的书籍应该为 0,而它们不应该为任何数字。

最后,对于推荐系统,我想参考矩阵分解。