推荐算法大体分为3类:基于系统过滤的推荐、基于内容的推荐、混合推荐
1.基于协同过滤的推荐系统(Collaborative Filtering)
使用行为数据,利用集体智慧来推荐。属于有监督学习。基于用户的协同过滤(找和你兴趣相似的人所喜欢的东西)和基于物品的协同过滤(都喜欢这个东西的人喜欢的其他东西)
基于数据统计(记忆)的CF(Neighborhood-Based)
(1)基于用户的协同过滤:
步骤一:搜索最相似的用户
相似度的计算方法很多:
I Jaccard相似度:实际上就是 交集/并集
1 | sim(A,B)=|A∩B|/|A∪B| |
缺点是没有考虑评分,因为只用到了评分项目是什么
II 余弦相似度: 给出的值为-1到1之间
余弦相似度
1 | sim(A,B)=cos(A,B); |
缺点是认为缺失值为0
III 皮尔逊相关系数:缺失值是平均值。给出的值为-1到1之间
皮尔逊相关系数
有的用户对于喜欢的打的值普遍偏高或者偏低,这种计算方法可以得到较为客观的结果。步骤二:计算用户与新物品之间的相似度,也可以理解为预测函数
相似度的计算方法很多:
I 直接求平均
假设A与B、C相似,使用二者已评值相加然后/2求值
II 加权平均
利用上一步求出得余弦相似度,加权求得最终结果。假设B与A余弦相似度为0.38,评分为3,C与A余弦相似度为0.32,评分为5。则加权平均为(3x0.38+0.32x5) / (0.38+0.32)
计算完成之后,根据TOP-N排序得到得就是推荐列表。