当前位置: 首页 > news >正文

【推荐算法】推荐系统核心算法深度解析:协同过滤 Collaborative Filtering

在这里插入图片描述

推荐系统核心算法深度解析:协同过滤

    • 一、协同过滤的算法逻辑
        • 协同过滤的两种实现方式
    • 二、算法原理与数学推导
        • 1. 相似度计算关键公式
        • 2. 矩阵分解(MF)进阶
    • 三、模型评估
        • 1. 准确性指标
        • 2. 排序指标(Top-N推荐)
        • 3. 多样性 & 新颖性
    • 四、应用案例
    • 五、面试常见问题
    • 六、详细优缺点
        • 优点
        • 缺点
    • 七、优化方向
    • 总结

一、协同过滤的算法逻辑

协同过滤的核心思想是利用群体智慧
假设:相似用户对物品有相似偏好,相似物品会被相似用户喜欢。
输入:用户-物品交互矩阵(如评分、点击行为)。
输出:预测用户对未交互物品的偏好。

User-CF
Item-CF
MF
用户行为日志
数据预处理
构建用户-物品矩阵
算法选择
计算用户相似度
计算物品相似度
矩阵分解
预测评分
生成推荐
AB测试
线上服务
用户反馈
协同过滤的两种实现方式

在这里插入图片描述

  1. 基于用户的协同过滤(User-Based CF)
    • 步骤:
      1. 计算用户相似度(如余弦相似度)
      2. 找到目标用户的K个最近邻(相似用户)
      3. 根据邻居的评分加权预测目标用户评分
        r ^ u i = r u ˉ + ∑ v ∈ N ( u ) s i m ( u , v ) ⋅ ( r v i − r v ˉ ) ∑ v ∈ N ( u ) ∣ s i m ( u , v ) ∣ \hat{r}_{ui} = \bar{r_u} + \frac{\sum_{v \in N(u)} sim(u,v) \cdot (r_{vi} - \bar{r_v})}{\sum_{v \in N(u)} |sim(u,v)|} r^ui=ruˉ+vN(u)sim(u,v)vN(u)sim(u,v)(rvirvˉ)
Top-K邻居
相似度>θ
输入用户-物品评分矩阵
计算用户相似度
选择相似度阈值
筛选目标用户的K个最近邻
预测缺失评分
生成推荐列表
输出Top-N推荐
  1. 基于物品的协同过滤(Item-Based CF)
    • 步骤:
      1. 计算物品相似度(如调整余弦相似度)
      2. 根据目标用户历史交互物品,推荐相似物品
        r ^ u i = ∑ j ∈ S ( i ) s i m ( i , j ) ⋅ r u j ∑ j ∈ S ( i ) ∣ s i m ( i , j ) ∣ \hat{r}_{ui} = \frac{\sum_{j \in S(i)} sim(i,j) \cdot r_{uj}}{\sum_{j \in S(i)} |sim(i,j)|} r^ui=jS(i)sim(i,j)jS(i)sim(i,j)ruj
原始评分矩阵
转置矩阵
计算物品相似度
构建物品相似度矩阵
针对目标用户
获取已交互物品集合
计算未交互物品预测分
排序生成推荐

二、算法原理与数学推导

1. 相似度计算关键公式
  • 余弦相似度(用户/物品向量夹角)
    s i m ( u , v ) = r u ⋅ r v ∥ r u ∥ ⋅ ∥ r v ∥ sim(u,v) = \frac{\mathbf{r_u} \cdot \mathbf{r_v}}{\|\mathbf{r_u}\| \cdot \|\mathbf{r_v}\|} sim(u,v)=rurvrurv
    缺点:未考虑评分尺度差异。

  • 皮尔逊相关系数(修正尺度偏差)
    KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at end of input: … \bar{r_v})^2}
    其中 ( I_{uv} ) 是用户 ( u ) 和 ( v ) 共同评分的物品集合。

  • 调整余弦相似度(Item-Based专用)
    s i m ( i , j ) = ∑ u ∈ U i j ( r u i − r u ˉ ) ( r u j − r u ˉ ) ∑ u ∈ U i j ( r u i − r u ˉ ) 2 ∑ u ∈ U i j ( r u j − r u ˉ ) 2 sim(i,j) = \frac{\sum_{u \in U_{ij}}(r_{ui} - \bar{r_u})(r_{uj} - \bar{r_u})}{\sqrt{\sum_{u \in U_{ij}}(r_{ui} - \bar{r_u})^2} \sqrt{\sum_{u \in U_{ij}}(r_{uj} - \bar{r_u})^2}} sim(i,j)=uUij(ruiruˉ)2 uUij(rujruˉ)2 uUij(ruiruˉ)(rujruˉ)
    通过减去用户平均分消除评分偏差。

2. 矩阵分解(MF)进阶

为解决数据稀疏性,引入隐语义模型(如SVD):

  • 目标:将用户-物品矩阵 ( R \in \mathbb{R}^{m \times n} ) 分解为:
    R ≈ P ⋅ Q T , P ∈ R m × k , Q ∈ R n × k R \approx P \cdot Q^T, \quad P \in \mathbb{R}^{m \times k}, \ Q \in \mathbb{R}^{n \times k} RPQT,PRm×k, QRn×k
    其中 ( k \ll m,n ) 为隐因子维度(如主题、风格)。
SGD优化
高维稀疏评分矩阵 R
低维隐因子分解
用户隐因子矩阵 P
物品隐因子矩阵 Q
重建评分矩阵 R_hat
最小化重建误差
更新隐因子
获得稠密预测矩阵
  • 优化目标(最小化损失函数)
    min ⁡ P , Q ∑ ( u , i ) ∈ κ ( r u i − p u T q i ) 2 + λ ( ∥ p u ∥ 2 + ∥ q i ∥ 2 ) \min_{P,Q} \sum_{(u,i) \in \kappa} (r_{ui} - \mathbf{p_u}^T \mathbf{q_i})^2 + \lambda (\|\mathbf{p_u}\|^2 + \|\mathbf{q_i}\|^2) P,Qmin(u,i)κ(ruipuTqi)2+λ(pu2+qi2)
    ( \kappa ) 为已知评分集合,( \lambda ) 为正则化系数。

  • 求解方法:随机梯度下降(SGD)
    p u ← p u + γ ( e u i ⋅ q i − λ p u ) \mathbf{p_u} \leftarrow \mathbf{p_u} + \gamma (e_{ui} \cdot \mathbf{q_i} - \lambda \mathbf{p_u}) pupu+γ(euiqiλpu)
    q i ← q i + γ ( e u i ⋅ p u − λ q i ) \mathbf{q_i} \leftarrow \mathbf{q_i} + \gamma (e_{ui} \cdot \mathbf{p_u} - \lambda \mathbf{q_i}) qiqi+γ(euipuλqi)
    其中 ( e_{ui} = r_{ui} - \mathbf{p_u}^T \mathbf{q_i} ),( \gamma ) 为学习率。

三、模型评估

1. 准确性指标
  • 均方根误差(RMSE)
    R M S E = 1 N ∑ ( u , i ) ( r u i − r ^ u i ) 2 RMSE = \sqrt{\frac{1}{N} \sum_{(u,i)} (r_{ui} - \hat{r}_{ui})^2} RMSE=N1(u,i)(ruir^ui)2
  • 平均绝对误差(MAE)
    M A E = 1 N ∑ ( u , i ) ∣ r u i − r ^ u i ∣ MAE = \frac{1}{N} \sum_{(u,i)} |r_{ui} - \hat{r}_{ui}| MAE=N1(u,i)ruir^ui
2. 排序指标(Top-N推荐)
  • 精确率(Precision@K)
    P r e c i s i o n @ K = 推荐中用户喜欢的物品数 K Precision@K = \frac{\text{推荐中用户喜欢的物品数}}{K} Precision@K=K推荐中用户喜欢的物品数
  • 召回率(Recall@K)
    R e c a l l @ K = 推荐中用户喜欢的物品数 用户喜欢的物品总数 Recall@K = \frac{\text{推荐中用户喜欢的物品数}}{\text{用户喜欢的物品总数}} Recall@K=用户喜欢的物品总数推荐中用户喜欢的物品数
  • NDCG(归一化折损累积增益)
    考虑排序位置权重,对高相关物品在前给予更高分。
3. 多样性 & 新颖性
  • 覆盖率(Coverage)
    C o v e r a g e = ∣ 被推荐过的物品 ∣ ∣ 总物品 ∣ Coverage = \frac{|\text{被推荐过的物品}|}{|\text{总物品}|} Coverage=总物品被推荐过的物品
  • 基尼系数(Gini Index)
    衡量推荐分布均匀性,避免头部效应。

四、应用案例

  1. 亚马逊(Item-Based CF)

    • 应用场景: “购买此商品的顾客也买了”
    • 技术细节: 使用改进的余弦相似度,实时更新物品相似矩阵。
  2. Netflix 推荐大赛

    • 背景:2006年举办,奖金100万美元。
    • 关键发现:
      • 矩阵分解(SVD++)显著优于传统CF
      • 融合时间动态因素(如用户兴趣漂移)提升预测精度
  3. Spotify 音乐推荐

    • 混合模型: CF + 内容特征(音频MFCC特征)
    • 解决冷启动: 新歌曲通过内容特征映射到隐空间。

五、面试常见问题

  1. User-CF 和 Item-CF 如何选择?

    • User-CF 适用于用户数少、物品更新快的场景(如新闻推荐)
    • Item-CF 适用于物品数少、用户行为稳定的场景(如电商)
  2. 如何解决数据稀疏性问题?

    • 矩阵分解(SVD, ALS)
    • 加入隐式反馈(点击、浏览时长)
    • 图神经网络(GNN)聚合高阶邻居信息
  3. 冷启动问题有哪些方案?

    • 用户冷启动:利用人口统计信息/社交关系
    • 物品冷启动:结合内容特征(文本、图像嵌入)
    • 系统冷启动:用非个性化推荐(热门榜)过渡
充足
不足
新用户
收集基本信息
信息完备度
基于内容推荐
热门物品推荐
新物品
提取内容特征
映射到隐空间
相似物品推荐
  1. 相似度计算为何用调整余弦而非普通余弦?
    • : 普通余弦未考虑用户评分偏差(如严苛用户常打低分),调整余弦通过减去用户平均分消除偏差。

六、详细优缺点

优点
  1. 无需领域知识:仅依赖用户行为数据,通用性强。
  2. 可解释性(Item-Based): “因为喜欢A,所以推荐相似B” 符合直觉。
  3. 发现隐式关联:能挖掘非显性特征(如“啤酒与尿布”)。
缺点
  1. 冷启动问题:新用户/物品无行为数据导致无法推荐。
  2. 数据稀疏性:真实场景中99%的矩阵可能为空(如百万用户×十万商品)。
  3. 可扩展性挑战:User-CF计算用户相似度复杂度为 ( O(m^2) ),难以应对大规模数据。
  4. 流行度偏差:倾向于推荐热门物品,降低长尾覆盖率。

七、优化方向

  1. 混合模型

    • CF + 内容过滤(Content-Based) → 缓解冷启动
    • 例:深度学习模型如NeuMF(神经矩阵分解)
  2. 图神经网络(GNN)

    • 将用户-物品交互视为二部图,通过消息传递聚合高阶关系。
  3. 加入上下文信息

    • 时间(用户兴趣漂移)、位置、社交关系等。
  4. 消除偏差

    • 显式建模流行度偏差(如Debiased CF)。

总结

协同过滤作为推荐系统的基石,其核心思想“集体智慧”至今仍被广泛应用。尽管存在稀疏性、冷启动等挑战,但通过矩阵分解、混合模型及图神经网络等技术的演进,CF在现代推荐系统中持续焕发活力。理解其数学本质(如SGD优化、相似度度量)和工程实践(如增量更新、分布式计算),是构建高效推荐系统的关键。

http://www.xdnf.cn/news/866359.html

相关文章:

  • 07 APP 自动化- appium+pytest+allure框架封装
  • RabbitMQ 的异步化、解耦和流量削峰三大核心机制
  • ④Pybullet之Informed RRT*算法介绍及示例
  • 在本地查看服务器上的TensorBoard
  • Git安装与常用命令全攻略
  • Elasticsearch的搜索流程描述
  • 分类与逻辑回归 - 一个完整的guide
  • Git常用命令完全指南:从入门到精通
  • 正则表达式检测文件类型是否为视频或图片
  • 海信IP810N-海思MV320芯片-安卓9-2+16G-免拆优盘卡刷固件包
  • 【Android】RV折叠适配器
  • 基于大模型的结节性甲状腺肿智能诊疗系统技术方案
  • NLP学习路线图(二十三):长短期记忆网络(LSTM)
  • constexpr 是 C++11 引入的关键字
  • PocketFlow 快速入门指南
  • 阿里内推-6月新出HC
  • App 上线后还能加固吗?iOS 应用的动态安全补强方案实战分享(含 Ipa Guard 等工具组合)
  • 数学复习笔记 26
  • 雷卯针对易百纳G610Q-IPC-38E 模组防雷防静电方案
  • 2025年大模型平台落地实践研究报告|附75页PDF文件下载
  • MySQL 索引底层原理剖析:B+ 树结构、索引创建维护与性能优化策略全解读
  • x86 汇编逻辑运算全解析:从【位操作】到实际应用(AND,OR,NOT,XOR,TEST)
  • 缓存控制HTTP标头设置为“无缓存、无存储、必须重新验证”
  • Cursor 工具项目构建指南: Web Vue-Element UI 环境下的 Prompt Rules 约束(new Vue 方式)
  • 杰发科技AC7801——使用内部晶振
  • 极客时间-《搞定音频技术》-学习笔记
  • 大数据学习(128)-数据分析实例
  • Linux开发工具(apt,vim,gcc)
  • Fluence推出“Pointless计划”:五种方式参与RWA算力资产新时代
  • ISO 17387——解读自动驾驶相关标准法规(LCDAS)