内容来源:《dataminingguide》-----隐式评价和基于物品的过滤算法章节
1、 显式&&隐式评级
显式:明确给出对物品的评价,最常见的是“喜欢不喜欢”或星级系统。
隐式:通过观察用户行为来获取偏好信息。
显式存在的问题:
(1) 人们不愿意评价物品
(2) 人们会撒谎,或者存在偏见
(3) 人们不会更新评论
2、 基于用户的协同过滤(内存性协同过滤)
将一个用户和其他所有用户进行对比,找到相似的人。并将它评价过的物品推荐给目标用户。
需要将所有的评价数据都保存在内存中进行。
这个算法的弊端:(1)扩展性不佳;(2)稀疏性,一般物品数量远大于用户,造成数据的稀疏性。
3、 基于物品的协同过滤(基于模型的协同过滤)
找出最相似的物品,再结合用户的评价来给出推荐结果。
不需要保存所有的评价数据,而是通过构建一个物品相似度模型来做推荐。
4、 修正的余弦相似度
因“分数膨胀”,我们会从用户的评价中减去他所有评价的均值,这就是修正的余弦相似度。
为了让公式的计算效果更佳,对物品的评价分值最好介于-1到1之间。
修正的余弦相似度是一种基于模型的协同过滤算法。这种算法的有事之一是扩展型好,对于大数量而言,运算速度快,占用内存少。
5、 Slope One算法
最大的优势是简单,因此易于实现。
Slope One分为两个步骤:
(1)首先需要计算出两物品之间的差值
例子:
增加一些数据:
我们来考察Taylor Swift和PSY之间的差值,card(Sij(X))的值是2 ,因为有2个用户同时对Taylor Swift和PSY打过分
其他物品之间的差值:
Slope One的美妙之处,对于这两个物品,只需记录同时评价过这物品的用户数。
比如A和B的差值是2,是根据9位用户的评价计算的,当有一个新用户对A打了5分,对B打了1分,更新后的差值为:
((9*2)+4)/10=2.2
(2)第二步是进行预测
分子:
分解开看,先将Ben的评分情况和两两歌手之间的差异值展现如下: