我最近一直在玩Mahout推荐系统,并成功地用它制作了一个简单的推荐系统。但这对我来说没有意义,这些通过数学计算的相似性值如何对推荐系统有用?特别是在基于项目的相似性方面?我可以理解 2 个用户可以通过他们喜欢/查看/购买/评价的项目彼此相似,但是 2 个项目如何彼此相似?
基于项目的相似性(项目-项目相似性)类似于基于用户的相似性(用户-用户相似性)。正如您所说,两个用户在喜欢/查看/购买/费率的项目上彼此相似。同样,两个项目根据它们共享的某些特征彼此相似。例如,《指环王》和《霍比特》之所以相似,是因为都是奇幻小说,都是J.R.R.托尔金写的,书中的人物重叠等等。这通常需要有关项目的更多信息。
现在,基于项目的推荐会查找用户过去喜欢/查看/购买/评级的项目,以推荐类似的项目。它根本不看其他用户。
算法的伪代码如下所示:
for every item i that u has no preference for yet
for every item j that u has a preference for
compute a similarity s between i and j
add u's preference for j, weighted by s, to a running average
return the top items, ranked by weighted average
基于项目的推荐器的运行时间随着项目数量的增加而增加,而基于用户的推荐器的运行时间随着用户数量的增加而增加。
由于项-项的相似性更为固定,因此它们是预计算的更好候选项。预计算相似性需要工作,但它会在运行时加快建议速度。
基于商品的方法是在亚马逊发明的,旨在通过基于用户的筛选来解决规模挑战。
经过一些研究,我在这里找到了答案(链接)。本文仅展示了 2 个指标(欧几里得距离和余弦相似性)的 2 个示例,但它有助于可视化相似性值的计算方式,因此可以信任。