真实面经题目 · 原创解析
推荐模型离线 AUC 与线上效果不一致时,可能有哪些原因,如何定位和修正?
离线 AUC 与线上效果不一致通常不是单点问题,而是数据分布、样本构造、标签口径、特征一致性、评估指标、候选集、系统链路和实验统计共同造成。回答要先说明 AUC 衡量 P(score_pos > score_neg),不等于线上业务收益;再按数据、模型、评估、服务、实验五层排查,并给出 replay、shadow scoring、切片、A/A、A/B 和监控修正路径。
真实面经题目 · 原创解析
离线 AUC 与线上效果不一致通常不是单点问题,而是数据分布、样本构造、标签口径、特征一致性、评估指标、候选集、系统链路和实验统计共同造成。回答要先说明 AUC 衡量 P(score_pos > score_neg),不等于线上业务收益;再按数据、模型、评估、服务、实验五层排查,并给出 replay、shadow scoring、切片、A/A、A/B 和监控修正路径。
我会先说明 AUC 的含义:AUC 可以理解为随机抽一个正样本和一个负样本,模型给正样本打分更高的概率,即 P(s_pos > s_neg)。它衡量的是 pairwise 排序能力,不直接衡量校准、Top-K 收益、流量分配、长期留存或多目标业务指标。因此离线 AUC 高但线上不涨,可能是评估目标和线上决策不一致,也可能是离线数据没有还原线上分布。 排查我会分几层: 第一是样本和分布。离线训练/验证是否使用随机负采样、是否和线上曝光候选集一致、是否有 position/exposure bias、是否时间切分而不是随机切分、是否存在冷启动和流量漂移。随机负采样可能让负样本过于容易,AUC 虚高;线上面对的是召回后的 hard negatives。 第二是标签口径。点击、有效播放、停留、转化、负反馈是否和线上指标一致;是否有延迟反馈、归因窗口、去重和反作弊差异;训练标签是否包含未来信息或漏标。 第三是特征一致性。离线特征是否 time travel,线上特征是否缺失、默认值、延迟、归一化、hash、字典版本、embedding 版本不一致;是否存在 train-serving skew。可以用同一批线上 request 做离线回放,对比每个 feature 和最终 score。 第四是指标和链路。AUC 可能涨在尾部样本,但线上只展示 Top-K;模型分数未校准会影响融合;线上还有召回、粗排、重排、规则、去重、多样性、探索、频控、延迟 fallback,这些都可能吞掉精排收益。 第五是实验本身。检查 A/A、分桶随机、流量污染、样本量、显著性、guardrail、日志埋点和指标归因。修正上,先对齐离线评估集到线上目标分布,做切片和 counterfactual/replay;修复特征一致性和标签口径;必要时使用 IPS/带权评估、hard negative、时间切分、校准、多目标指标或更贴近 Top-K 的 NDCG/Recall@K;最后用小流量 A/B 验证。
AUC = P(score_positive > score_negative),衡量 pairwise 排序区分能力。它不关心概率是否校准,也不直接关心 Top-1/Top-K、收益、停留时长、多样性、长期满意度或策略约束。线上目标不等于 AUC 时,gap 很常见。
离线负样本如果来自随机未点击曝光,可能比线上候选集里的 hard negatives 简单;如果训练和验证共享相似曝光位置或召回源,也可能虚高。推荐模型评估最好尽量使用线上真实曝光、时间切分、召回后候选集或按线上分布加权。
离线 label 可能是点击,线上看有效消费或转化;离线归因窗口可能更长,线上实验窗口更短;延迟反馈、反作弊、重复曝光、误触过滤都会造成 label mismatch。先把 label definition 和统计 SQL 对齐,再谈模型效果。
常见问题包括离线使用未来特征、线上特征延迟或缺失、默认值不一致、归一化统计不一致、ID mapping/hash 字典版本不一致、embedding 更新不同步。定位要做 feature diff 和 score diff,而不是只看最终 AUC。
AUC 对全局 pairwise 排序敏感,但线上可能只关心前几位、某些人群、某类内容或多目标加权。离线 AUC 小涨可能来自低价值样本;线上收益可能需要看 GAUC、NDCG@K、Recall@K、logloss、校准、分桶 CTR、CVR、停留和负反馈。
精排模型上线后还会经过召回覆盖、粗排截断、重排规则、多样性打散、频控、审核过滤、探索策略、缓存和延迟 fallback。如果新模型只影响很小流量,或线上因为耗时走旧模型 fallback,离线收益不会体现。
线上不一致也可能来自实验设计:A/A 不通过、随机分桶不均、用户串桶、样本量不足、指标延迟、埋点丢失、显著性不足或外部活动干扰。要先证明实验系统能测到已知效果,再判断模型无效。
推荐顺序是:复现离线结果;在最近线上日志上 backtest;用线上 request 做 shadow scoring;逐项 diff 特征和 score;按场景、召回源、位置、人群、新老用户、内容类型切片;检查线上链路命中率、延迟和 fallback;最后做 A/A 和小流量 A/B。
修正包括对齐训练/验证样本到线上分布,使用时间切分和 hard negative,做 IPS 或曝光倾向加权,修复标签和特征口径,做概率校准,引入更贴近 Top-K 和业务目标的指标,调整多目标融合,并建立数据/特征/分数漂移监控。
随机负采样可能采到大量容易区分的未曝光或弱相关负样本,使模型在离线上很容易把正样本排到负样本前,AUC 虚高。更合理的做法是从真实曝光未点击、同召回池、同位置或 hard negative 中采样,并用曝光倾向或业务分布做重加权。
先看 CTR 所在 Top-K、位置和人群切片是否对应 AUC 提升区域;如果 AUC 涨在非关键样本上,说明指标不匹配。再做线上 request 的 shadow scoring 和 feature diff,如果离线、线上同样样本得分不一致,就优先排查 train-serving skew。
记录线上请求的候选、特征、模型版本和线上得分,在离线环境用同一模型重新打分,比较 score、排序和特征值差异。要按特征、样本、人群、召回源和时间切片定位,并确保 shadow 不影响线上排序结果。
说明收益集中在低流量或低商业价值人群,平均线上指标可能被高活用户稀释。可以按用户活跃度分层评估业务价值,决定是否做分人群模型、重排权重调整,或把优化目标转向高价值人群。
当业务关注列表前几位排序时,NDCG@K、Recall@K、MRR 或 HitRate 更贴近体验;当不同用户样本量差异大时 GAUC 更稳;当概率用于融合、阈值或预估收益时 logloss、Brier 和校准指标要补充 AUC。