目前有关个性化推荐算法主要分为三大类:1.基于协同过滤的推荐;2.基于内容过滤的推荐和3.社会化推荐。
本文主要讨论基于协同过滤的推荐,而该算法也可以划分为两类:
1.基于用户的协同过滤算法(UserCF)
https://blog.csdn.net/wickedvalley/article/details/80095007
该算法利用用户之间的相似性来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。但有很难解决的两个问题,一个是稀疏性,即在系统使用初期由于系统资源还未获得足够多的评价,很难利用这些评价来发现相似的用户。另一个是可扩展性,随着系统用户和资源的增多,系统的性能会越来越差。
五、算法流程:
1.根据当前用户,计算与当前用户最相似的N个用户;
2.推荐这N个最相似的用户看过的电影(排除当前用户观看过的)
3.将所有当前用户没有看过的电影,按照评分从高到低推荐给用户
2.基于物品的协同过滤算法(ItemCF)
相关链接:https://blog.csdn.net/wickedvalley/article/details/79927699
内容过滤根据信息资源与用户兴趣的相似性来推荐商品,通过计算用户兴趣模型和商品特征向量之间的向量相似性,主动将相似度高的商品发送给该模型的客户。由于每个客户都独立操作,拥有独立的特征向量,不需要考虑别的用户的兴趣,不存在评价级别多少的问题,能推荐新的项目或者是冷门的项目。这些优点使得基于内容过滤的推荐系统不受冷启动和稀疏问题的影响
算法流程
1.构建用户–>物品的倒排;
2.构建物品与物品的同现矩阵;
3.计算物品之间的相似度,即计算相似矩阵;
4.根据用户的历史记录,给用户推荐物品;
相似度的计算有欧式距离、皮尔逊相关系数等,本文主要介绍皮尔逊相关系数。
Pearson相关系数用来衡量两个数据集合之间的相似性。比如在一个关于电影的资料网站中,很多用户都可能对其中的电影进行打分。Pearson相关系数可以用来帮助更好的找到兴趣相似的用户,从而进行相关的推荐。这种推荐的基本思路是如果A和B兴趣相似,那么A喜欢看的,B就有很大可能会喜欢看,就可以把A的喜欢看的推荐给B。
假设电影库中5部电影,A和B都对其中的部分进行了打分(5分为满分),A的分数是[3, 2, -, 1, 4],B的分数是[5, 3, 3, -, 5],其中“-”表示未打分。那么A和B的Pearson相关系数是0.866,说明两个人的兴趣是比较相似的。
Pearson相关系数的一个优点是可以避免评分等级膨胀(grade inflation)的问题,
也就是说有的用户可能倾向于对所有的电影都给比较高的分数,
而有的用户则会比较苛刻,给分都比较低。
对于这种情况,Pearson相关系数可以处理。
Pearson相关系数的具体计算公式为:
r = (sum(x*y) - sum(x)*sum(y)/N)/sqrt((sum(x^2)-sum(x)^2/N)(sum(y^2)-sum(y)^2/N))
网友评论