举个例子,假设我有一个非常简单的数据集。我给了一个csv三列,user_id,book_id,rating。评分可以是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欧几里得距离,这符合我期望的推荐系统的结束。我看到很多教程和讲座都使用余弦角度距离来忽略未分级的书籍,而不是使用欧几里德并忽略它们,所以我认为这一般不会工作。
编辑:
只是尝试了一下,我调整雅各布的特征向量更加相似:
雅各布:< 3,3,5,1,2,3,2,0, 0>
当我计算与马丁的余弦角距离时,我仍然只得到.82!与马丁和格兰特相比,仍然不那么相似,但通过检查,我预计这两者会非常相似。
有人可以帮助解释我的思维错误,并可能提出另一种相似性措施吗?