协同过滤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协同过滤相关的知识,希望对你有一定的参考价值。

参考技术A

协同过滤(Collaborative Filtering,CF)——经典/老牌
只用户行为数据得到。对于 个用户, 个物品,则有共现矩阵 :
对于有正负反馈的情况,如“赞”是1和“踩”是-1,无操作是0:

对于只有显示反馈,如点击是1,无操作是0:

算法步骤:
1)得到共现矩阵 ;
2)计算 任意两行 用户相似度,得到用户相似度矩阵 ;
3)针对某个用户 选出与其最相似的 个用户, 是超参数;——召回阶段
4)基于这 个用户,计算 对每个物品的得分;
5)按照用户 的物品得分进行排序,过滤已推荐的物品,推荐剩下得分最高的 个。——排序阶段

第2步中,怎么计算用户相似度?——使用共现矩阵的行
以余弦相似度为标准,计算 和 之间的相似度:


第4步中,怎么每个用户对每个物品的得分?
假如和用户 最相似的2个为 和 :


对物品 的评分为1,用户 对物品 的评分也为1,那么用户 对 的评分为:

也就是说:利用用户相似度对用户评分进行加权平均:

其中, 为用户 和用户 之间的相似度, 为用户 和物品 之间的相似度。

UserCF的缺点
1、现实中用户数远远大于物品数,所以维护用户相似度矩阵代价很大;
2、共现矩阵是很稀疏的,那么计算计算用户相似度的准确度很低。

算法步骤:
1)得到共现矩阵 ;
2)计算 任意两列 物品相似度,得到物品相似度矩阵 ;
3)对于有正负反馈的,获得用户 正反馈的物品;
4)找出用户 正反馈的物品最相似的 个物品,组成相似物品集合;——召回阶段
5)利用相似度分值对相似物品集合进行排序,生产推荐列表。——排序阶段
最简单情况下一个物品(用户未接触的)只出现在另一个物品(用户已反馈的)的最相似集合中,那么每个用户对每个物品的得分就是相似度。如果一个物品和多个物品最相似怎么办?
如用户正反馈的是 和 ,对于物品 其最相似的是 ,相似度为0.7,对于物品 其最相似的也是 ,相似度为0.6,那么 相似度为:

也就是说:如果一个物品出现在多个物品的 个最相似的物品集合中,那么该物品的相似度为多个相似度乘以对应评分的累加。

其中, 是物品p与物品h的相似度, 是用户u对物品p的评分。

第2步中,怎么计算物品相似度?——使用共现矩阵的列
以余弦相似度为标准,计算 和 之间的相似度:


余弦相似度
皮尔逊相关系数
基于皮尔逊相关系数的改进

UserCF适用于用户兴趣比较分散变换较快的场景,如新闻推荐。
IteamCF适用于用户情趣不叫稳定的场景,如电商推荐。

优点:直观,可解释性强。
缺点:

以上是关于协同过滤的主要内容,如果未能解决你的问题,请参考以下文章

协同过滤推荐算法

协同过滤算法

协同过滤算法

基于物品的协同过滤

协同过滤

推荐系统(一):基于物品的协同过滤算法