离线评估和线上效果对不上,是排序团队最常见的困惑。某资讯推荐项目,离线AUC从0.79提到0.85,上线后人均点击反而降了1.2%。复盘发现6个错位点,逐个说。
错位一:评估集和线上分布不同。离线用随机采样构造评估集,线上请求来自真实流量,热门内容占比高得多。做法是按请求维度采样,每个请求取全部候选,评估集里保留真实的候选分布,而不是随机抽pair。
错位二:只算AUC不看校准。AUC衡量排序能力,不衡量预估值准不准。排序融合时(比如CTR乘客单价),预估偏高会导致高价商品被过度推。加一条校准曲线:把预估分分10桶,看每桶实际CTR与预估均值偏差,偏差超过20%就要做保序回归校准。
错位三:评估指标和业务目标脱节。AUC涨了但多样性下降,用户刷两屏就走了。补两个指标:类目覆盖数(每100次曝光覆盖的类目数)和前10位内容的平均相似度。经验值:类目覆盖数低于8、相似度高于0.7时,人均时长通常下滑。
错位四:训练评估同分布。用同一天数据切训练和验证,特征穿越和过拟合都测不出来。改成时间切分:前25天训练,后5天验证,且验证集最后1天单独看,模拟上线首日效果。
错位五:忽略线上约束。离线排序可以对1000个候选精排,线上延迟预算只有80毫秒。模型加了两层交叉特征,离线AUC涨0.02,线上因超时降级到粗排,效果反而差。评估时把延迟作为硬约束,超过预算的方案直接淘汰。
错位六:单指标决策。NDCG、AUC、校准、多样性四个指标经常互相打架。做法是设主指标加约束:主指标AUC,约束为校准偏差小于15%、类目覆盖数不低于基线90%。满足约束再看主指标,避免顾此失彼。
一个可操作流程:离线评估分三层——第一层看AUC和校准,第二层看多样性与覆盖率,第三层做流量回放模拟线上延迟。三层都过再进灰度,灰度用5%流量跑3天,对比核心指标与护栏指标。
数字参考:离线AUC提升0.01至0.02,线上CTR通常提升0.5%到2%;提升超过0.05而线上无感,基本可以判定评估集有问题。