基于物品的协同过滤( item-based collaborative filtering )算法是此前业界应用较多的算法。无论是亚马逊网,还是Netflix 、Hulu 、 YouTube ,其推荐算法的基础都是该算法。为行文方便,下文以英文简称ItemCF表示。本文将从其基础算法讲起,一步步进行改进并基于MovieLens 数据集给出代码实现,带你领略这一经典算法的美。
1.基本原理
前面我们简单讲解了一下基于用户的协同过滤推荐(UserCF),并且给出了实现代码。还不了解的朋友可以转到链接----推荐算法之基于用户的协同过滤。但是我们也讲到该算法存在一些缺点,首先,随着网站的用户数目越来越大,计算用户兴趣相似度矩阵将越来越困难,其运算时间复杂度和空间复杂度的增长和用户数的增长近似于平方关系。其次,基于用户的协同过滤很难对推荐结果作出解释。因此,著名的电子商务公司亚马逊提出了另一个算法——ItemCF 。
ItemCF 给用户推荐那些和他们之前喜欢的物品相似的物品。比如,该算法会因为你购买过《统计学习方法》而给你推荐《机器学习》。不过,ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品 A 和物品 B 具有很大的相似度是因为喜欢物品 A 的用户大都也喜欢物品B 。
基于物品的协同过滤算法可以利用用户的历史行为给推荐结果提供推荐解释,