Day 122 — 推荐系统基础 — 图解
1. 推荐系统架构总览
┌─────────────────────────────────────────────────────────────────┐
│ 推荐系统架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 用户行为 │───▶│ 数据采集 │───▶│ 特征工程 │───▶│ 推荐引擎 │ │
│ │ 数据 │ │ & 存储 │ │ & 处理 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────┬────┘ │
│ │ │
│ ┌─────────▼─────┐ │
│ │ 推荐结果排序 │ │
│ │ & 过滤 │ │
│ └─────────┬─────┘ │
│ │ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ 反馈学习 │◀───│ A/B测试 │◀───│ 展示层 │◀────────┘ │
│ │ & 更新 │ │ & 评估 │ │ (UI/API) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────────┘
2. User-Based CF 工作流程
User-Based 协同过滤
┌─────────────────────────────────────────────┐
│ Step 1: 构建用户-物品评分矩阵 │
│ │
│ 物品1 物品2 物品3 物品4 │
│ 用户A 5 3 4 ? │
│ 用户B 3 1 2 3 │
│ 用户C 4 3 4 3 │
│ 用户D 1 5 5 2 │
└──────────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Step 2: 计算用户相似度 │
│ │
│ 用户A 与 用户C 相似度最高 (都喜欢物品1,3) │
│ │
│ sim(A,B)=0.2 sim(A,C)=0.9 sim(A,D)=0.1 │
└──────────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Step 3: 用邻居评分预测 │
│ │
│ 预测 A 对 物品4 的评分: │
│ = r̄_A + Σ sim(A,v)×(r_v4 - r̄_v) / Σ|sim| │
│ = 4.0 + (0.9×3 + 0.2×3) / (0.9+0.2) │
│ = 4.0 + 2.7/1.1 ≈ 6.45 → 归一化到 5 │
└──────────────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Step 4: 生成推荐列表 │
│ │
│ 用户A 的推荐: 物品4(4.5), 物品5(3.8) │
└─────────────────────────────────────────────┘
3. 矩阵分解原理
评分矩阵 R 分解为两个低维矩阵
┌─────────────────┐ ┌──────┐ ┌──────┐
│ 5 4 0 0 1 3│ │ p11 │ │ q11 │
│ 0 5 4 4 0 0│ │ p21 │ │ q21 │
│ 4 0 5 3 2 0│ ≈ │ p31 │ × │ q31 │ᵀ
│ 3 0 0 5 4 2│ │ p41 │ │ q41 │
│ 0 3 0 0 5 4│ │ p51 │ │ q51 │
│ (m × n) │ └──────┘ └──────┘
└─────────────────┘ (m × k) (k × n)
k << min(m, n) → 降维 + 填补缺失值
预测评分: r̂ᵤᵢ = pᵤ · qᵢ = Σ_k pᵤₖ × qᵢₖ
4. ALS 交替优化过程
ALS (交替最小二乘法) 优化流程
初始化: 随机 P, Q
│
▼
┌────────────┐ ┌────────────┐
│ 固定 Q │────▶│ 优化 P │
│ 用闭式解 │ │ (每个用户 │
│ 求解 P │ │ 独立求解) │
└────────────┘ └─────┬──────┘
│
▼
┌────────────┐ ┌────────────┐
│ 固定 P │────▶│ 优化 Q │
│ 用闭式解 │ │ (每个物品 │
│ 求解 Q │ │ 独立求解) │
└────────────┘ └─────┬──────┘
▲ │
│ ▼
┌────────┴───────┐ ┌──────────┐
│ 检查是否收敛 │◀─│ 计算 RMSE│
│ (RMSE变化 < ε)│ │ │
└────────┬───────┘ └──────────┘
│
未收敛? ──┤── 是 ──▶ 继续交替
│
否
▼
输出 P, Q
5. 冷启动解决方案
冷启动问题与解决方案
┌──────────────┐
│ 新用户 │──────────┐
│ (无历史数据) │ │
└──────────────┘ │
▼
┌─────────────────┐
│ 解决方案: │
├─────────────────┤
│ 1. 收集兴趣标签 │
│ 2. 人口统计信息 │
│ 3. 热门推荐 │
│ 4. Bandit探索 │
└─────────────────┘
┌──────────────┐
│ 新物品 │──────────┐
│ (无交互数据) │ │
└──────────────┘ │
▼
┌─────────────────┐
│ 解决方案: │
├─────────────────┤
│ 1. 内容特征推荐 │
│ 2. 元数据匹配 │
│ 3. 编辑推荐 │
└─────────────────┘
┌──────────────┐
│ 新系统 │──────────┐
│ (无任何数据) │ │
└──────────────┘ │
▼
┌─────────────────┐
│ 解决方案: │
├─────────────────┤
│ 1. 规则推荐 │
│ 2. 人工运营 │
│ 3. 渐进式引入 │
└─────────────────┘
6. 评估指标对比
推荐系统评估指标体系
准确性指标 排序指标 覆盖性指标
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ RMSE │ │ Precision@K │ │ 覆盖率 │
│ (连续评分) │ │ (前K个准确率) │ │ (推荐广度) │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ MAE │ │ Recall@K │ │ 多样性 │
│ (绝对误差) │ │ (前K个召回率) │ │ (差异程度) │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ │ │ NDCG@K │ │ 新颖度 │
│ │ │ (排序质量) │ │ (推荐冷门品) │
└──────────────┘ └──────────────┘ └──────────────┘