【发布时间】:2017-11-14 16:12:45
【问题描述】:
我最近一直在玩 Mahout 推荐系统,并成功地用它制作了一个简单的推荐系统。但这对我来说没有意义,这些通过数学计算的相似度值如何对推荐系统有用?特别是在 ItemBasedSimilarity 中?我可以理解 2 个用户可以通过他们喜欢/查看/购买/评价的项目彼此相似,但是 2 个项目如何相互相似?
【问题讨论】:
标签: mahout recommendation-engine mahout-recommender
我最近一直在玩 Mahout 推荐系统,并成功地用它制作了一个简单的推荐系统。但这对我来说没有意义,这些通过数学计算的相似度值如何对推荐系统有用?特别是在 ItemBasedSimilarity 中?我可以理解 2 个用户可以通过他们喜欢/查看/购买/评价的项目彼此相似,但是 2 个项目如何相互相似?
【问题讨论】:
标签: mahout recommendation-engine mahout-recommender
经过一番研究,我在这里找到了答案 (link)。本文仅展示了 2 个指标(欧几里得距离和余弦相似度)的 2 个示例,但它有助于可视化计算相似度值的方式,因此值得信赖。
【讨论】:
基于物品的相似度(item-itemsimilarity)与基于用户的相似度(user-usersimilarity)相似。正如您所说,两个用户在喜欢/查看/购买/率等项目上彼此相似。同样,两个项目基于它们共享的某些特征而彼此相似。例如,指环王和霍比特人很相似,因为它们都是奇幻小说,都是由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
基于项目的推荐器的运行时间随着项目数量的增加而增加,而基于用户的推荐器的运行时间随着用户数量的增加而增加。
由于项目与项目的相似性更加固定,因此它们更适合进行预计算。预先计算相似性需要工作,但它会在运行时加快推荐速度。
Amazon 发明了基于项目的方法,以通过基于用户的过滤解决规模挑战。
【讨论】: