推荐系统核心 20% — 结构比模型重要
一句话:推荐系统的效果由架构分层决定,不由单个模型决定。记住「召回 → 粗排 → 精排 → 重排」四段漏斗,以及每段各自的容量约束,剩下的就是填模型。
🎯 这 20% 能解决哪些问题
| 常见困惑 | 本质 | 本页答案 |
|---|
| 有几十万商品,怎么算得过来 | 需要分层漏斗 | 见「四段漏斗」 |
| 协同过滤还要不要学 | 仍是召回主力 | 见「召回四路」 |
| 新用户新商品怎么推荐 | 冷启动问题 | 见「冷启动五招」 |
| 离线 AUC 涨了线上没变化 | 评估与目标不一致 | 见「离线与线上的鸿沟」 |
| 推荐越来越窄 | 反馈循环 | 见「三个偏差坑」 |
一、四段漏斗
graph LR
A["召回<br/>10⁵ → 10³"] --> B["粗排<br/>10³ → 10²"]
B --> C["精排<br/>10² → 10¹"]
C --> D["重排<br/>多样性与规则"]
| 阶段 | 目标 | 模型容量 | 关键约束 |
|---|
| 召回 | 不漏掉可能相关的 | 轻量(双塔、向量检索) | 延迟(毫秒级) |
| 粗排 | 快速筛到百级 | 中等 | 与精排一致性 |
| 精排 | 精确预估点击/转化 | 重(深度交叉) | 特征实时性 |
| 重排 | 多样、去重、业务规则 | 规则/轻模型 | 体验与生态 |
核心矛盾:精排最准但只能算百级候选,所以召回决定天花板——召回没找到的,精排再强也没用。
二、召回四路
| 路线 | 原理 | 优点 | 局限 |
|---|
| 协同过滤(ItemCF/UserCF) | 共现相似 | 稳定、可解释 | 冷启动差 |
| 向量召回(双塔、ANN) | 用户/物品嵌入近邻 | 扩展性好 | 训练与索引需同步 |
| 规则/热门/地理 | 业务规则 | 兜底、稳定大盘 | 个性化弱 |
| 序列召回(SINE、MIND) | 从行为序列生成兴趣向量 | 捕捉短期兴趣 | 依赖行为数据 |
实用配置:多路召回各取 Top-N(如每路 200)合并去重,再用统一模型粗排。多路的目的是覆盖不同兴趣维度,不是互相替代。
三、精排选型
| 模型 | 特点 | 何时用 |
|---|
| LR / GBDT + 人工特征 | 稳定、可解释 | 基线、样本少 |
| Wide&Deep / DeepFM | 记忆 + 泛化 | 通用首选 |
| DIN / DIEN | 注意力建模行为序列 | 用户行为丰富 |
| 双塔 | 可离线算向量 | 大规模召回与粗排 |
| 生成式推荐 | 直接生成候选 | 前沿,需大量数据 |
必做的一件事:精排的预估目标要与业务一致。只优化点击会推标题党,所以要联合建模点击 → 转化 → 留存。
四、冷启动五招
| 手段 | 适用 |
|---|
| 内容特征(标题/图像/类目嵌入) | 新物品 |
| 人口属性 + 注册来源 | 新用户 |
| 热门与地域兜底 | 全冷启动 |
| 探索流量(EE) | 需要数据积累 |
| 迁移学习(跨域兴趣) | 有多业务数据 |
EE(探索-利用)的三种做法:ε-greedy(简单)、Thompson 采样(效果好)、UCB(可解释)。没有探索,新物品永远出不来。
五、离线与线上的鸿沟
| 差异 | 说明 |
|---|
| 目标不同 | 离线优化 AUC,线上看点击/时长/GMV |
| 数据偏差 | 离线数据来自旧策略(只记录了曝光过的) |
| 位置偏差 | 排在前面的天然点击高 |
| 反馈延迟 | 转化可能隔天才发生 |
| 交互效应 | 推荐结果改变用户行为分布 |
缓解手段:逆倾向加权(IPS)、位置特征只在训练用、线上必须 A/B、看长期指标(留存)而非单次点击。
六、三个偏差坑
| 坑 | 表现 | 纠正 |
|---|
| 反馈循环 | 越推越窄,兴趣固化 | 加探索、多样性约束、兴趣打散 |
| 位置偏差 | 模型学会”位置高就好” | 训练时把位置作为特征并在推理置零 |
| 热度马太效应 | 头部越推越热 | 热度惩罚、长尾扶持、新物品流量池 |
七、落地清单
| # | 检查项 |
|---|
| 1 | 四段漏斗是否齐全,各段延迟预算是否明确 |
| 2 | 召回覆盖率(候选里有没有该出现的物品) |
| 3 | 特征实时性:哪些必须秒级、哪些可天级 |
| 4 | 冷启动兜底策略是否可运行 |
| 5 | 线上指标是否含长期指标(留存/复访) |
| 6 | 是否有探索流量与多样性约束 |
📋 一页速查
| 问题 | 答案 |
|---|
| 架构分几段 | 召回/粗排/精排/重排 |
| 决定天花板的是 | 召回 |
| 离线涨线上不涨 | 目标不一致 + 数据偏差 |
| 冷启动靠什么 | 内容特征 + 探索流量 |
| 越推越窄怎么办 | 加探索与多样性约束 |
| 精排必须联合建模 | 点击 → 转化 → 留存 |
🔗 相关链接