协同过滤算法

内容来源:《dataminingguide》-----隐式评价和基于物品的过滤算法章节

1、 显式&&隐式评级

显式:明确给出对物品的评价,最常见的是“喜欢不喜欢”或星级系统。
隐式:通过观察用户行为来获取偏好信息。
显式存在的问题:
(1) 人们不愿意评价物品
(2) 人们会撒谎,或者存在偏见
(3) 人们不会更新评论

2、 基于用户的协同过滤(内存性协同过滤)

将一个用户和其他所有用户进行对比,找到相似的人。并将它评价过的物品推荐给目标用户。
需要将所有的评价数据都保存在内存中进行。
这个算法的弊端:(1)扩展性不佳;(2)稀疏性,一般物品数量远大于用户,造成数据的稀疏性。

3、 基于物品的协同过滤(基于模型的协同过滤)

找出最相似的物品,再结合用户的评价来给出推荐结果。
不需要保存所有的评价数据,而是通过构建一个物品相似度模型来做推荐。

4、 修正的余弦相似度

因“分数膨胀”,我们会从用户的评价中减去他所有评价的均值,这就是修正的余弦相似度。


修正余弦相似度计算
修正余弦相似度计算
解释

为了让公式的计算效果更佳,对物品的评价分值最好介于-1到1之间。

标准化

修正的余弦相似度是一种基于模型的协同过滤算法。这种算法的有事之一是扩展型好,对于大数量而言,运算速度快,占用内存少。

5、 Slope One算法

最大的优势是简单,因此易于实现。

Slope One分为两个步骤:

(1)首先需要计算出两物品之间的差值

差值计算公式

image.png

例子:
例子

增加一些数据:
数据

我们来考察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的评分情况和两两歌手之间的差异值展现如下:


预测评分

你可能感兴趣的:(协同过滤算法)