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

推荐系统排序层:3类特征与5个容易踩的坑

2023年双11前,某电商平台把排序模型的AUC从0.78提升到0.81,转化率涨了4.2%。负责排序层的团队只有6个人,改动的核心不是换模型,而是把特征分成了三类:用户侧(近7天点击品类分布、客单价区间)、物品侧(30天销量、退货率、价格带)、交叉侧(用户对某品类的点击率、加购未购天数)。这三类特征在训练样本里的覆盖率分别要达到92%、98%、85%以上,否则线上打分会出现明显偏差。

特征工程里最常见的错误有5个。第1个是时间穿越:用T+1的销量去预测T日的点击,离线AUC虚高0.05以上,上线后掉点。第2个是ID类特征直接喂进树模型,高基数品类ID导致过拟合,验证集和测试集差距超过8%。第3个是缺失值填0而非填中位数,价格缺失被当成免费商品,排序结果里冒出大量0元SKU。第4个是训练和 Serving 的归一化不一致,离线用min-max,线上忘了同步参数。第5个是特征重要度只看gain不看覆盖率,Top10特征里有3个覆盖率不到40%。

对比一下两版排序策略。A版用LR+人工特征,B版用GBDT+三类特征自动交叉。离线评估A版AUC 0.76、B版0.81;但线上AB实验7天,B版人均点击次数只涨1.8%,GMV涨0.9%。原因在于B版把高客单价商品排得太靠前,点击率上去了,转化率反而降了2.1%。这说明离线AUC涨0.05不等于线上赚钱,排序目标要和业务目标对齐,比如把GMV或转化率作为主指标重新加权样本。

模型评估不能只看AUC。某内容平台2022年做过一次复盘:推荐排序模型AUC 0.83,但用户7日留存下降1.4个百分点。拆开看,NDCG@10只有0.41,头部位置堆了太多相似内容,多样性指标(品类熵)从2.3降到1.6。后来加了MMR去重和探索流量(5%的请求随机插入长尾内容),NDCG没变,留存回升0.9个百分点。评估体系至少要有4层:排序质量(AUC、NDCG)、业务指标(CTR、CVR、GMV)、生态指标(多样性、覆盖率)、长期指标(留存、复访)。

数据统计上有个反直觉的案例。某本地生活App统计“周末下单占比”,全量数据算出是38%,但按城市分层后,一线城市是45%,三线城市只有29%。辛普森悖论出现的原因是三线城市用户基数大但周末活跃度低,把整体拉低了。做排序特征时如果直接用全局统计量,三线城市的周末推荐会偏保守,漏掉约12%的潜在订单。正确做法是按城市等级、时段分别统计,再做贝叶斯平滑,样本量小于1000的格子向全局均值收缩。

概率常识在排序里天天用到。假设某品类历史点击率是3%,一个新商品曝光100次点击2次,朴素估计是2%,但用Beta(1,1)先验做平滑后是(2+1)/(100+2)=2.9%,更接近真实值。另一个常见错误是把“点击率”和“点击概率”混为一谈:CTR是频率估计,排序时用的是预估概率p,两者在样本量大时接近,小样本时差异明显。线上打分要做校准(calibration),某团队发现模型预估p=0.1的样本实际CTR只有0.06,校准后排序结果的AUC没变,但出价和ROI计算准确了15%。

最后给一组可执行的检查清单,按步骤编号。1)确认训练样本时间窗和特征时间窗无重叠,至少留1天gap。2)统计每个特征的覆盖率,低于60%的进观察名单。3)离线评估跑AUC、NDCG@10、多样性三个指标,缺一不可。4)线上AB实验至少7天,样本量按最小可检测效应1%反推,通常每组不少于5万曝光。5)上线后第3天和第14天各看一次校准曲线,偏差超过10%就回滚。这5步做完,排序模型上线翻车的概率能降一半以上。

站群互链

攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
上一篇 AB 测试常见陷阱:分流、显著性与辛普森悖论 下一篇 概率基础在推荐系统中的五个实际用途