基于协同过滤的商品个性化推荐

上次在用回归模型研究豆瓣短评top500的代表性时,爬了一份用户影视评分数据,今天结合协同过滤算法,做一个简易的“推荐系统”,将特定商品——影视作品推荐给潜在感兴趣的参与打分的用户。

基于协同过滤的商品个性化推荐
数据:包含24594条记录,涉及54部影视作品和19317位用户
算法与R语言包:协同过滤算法、recommenderlab包
具体步骤:数据预处理(主要是转化为稀疏矩阵)——推荐建模(topN;评分状况)+ 结果分析

  1. 数据预处理
    recommenderlab的建模函数对数据格式有要求,必须为realRatingMatrix,且矩阵太稀疏的话,由信息不足导致的推荐建模效果会很差。
    因此预处理主要有两点:(1)删去评价次数少于6的用户;(2)转化为稀疏矩阵
    基于协同过滤的商品个性化推荐
    基于协同过滤的商品个性化推荐
  2. 推荐建模
    从出发点来看:主要分为基于用户相似性、基于商品相似性、最受欢迎推荐、随机推荐
    从结果来看:主要是topN(即输出用户最可能感兴趣的N部作品)和评分模型(即输出用户对作品的具体评分)

以topN+基于用户为例:
输出结果:前5位用户的top5推荐影视作品。
基于协同过滤的商品个性化推荐
效果评价:
TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率;FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。
从ROC曲线来看,topN的N范围越大,正确率越高,这是符合经验的,推荐数量越多,越可能击中用户喜好。以20为例,实际用户喜欢并正确推荐给用户的影视作品概率接近2.5%。
基于协同过滤的商品个性化推荐
模型比较:以上是基于用户的topN建模,现加入其它模型一并比较,从TPR、FPR的定义看,曲线越偏向左上效果越好。
总得来看,基于商品与基于用户的推荐方法都不算好,但后者略优于前者。基于流行度的效果整体最佳,但在推荐数取5的时候,奇异值分解的效果最好。
联系实际,在一个网站刚成立或app刚投入使用的时候,用户、商品、使用信息稀缺(类比这份数据),从用户或者商品的相似性考虑推荐效率很低,而简单的流行度就不错,即啥火推啥。
基于协同过滤的商品个性化推荐