https://github.com/litaotao/guidetodatamining/blob/master/chapter-3.md
定义
而基于物品的协同过滤则是找出最相似的物品,再结合用户的评价来给出推荐结果。
比较
基于用户的协同过滤又称为内存型协同过滤,因为我们需要将所有的评价数据都保存在内存中来进行推荐。
基于物品的协同过滤也称为基于模型的协同过滤,因为我们不需要保存所有的评价数据,而是通过构建一个物品相似度模型来做推荐。
算法
1.修正的余弦相似度
过程:
1.修正评分
比如一位用户给Fall Out Boy打了2分(RnN),那修正后的评分为:(他评过的最低分min1, 评过的最高分max5)
2.结合物品相似度矩阵,预测用户u对物品i的评分
3.转换到5星评价体系
好处:
- 修正的余弦相似度是一种基于模型的协同过滤算法。我们前面提过,这种算法的优势之一是扩展性好,对于大数据量而言,运算速度快、占用内存少。
- 用户的评价标准是不同的,比如喜欢一个歌手时有些人会打4分,有些打5分;不喜欢时有人会打3分,有些则会只给1分。修正的余弦相似度计算时会将用户对物品的评分减去用户所有评分的均值,从而解决这个问题。
2.Slope One
Slope One分为两个步骤:首先需要计算出两两物品之间的差值(可以在夜间批量计算)。在上文的例子中,这个步骤就是得出Whitney Houston要比PSY高一分。第二步则是进行预测,比如一个新用户Ben来到了我们网站,他从未听过Whitney Houston的歌曲,我们想要预测他是否喜欢这位歌手。通过利用他评价过的歌手以及我们计算好的歌手之间的评分差值,就可以进行预测了。
过程:
1.套用公式1记出物品差值
2.使用加权的Slope One算法进行预测
好处:
1.有新数据时,你不需要计算整个数据集,这正是Slope One的美妙之处。
试想我们的音乐站点有100万个用户对20万个歌手做评价。如果有一个新进的用户对10个歌手做了评价,我们是否需要重新计算20万×20万的差异数据,或是有其他更简单的方法?
对于两个物品,我们只需记录同时评价过这对物品的用户数就可以了。比如说Taylor Swift和PSY的差值是2,是根据9位用户的评价计算的。当有一个新用户对Taylor Swift打了5分,PSY打了1分时,更新后的差值为: