推荐系统task02-推荐系统算法基础-基于协同过滤的召回

124 阅读5分钟

基于用户的协同过滤算法(UserCF)

给用户推荐和他兴趣相似的其他用户喜欢的产品

基于物品的协同过滤算法(ItemCF)

给用户推荐和他之前喜欢的物品相似的物品

重点:计算用户或物品之间的相似度

相似度

1.杰卡德(Jaccard)相似系数

用户u和用户v交互物品的交集/用户u和用户v交互物品的并集

特点:无法反映具体用户的评分喜好信息,所以常用来评估用户是否会对某物品进行打分, 而不是预估用户会对某物品打多少分。

2.余弦相似度

image.png 令矩阵 A为用户-物品交互矩阵,矩阵的行表示用户,列表示物品。

关于余弦相似度的思考

衡量向量的 “方向相似性”

余弦相似度能消除长度偏差:例如文本处理中,两篇主题相同但篇幅不同的文档(如长论文与短摘要),词频向量长度差异大,欧氏距离会误判为 “不相似”,而余弦相似度仅关注词频比例(方向),能正确反映主题相似性。

 高维场景下余弦相似度的优势
  • 消除长度偏差:例如文本处理中,两篇主题相同但篇幅不同的文档(如长论文与短摘要),词频向量长度差异大,欧氏距离会误判为 “不相似”,而余弦相似度仅关注词频比例(方向),能正确反映主题相似性。
  • 应对维度灾难:高维空间中,数据稀疏性导致欧氏距离容易受极端值影响(如某一维特征突然增大),而余弦相似度通过归一化向量方向,减少了维度噪声的干扰。
  • 符合语义相似逻辑:在特征表示中,向量方向常对应 “语义结构”(如词向量的语义方向),方向相近即语义相似,与人类认知逻辑更一致。

此外还有别的关于距离的描述:欧氏距离,切比雪夫距离

3.皮尔逊相关系数

将用户向量的内积展开为各元素乘积和

image.png

适用场景

  • JaccardJaccard 相似度表示两个集合的交集元素个数在并集中所占的比例 ,所以适用于隐式反馈数据(0-1)。

  • 余弦相似度在度量文本相似度、用户相似度、物品相似度的时候都较为常用。

  • 皮尔逊相关度,实际上也是一种余弦相似度。不过先对向量做了中心化,范围在 −1−1 到 11。

    • 相关度量的是两个变量的变化趋势是否一致,两个随机变量是不是同增同减。
    • 不适合用作计算布尔值向量(0-1)之间相关度。

2.1基于用户的协同过滤

过程

1.计算用户之间的相似度

2.计算用户对新物品的评分预测

3.对用户进行物品推荐

相似度计算方式

建立实验使用的数据表

image.png

计算用户相似性矩阵

image.png

计算与 Alice 最相似的 num 个用户

image.png

预测用户 Alice 对物品 E 的评分

image.png

优缺点

1.数据稀疏性 2.需要维护用户相似度矩阵

2.2 基于物品的协同过滤

构建物品-用户的评分矩阵

image.png

计算物品间的相似度矩阵

image.png

从 Alice 购买过的物品中,选出与物品 E 最相似的 num 件物品。

image.png 预测用户 Alice 对物品 E 的评分

image.png

惩罚

相似度计算中的惩罚:抑制热门物品偏差

在计算物品间相似度(如余弦相似度)时,若直接使用共现次数或用户交互数据,会导致热门物品(被大量用户交互)与其他物品的相似度虚高。

  • 准确性:减少热门物品、噪声数据对相似度的干扰,提升推荐精度。
  • 多样性:抑制流行度偏差,平衡长尾物品推荐。
  • 泛化性:通过正则化避免模型过拟合,增强对新数据的适应性。

问题

泛化能力弱 推荐系统头部效应明显, 处理稀疏向量的能力弱

使用场合

UserCF适于用户少, 物品多, 时效性较强的场合

ItemCF 适合物品少,用户多,用户兴趣固定持久, 物品更新速度不是太快的场合

2.3建立产品索引图

产品索引的功能为:给定种子产品返回排序后的候选相关产品列表。

  • Swing 算法利用 user-item 二部图的子结构捕获产品间的替代关系。

  • 核心思想:将用户与物品之间的评分信息映射成图模型,通过用户关系来传递商品之间的相似关系。该算法认为,若两个用户共同购买的物品越少,而这两个用户又都购买了物品i和j,则物品i和j的相似性越高。

  • Surprise 算法利用商品分类信息和用户共同购买图上的聚类技术来建模产品之间的组合关系。

  • 核心思想首先在行为相关性中引入连续时间衰减因子,然后引入基于交互数据的聚类方法解决数据稀疏的问题,旨在帮助用户找到互补商品。互补相关性主要从三个层面考虑,类别层面,商品层面和聚类层面。

矩阵分解

可以通过分解协同过滤的共现矩阵(评分矩阵)来得到用户和物品的隐向量

image.png