← 返回 Day 122 正文

Day 122 · 图解

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       │      │ 新颖度       │
    │              │      │ (排序质量)    │      │ (推荐冷门品)  │
    └──────────────┘      └──────────────┘      └──────────────┘