我已经看到 K-Nearest Neighbor 算法中使用余弦相似度来根据用户偏好生成推荐。在这些模型中,用户对给定产品的评分被视为向量,然后两个用户之间的相似度由两个向量之间的余弦相似度确定。(例如http://www.neo4j.org/graphgist?8173017)
我的问题是: 谁能解释一下使用余弦相似度的推荐引擎如何解释并行用户偏好?在我看来,如果两个用户具有平行(但不同)的偏好,则他们可以具有完全极性的评级偏好,并且产生 1 的余弦相似度。例如,如果一个用户将 5 部电影评为 10 颗星中的 1 部电影,而另一个用户将 5 部电影评为 10 颗星中的 10 颗,则他们的余弦相似度将为 1(在我看来,这似乎是一个不准确的衡量标准用户相似性)。

问题示例:如果我们测量两个用户的用户偏好,并且测量他们对 3 个产品的偏好,我们可以将他们的偏好存储为两个向量:
a =(1,1,1) 和 b=(10,10,10)
然后我们可以使用余弦相似度来衡量它们彼此之间的相似程度。但在这种情况下,它们的余弦相似度将是 1,即使它们代表了相反的用户偏好。
recommendation-engine machine-learning knn neo4j cosine-similarity