Top26:推荐系统札记2-协同过滤推荐算法
优点:
实现快
对商品和物品没有要求
效果有保障
分为两大类:
1.基于记忆的协同过滤(Memory-based CF)
基于用户 (User-based)
基于物品 (Item-based)
如何实现?
相似统计方法得到具有相似兴趣爱好的用户
2.基于模型的协同过滤(Model-based CF)
以隐因子模型、朴素贝叶斯分类为代表
如何实现?
先用历史数据得到一个模型,再用此模型进行预测。
使用的技术包括哪些?
神经网络技术、潜在语义LFM分析、贝叶斯网络、聚类算法模型、分类算法模型、回归算法模型、矩阵分解模型、神经网络模型、图模型、隐语义模型
一:基于记忆的协同过滤
基于记忆的协同过滤算法(Memory-based CF)直接使用整个已知的(所谓“记忆”)评分矩阵
去预测用户对未知项目的评分或者推荐,又可以分为基于用户的协同过滤算法和基于物品的协同过滤算法
在视频推荐中,通常用户为视频的评分是稀疏的。基于记忆的协同过滤算法收集用户-视频(User-Video)的评分数据来构建用户和物品的关系矩阵,为目标用户估计某一特定物品的评分或产生一个推荐列表。
最近邻居算法(k Nearest Neighbors,KNN)
推荐过程主要经历两步:
1.首先计算每一对用户之间的相似度,对某一个用户来说,将相似度较高的作为邻居
2.然后根据所有邻居(有的算法取所有其他用户)的相似度在某一个项目上做加权和,获得预测用户对该项目的分值。
优势:
1.实现简单
2.推荐精度较高
劣势:
1.对数据稀疏敏感,可扩展性不强。
2.如果系统的目标不是进行预测评分而是进行top-N推荐的话,最后还需要对所有项目的分值进行排序,取最高的N个作为推荐对象。
TopN和kNN的区别和联系
* KNN求相似用户或相似项目,根据相似用户或项目来辅助预测用户对项目的评分,指标一般是RMSE、MAE
* TOPN,可以理解为,在预测用户对未选择项目的评分,然后排序,
取前TOPN个项目(用户没有选择过的)推荐给用户,看命中率,指标一般是RECALL 、PRECISION、AUC
* TopN和kNN目的不同,TopN在kNN基础之上进行推荐,KNN只预测评分没做推荐。
1.在推荐系统中,“关系”是用关系矩阵的形式来创建和存储下来的
例:
以视频推荐为例,可以归纳为
用户关系矩阵 (U-U矩阵)
视频(物品)关系矩阵 (V-V矩阵)
用户-视频(物品)关系矩阵 (U-V矩阵)
基于记忆的协同过滤主要是依赖于对U-U矩阵和V-V矩阵处理分析,
通过相似度计算得到用户相似度和视频或物品相似度,
并在此基础上形成推荐结果。
1.U-U矩阵相似度推荐-Pearson
计算用户相似度的常用方法有哪些?
计算用户相似度的常用方法有Pearson相关系数、余弦相似度、以及修正的余弦相似度、SPearman秩相关系数和均方差等
Pearson系数存在的问题
不能应对不同用户可能对某一件广受欢迎的项目都给予高评分的情况(就是所有人都给高分,没办法处理)
在遇到用户只对非常少的共同项目评分时出现预测不准的情况。(就是没人评分了)
解决方案:提高对有争议的共同评价的相对重要性,降低了广受欢迎项目有共同评价的相对重要性。
矩阵分解技术举例:SVD、PCA
用户相似度计算流程:
1.访问用户最近的行为数据
2.提取用户-视频二维矩阵
3.分别计算用户i和j对视频的平均评价值
4.寻找用户i和j共同评价过的视频的集合
5.根据公式计算得到用户i和j的相似度
视频相似度计算流程(或物品)
1.访问用户最近的行为数据
2.提取用户-视频二维矩阵
3.寻找历史上对视频i和j共同评价过的用户的集合
4.分别计算用户对视频i和j的平均评价值
5.根据公式计算得到视频i和j的相似度
2.User-based CF
算法原理
1.收集用户和视频的历史信息,计算用户u和其他用户的相似度Sim(u,Ni),找到与目标用户Ui相似度搞的用户集合N(u)
2.根据所有Ni∈ N(u)对视频的评分情况,选出N(u)中的用户喜欢的且目标用户没有观看过的视频推荐给目标用户。
算法流程:
1.访问用户最近的行为数据
2.提取用户-视频二维矩阵
3.通过相似度计算,获得与用户u具有相似爱好的相似用户集合N(u)
4.计算用户u对视频的偏好
5.根据喜好度进行排序
6.输出Top-N视频列表
注:U-U矩阵的输出就是UserCF的输入矩阵
3.item_base CF
算法原理
1.对于目标用户Ui及其待评分的视频Mj,根据用户对视频的历史偏好数据,计算视频Mj与其他已评分视频之间的相似度Sim(j,i),找到与视频Mj相似度高的视频集合N(u)
2.根据所有视频N(u)的评分情况,选出N(u)中目标用户Ui可能喜欢的且目标用户没有观看过的项目推荐给目标用户并评测评分
算法流程:
1.访问用户最近的浏览和观看数据
2.从中提取用户u喜好的视频集合M(u)
3.通过视频相似矩阵,获得与M(u)相似的视频集合N(u)
4.计算用户对N(u)中视频的喜好度
5.根据喜好度进行排序
6.存Top-K视频表到初始推荐结果表中
2.UserCF和ItemCF区别和联系
问:文章分享网站Digg用UserCF,
而电子商务网站亚马逊和DVD租赁网站Netflix使用ItemCF,为什么?
UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,更社会化,反映了用户所在的小型兴趣群体中物品的热门程度
ItemCF的推荐结果着重于维系用户的历史兴趣,更个性化,反映了用户自己的兴趣传承
总结:ItemCF中的推荐效果的覆盖率和新颖度都低于UserCF
优缺点对比:
性能
UserCF适用于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大
ItemCF适用于物品数目明显小于用户数的场合,如果物品很多(网页),计算物品相似度矩阵代价很大
领域
UserCF适用于时效性较强,用户个性化兴趣不太明显的领域
ItemCF适用于长尾物品丰富,用户个性化需求强烈的领域
实时性
UserCF适用于用户有新行为,不一定造成推荐结果的立即变化
ItemCF适用于用户有新行为,一定会导致推荐结果的实时变化
冷启动
UserCF:在新用户对很少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度表是每隔一段时间离线计算的
新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给和对它产生行为的用户兴趣相似的其他用户
ItemCF:新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品
但没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户
推荐理由
UserCF很难提供令用户信服的推荐解释
ItemCF利用用户的历史行为给用户做推荐解释,可以令用户比较信服