站群导航· 游戏攻略 / 礼包码 / 配置 / 换算 / 查询 / 手册
导航菜单
首页 全部文章 留言本

推荐排序里那 0.1 秒:从召回到重排的 6 个坑

凌晨两点半,推荐系统更新完模型,第二天上午 9 点到 11 点的流量高峰里,你发现点击率从 4.2% 掉到 3.6%。排查两小时,问题不在模型,而在召回层:新模型上线后候选集从 800 条缩到 500 条,排序再精细也无米下锅。推荐排序常被当成一个“分数函数”,实际上是召回—粗排—精排—重排四层接力,任何一层抖一下,最终 0.1 秒内的那屏结果就变样。

第一个常见坑是拿曝光日志当训练集却不做位置纠偏。位置 1 的点击率天然比位置 10 高 3 到 5 倍,模型会学成“位置越靠前越好”。做法很土但有效:训练时对每个位置的样本乘一个权重,或者用随机下探的方式在低位置插几条候选,每千次请求插 20 条,持续两周,位置偏差能压下去一半。

粗排阶段最容易踩的是“特征穿越”。某电商 7 月的案例:粗排用了商品近 1 小时的下单量,但特征管道延迟 40 分钟,线上实际拿到的是 20 分钟前的值,离线评估 AUC 0.78,线上下滑到 0.71。纠正办法有两条:特征加工加时间窗校验,即训练样本的时间戳必须早于特征产出时间;以及上线前跑一遍特征一致性对比,抽样 1 万条比对离线与线上取值。

精排阶段的模型评估别只看 AUC。排序是整页的事,AUC 衡量的是单条打分顺序,跟一屏 10 条的组合效果隔了一层。更贴近业务的指标是 NDCG@10 和实际曝光位置的加权点击率。经验上,离线 NDCG@10 提升 1.5 个点,线上人均点击才有 0.3% 到 0.6% 的提升,中间这层损耗主要来自多样性和疲劳度约束。

重排层是“救火队”,也是掉分重灾区。三条硬性打散规则:同一作者最多 2 条、同类目最多 3 条、连续 2 条不能同类型。规则多了会互相打架,顺序很关键——先做硬性过滤再做多样性打散,反过来会出现过滤后凑不满 10 条的情况。去年有团队把打散阈值从 0.6 调到 0.8,曝光多样性上去了,人均时长涨了 4%,但点击率掉了 2.1%,最后按分场景灰度:信息流用 0.8,搜索用 0.6。

冷启动是第 5 个坑。新用户前 3 次请求没有行为,纯靠热门兜底的结果是次留低 5 到 8 个百分点。可用的是上下文信号:时段、机型、网络、地域。实测把“时段+地域”做交叉特征塞进粗排,新用户首日点击率能提 6% 左右,代价是特征存储多 12GB。

最后一个坑是评估口径不统一。离线看 AUC,线上看 CTR,老板看 GMV,三方各说各话。落地做法是建一张指标对照表:离线 NDCG、线上 CTR、人均曝光、人均时长、千次曝光收入,每个模型版本上线前填一遍,跑 7 天再看。表填满 20 个版本之后,你就能看出哪个离线指标最能预测线上收益,比任何一次调参都值。

站群互链

攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
上一篇 每公里成本怎么算(采购比价场景) 下一篇 推荐系统里的数据常识:5个统计陷阱让排序效果虚高30%