AI 第三章 模型评估与上线(AI-21 ~ AI-28)
AI-21. 全猜“没病”准确率 99%,这模型能上线吗(评估指标)
【考察内容】评估指标是 ML 面试第一必考
【题目】疾病筛查模型:患病率 1%,模型把所有人都预测为“健康”,准确率 99%——业务方却说这模型没用。为什么?精确率/召回率/F1/AUC 各自定义是什么?这个场景该看什么指标?
【参考答案】
概念:
- 准确率 Accuracy:(TP+TN)/总样本——类别平衡时可用,不平衡时虚高(99% 负样本,全猜负也有 99%);
- 精确率 Precision:预测为正中真正为正的比例(查准——误报少);
- 召回率 Recall:真正的正中被找出的比例(查全——漏报少);
- F1:P 与 R 的调和平均(2PR/(P+R))——同时关注查准与查全时的综合指标;
- AUC:ROC 曲线下面积=随机正样本排在负样本前的概率(排序能力)——与阈值无关、取值不随类先验漂移(随机基线恒 0.5),但极端不平衡下它的置信区间更宽、也不如 PR-AUC 敏感(实测 1:999 时随机分数 ROC-AUC=0.506 而 PR-AUC=0.001),衡量“模型把正样本排前面的能力”;
使用场景:
- 不平衡/欺诈/疾病:F1/PR-AUC/Recall@阈值(关注少数类);
- 排序任务(推荐/广告 CTR):AUC/GAUC(衡量排序能力,不依赖阈值);
- 阈值选择:按业务权衡(风控宁可误报(高召回低阈值),营销宁可精准(高精确高阈值));
工程细节:AUC 只看排序不看绝对分数(线上阈值另定);类别极度不平衡时 PR-AUC 比 ROC-AUC 更敏感;
常犯错误:不平衡任务报准确率(自欺);不同模型只比 AUC 不看业务指标。
关键公式(补全): Accuracy=(TP+TN)/(TP+TN+FP+FN);Precision=TP/(TP+FP);Recall=TP/(TP+FN);F1=2PR/(P+R);Fβ=(1+β²)PR/(β²P+R)(β>1 偏召回);AUC=ROC 下面积,随机≈0.5。
线上-离线差异: 离线选阈值基于历史分布;线上患病率/欺诈率变化会让 Precision 漂移,需按监控重调阈值。
【原理溯源】
- 为什么准确率在 1% 患病率下无意义? 全判健康已有 99%。指标被多数类淹没,完全不反映“抓病人”的能力。
- P/R 为何是一对权衡? 降低阈值:抓得全(R↑)但误报多(P↓);抬高阈值:误报少(P↑)但漏诊多(R↓)。F1 取调和平均,惩罚极端偏科。
- AUC 的概率含义是什么? 随机取一正一负,模型给正样本更高分的概率。所以 AUC 衡量的是排序能力,与阈值无关。
- 为何极端不平衡时 PR-AUC 更敏感? ROC 的 FPR 分母是海量负样本,即使误报很多,FPR 也可能很小。PR 曲线直接看正类,更能暴露问题。
【选型判断树】
该看什么指标?
1. 类别平衡?
├─ 是 → Accuracy 可用(仍建议看 F1/AUC)
└─ 否 → 禁用 Accuracy,用 F1/PR-AUC
2. 任务性质
├─ 分类阈值决策 → F1 / Recall@阈值 / 业务成本
└─ 排序(推荐/广告)→ AUC / GAUC
3. 代价不对称
├─ 漏报贵(疾病/风控)→ 主看 Recall,阈值调低
└─ 误报贵(营销)→ 主看 Precision
4. 最终裁判
└─ 线上 A/B 业务指标【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “1% 患病率下 99% 准确率是自欺,全猜负也一样” |
| 0:30–2:00 | 四指标 | Accuracy/P/R/F1 定义与权衡 |
| 2:00–3:30 | AUC | 排序能力、与阈值无关 |
| 3:30–4:30 | 场景选型 | 不平衡→F1/PR;排序→AUC |
| 4:30–5:00 | 收尾 | “指标要和业务代价对齐” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| AUC 0.5 | 随机猜测 | 下限 |
| AUC 0.7+ | 通常可用 | 任务相关 |
| AUC 可疑分档 | >0.95 警惕、>0.98 默认查泄漏 | 见 AI-11/AI-21,同一口径 |
| PR-AUC 随机基线 | ≈ 正样本率 | 极端不平衡更敏感 |
| F1 | 2PR/(P+R) | 调和平均 |
【追问链】(三层)
L1|“为什么不平衡时准确率不可信?” → 多数类主导,全猜多数类也能高准确率,但少数类全漏。
L2|“AUC 0.5 代表什么?” → 随机猜测。0.95 以上要警惕泄漏、0.98 以上默认按疑似泄漏查(与本题【关键数字】、AI-01、AI-11 同一口径);0.7~0.95 属可用区间,低于 0.7 先看欠拟合。
L3|“疾病筛查你主看什么?” → Recall(不漏诊)优先,PR-AUC 看整体;阈值按“可接受的误诊率”选点。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道准确率不够,要说精确率召回率 |
| 80 分 | 四指标定义清楚;知道 AUC 是排序能力 |
| 95 分 | 讲清 P/R 权衡与调和平均;PR-AUC 为何更敏感;按业务代价选指标与阈值 |
【关联题】
- 同一知识簇: AI-01(不平衡)、AI-26(阈值)、AI-27(多分类 Macro-F1)
- 评估衔接: AI-25(离线评估)、AI-22(A/B)
【自测】
- 患病率 1%,全预测健康,准确率多少?能用吗? 参考答案: 99%,不能用——完全没抓到病人。
- AUC 衡量什么? 参考答案: 排序能力:随机正样本排在负样本前的概率。
- 风控为什么常压低阈值? 参考答案: 漏报代价大,压低阈值提高召回,接受更多误报。
AI-22. 新模型上线前,怎么证明它真的更好(A/B 实验)
【考察内容】A/B 测试是算法上线必考题
【题目】新排序模型要上线,你负责设计 A/B 实验。怎么分流才公平(随机、分层)?样本量怎么定?实验跑多久?看哪些指标(主指标+护栏指标)?怎么判断结果显著(避免“看着涨了其实不显著”)?
【参考答案】
实验假设与指标:明确主指标(CTR/转化率)+护栏指标(延迟、坏样本率——防止“指标涨但体验崩”);口径先定(统计口径、埋点);
分流设计:
- 随机分流:用户/请求级随机,保证实验组与对照组特征分布一致(同质);
- 正交分层:多个实验并行时用分层分流(每层独立哈希),避免互相污染;
- 样本量计算:基于基线指标与最小可检测提升(功效分析),保证统计显著性;
执行:
- 同时进行(不能先跑 A 再跑 B——时间因素污染);
- 单一变量(只改模型,其他不动);
- 流量占比(如 10% 实验 vs 10% 对照,其余稳定);
- 最小化干扰:用户两次请求可能落到不同组——按用户分流保证同一用户体验一致;
分析:
- 显著性检验(t 检验/卡方,p<0.05)、置信区间;
- SRM 检查(分流比例是否失真:分流不均匀=实验污染);
- 看分段/分群(新老用户、渠道)差异(异质性);
- 长期指标(留存)不能只看短期;
决策:显著且护栏未恶化→全量;不显著→迭代;负向→回滚;注意多重比较(多个指标同时看会提升假阳性,需校正)。
关键公式: 两比例 z 检验;最小样本量近似 n≈(z_{1-α/2}+z_{1-β})²·(p1(1-p1)+p2(1-p2))/δ²。观察周期至少覆盖周内周期性。
排查步骤: 预注册指标与停止规则 → 随机分流(按用户/设备)→ SRM 检验 → 主指标+护栏指标 → 看异质性。线上-离线:离线回测不能替代 AB;发布后还要盯长期留存。
【原理溯源】
- 为什么要随机分流? 随机保证两组在未观测变量上同质,组间差异才能归因于“处理”(新模型)。
- 为什么必须同时跑、单一变量? 时间因素(节假日、运营活动)会污染先后对比;多变量改动无法归因。
- SRM 为什么是第一检查? 分流比例失真意味着实验被污染(丢包、重定向 bug),后续所有显著性分析都不可信。
- 为什么“看着涨了”常常不显著? 小样本下随机波动可造成几个点的“提升”。必须做假设检验,看 p 值与置信区间,不能只看点估计。
【选型判断树】
A/B 怎么设计?
1. 分流单位
├─ 用户体验要一致 → 按用户分流
└─ 请求级可独立 → 按请求
2. 指标
├─ 主指标 1 个 + 护栏若干
└─ 先定口径与埋点
3. 样本量与时长
└─ 功效分析反推;至少覆盖完整业务周期
4. 分析前
├─ 先查 SRM
└─ 再显著性;分群看异质性
5. 决策
└─ 显著 + 护栏OK → 全量;否则迭代/回滚【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “先定假设与主/护栏指标,再谈分流” |
| 0:30–2:00 | 分流 | 随机、正交分层、按用户 |
| 2:00–3:30 | 执行 | 同期、单变量、样本量 |
| 3:30–4:30 | 分析 | SRM、显著性、分群、长期 |
| 4:30–5:00 | 收尾 | “点估计不算数,显著+护栏才决策” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| 显著性水平 | α=0.05 | 常规 |
| 统计功效 | 80% | 1-β |
| 实验流量 | 各 5%–10% | 视基数 |
| 最短时长 | 覆盖 1 个完整周期(周) | 防周期偏差 |
| SRM | 先查比例失真 | 第一步 |
【追问链】(三层)
L1|“样本量怎么算?” → 由基线转化率、期望最小提升、α=0.05、功效 80% 反推。
L2|“为什么按用户分流而不是请求?” → 同一用户多次请求若跨组,体验“抽风”,且行为相关破坏独立性假设。
L3|“多个指标一起看有什么问题?” → 多重比较提升假阳性。需要 Bonferroni 等校正,或预先注册主指标。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道要分流对比 |
| 80 分 | 主+护栏指标;显著性检验;同期单变量 |
| 95 分 | SRM 第一检查;正交分层;功效分析;分群异质性;长期指标与多重比较 |
【关联题】
- 同一知识簇: AI-23(灰度)、AI-25(离线评估)、AI-24(监控)
- 延伸: AI-51(多样性护栏)
【自测】
- 什么是护栏指标? 参考答案: 防止主指标涨但体验/性能恶化的约束指标,如延迟、投诉率。
- SRM 是什么?为什么要先查? 参考答案: 样本比例失衡检查;分流被污染则后续分析全不可信。
- 为什么不能先跑旧模型一周再跑新模型一周? 参考答案: 时间因素污染,无法归因。必须同期随机对比。
AI-23. 新模型不敢直接全量,怎么安全放量(模型灰度)
【考察内容】模型灰度是算法工程化必考题
【题目】新推荐模型离线指标更好,但谁也不敢直接全量(怕线上翻车)。从影子发布、小流量 A/B、逐步放量到全量的流程怎么走?每个阶段的通过标准是什么?怎么做到秒级回滚?
【参考答案】
灰度流程(与工程灰度同思想+算法特有细节):
- 离线验证:离线指标(AUC/GAUC)通过 + 业务规则检查(异常预测率、分布检查);
- 影子发布(Shadow):新模型并行运行,只记录预测结果与真实结果对比,不干预线上(验证在线推理与离线一致、性能达标);
- 小流量 A/B(1%~5%):与线上模型 A/B,看主指标+护栏指标;
- 逐步放量(1%→5%→20%→50%→100%):每阶段卡点按档位分两套(否则 1% 档永远「不显著」,只能拍脑袋放行):1%~5% 小流量档只卡工程护栏(P99、错误率、异常日志、特征缺失率、打分分布漂移),业务指标显著性卡点从 20% 档起;小流量起点 1%、首档不越过 5%;
- 全量:稳定后全量,保留回滚预案(一键切回旧模型);
算法灰度特有要点:
- 回滚要快:模型回滚=切换模型版本(秒级,配置化,不像代码回滚);
- 监控推理延迟(模型复杂可能拖慢接口)、显存/资源(新模型资源消耗);
- 特征/样本一致性:灰度期同时监控特征缺失率(新模型可能依赖新特征);
- 冷启动/新鲜度:新模型对长尾物品的预测分布对比(防止“全部推热门”的隐性退化);
决策依据:主指标显著正向+护栏无恶化+分段无负向(新老用户都 OK)→ 全量;
模型版本管理:模型注册表(版本、特征、数据、指标基线),回滚到任意历史版本。
关键公式/策略: 放量阶梯 1%→5%→20%→50%→100%;每档观察窗口覆盖高峰时段。最小可检提升(MDE)要先算再排期:MDE≈2.8×SE,SE=√(2p(1−p)/n);以日曝光 1e8、基线 CTR 5%、1% 档两组对半(n=5e5/组)为例,跑满 1 天也只能检出约 +2.4% 的相对提升,CTR 降到 1% 时约 +5.7%;要检 1% 相对提升得把单组样本放大到千万级(≈20%~50% 档跑数天)。转化类指标按「转化事件数」计,不按会话数。失败自动回滚条件:错误率/核心指标劣化超阈值。
排查步骤: 影子打分(shadow)→ 小流量 AB → 扩量。线上-离线:灰度期流量特征可能非代表(如先放内部用户),解读要谨慎。
【原理溯源】
- 为什么离线过了还要影子发布? 离线验证的是模型效果;影子验证的是在线推理正确性与性能(特征是否齐、延迟是否达标、数值是否与离线一致)。两者解决不同问题。
- 为什么小流量先于放量? 把爆炸半径控制在 1%–5%。若 Skew/bug 存在,伤害有限,且能快速发现。
- 算法回滚为何可以秒级? 模型是配置+文件,切换版本即可,不需重发代码。这是模型平台化的核心价值。
- 为什么要盯“预测分布”而不只盯 CTR? 新模型可能“全推热门”让短期 CTR 看似不掉,但多样性/长尾曝光恶化,长期生态受损。分布监控能发现隐性退化。
【选型判断树】
新模型怎么安全上线?
1. 离线
├─ 指标+分布检查通过 → 影子
└─ 不过 → 停止
2. 影子
├─ 在线延迟/一致性 OK → 小流量 A/B
└─ 不 OK → 修工程
3. A/B
├─ 1%~5% 档:只卡工程护栏(错误率/P99/分布);20% 以上档才卡显著性 → 逐步放量
└─ 否则迭代
4. 放量
└─ 每档卡点;一键回滚预案【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “离线→影子→小流量→逐步放量→全量,卡点放行” |
| 0:30–2:00 | 影子发布 | 双跑不干预,验工程 |
| 2:00–3:30 | A/B 与放量 | 卡点、护栏、分段 |
| 3:30–4:30 | 回滚与监控 | 秒级切版本;延迟/分布/特征缺失 |
| 4:30–5:00 | 收尾 | “模型注册表+一键回滚是安全网” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| 影子时长 | 数小时–1 天 | 覆盖主流量 |
| 小流量 | 1%–5% | 控爆炸半径;该档只卡工程护栏,业务显著性卡点从 20% 档起 |
| 放量阶梯 | 1%→5%→20%→50%→100% | 每档观察窗口覆盖高峰时段 |
| 回滚时间 | 秒级 | 配置切换 |
| P99 延迟 | 不高于旧模型 SLA | 硬护栏 |
【追问链】(三层)
L1|“影子发布是什么?” → 双跑不干预线上,用于验证在线推理正确性与性能,无业务风险。
L2|“灰度期发现新模型延迟涨了怎么办?” → 卡住放量,先做量化/蒸馏/批处理优化(见 AI-28),达标再继续。
L3|“怎么防止‘CTR 没掉但生态恶化’?” → 监控预测分布、类目熵、长尾曝光占比;作为护栏指标。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道要小流量灰度 |
| 80 分 | 影子→A/B→放量全流程;一键回滚 |
| 95 分 | 影子与 A/B 解决不同问题;分布护栏;特征缺失监控;模型注册表 |
【关联题】
- 同一知识簇: AI-22(A/B)、AI-24(监控)、AI-28(推理优化)
- 工程衔接: AI-05(Skew)
【自测】
- 影子发布验证什么? 参考答案: 在线推理正确性与性能,不看业务效果。
- 为什么模型回滚可以秒级? 参考答案: 切换模型版本配置,无需代码发布。
- 灰度要盯哪些非 CTR 指标? 参考答案: 延迟、特征缺失率、预测分布/多样性。
AI-24. 模型上线三个月后悄悄变差,怎么提前发现(模型监控)
【考察内容】模型监控是算法工程高频题
【题目】模型上线时效果很好,三个月后业务指标悄悄下滑,等发现时已损失不小。怎么建立模型监控体系(特征漂移 PSI、预测分布、业务指标、性能)?漂移检测指标怎么用?发现漂移后怎么办(重训/回滚)?
【参考答案】
监控分层:
- 数据监控:特征分布漂移(PSI)、缺失率、新值出现率;标签分布(正样本率变化);
- 模型输出监控:预测分数分布(均值/分位数漂移)、AUC 在线估计(有标注回流时)、Top 结果分布;
- 业务指标监控:CTR/转化率/收入/用户体验(投诉、跳出)——最终裁判;
- 性能监控:推理延迟(P99)、QPS、资源(CPU/显存);
漂移检测方法:
- PSI(群体稳定性指标):特征/分数分布偏移,>0.1 轻度、>0.2 需关注;
- KS 检验/卡方检验:分布差异显著性;
- 数据时效性:模型训练数据 vs 线上数据的“时间差”(新鲜度);
告警与应对:
- 阈值告警(PSI>0.2、CTR 环比下跌 X%)→ 触发重训(定期重训+漂移触发重训);
- 分布漂移严重时:回滚到稳定模型→排查原因(外部环境/策略变化)→ 用新数据重训;
- 模型“偷懒”监控:预测分布退化(全推热门)——监控多样性指标;
定期重训:按数据量/时间(如每天/每周增量训练),版本对比(新模型 vs 线上模型 shadow 评估)。
关键公式: PSI=Σ(aᵢ−eᵢ)·ln(aᵢ/eᵢ),aᵢ、eᵢ 是第 i 箱的占比(0–1 小数);若代百分数(0–100)会把 PSI 整体放大 100 倍,与 0.1/0.2 阈值不匹配;KS 用于分数分布与排序稳定;特征漂移监控均值/缺失率。
排查步骤: 特征分布 → 分数分布 → 业务指标 → 样本回流延迟 → 模型版本。线上-离线:监控系统本身要在生产真实流量上算,而不是离线日志抽样失真。
【原理溯源】
- 为什么要四层监控? 只看业务指标:发现晚、归因难。数据漂移是先导信号,能在业务变差前预警;输出分布暴露模型行为异常;性能监控保 SLA。
- PSI 的直觉是什么? 把特征/分数分箱,比较“训练分布”与“线上分布”各箱占比差异。差异大说明模型面对的数据不再是它学过的。
- 概念漂移 vs 数据漂移? 数据漂移:P(X) 变了;概念漂移:P(Y|X) 变了(规则变了)。后者更隐蔽,需要标签回流才能确认。
- 为什么“定期重训”还不够? 世界变化不定期。漂移触发重训能把响应时间从“周”压到“天/小时”。
【选型判断树】
模型监控怎么建?
1. 四层都要
├─ 数据(PSI/缺失/新值)
├─ 输出(分数分布/多样性)
├─ 业务(CTR/转化/投诉)
└─ 性能(P99/QPS/资源)
2. 告警
├─ PSI>0.2 → 关注/重训
└─ 业务环比大跌 → 回滚+归因
3. 重训策略
├─ 定时(天/周)
└─ 漂移触发
4. 标签回流
└─ 在线 AUC 估计(延迟标注)【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “只看业务指标发现太晚,要数据/输出/业务/性能四层” |
| 0:30–2:00 | 四层监控 | 各看什么、为什么 |
| 2:00–3:30 | 漂移检测 | PSI 阈值与公式直觉 |
| 3:30–4:30 | 应对 | 定时重训+漂移触发;严重先回滚 |
| 4:30–5:00 | 收尾 | “先导信号在数据层,最终裁判在业务层” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| PSI | >0.1 轻度,>0.2 需处理 | 经验阈值 |
| 重训周期 | 天/周 | 视漂移速度 |
| 标签回流延迟 | 小时–天 | 决定在线 AUC 可行性 |
| 分数分布 | 看均值/分位数漂移 | 输出监控 |
| 多样性 | 类目熵/作者覆盖 | 防“偷懒” |
【追问链】(三层)
L1|“PSI 怎么算?” → 分箱后对比两分布各箱占比,(占比差)×ln(占比比) 求和。
L2|“什么时候重训?” → 定时(天/周)+ 数据量累积 + 漂移告警触发。
L3|“概念漂移怎么发现?” → 需要标签回流:在线估计 AUC/校准;或人工抽检。数据漂移只能提示风险,不能证明概念变了。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道要看业务指标 |
| 80 分 | 四层监控;PSI;定时重训 |
| 95 分 | 数据漂移 vs 概念漂移;先导 vs 最终裁判;多样性护栏;漂移触发重训闭环 |
【关联题】
- 同一知识簇: AI-05(漂移)、AI-22(A/B)、AI-23(灰度)
- 工程衔接: AI-18(特征一致性)
【自测】
- PSI 阈值经验值? 参考答案: >0.1 轻度,>0.2 通常需要干预。
- 只监控业务指标有什么问题? 参考答案: 发现晚、难归因;数据漂移可先导预警。
- 数据漂移和概念漂移的区别? 参考答案: 前者 P(X) 变,后者 P(Y|X) 变;后者需标签回流确认。
AI-25. 精排模型离线 AUC 涨了 0.01,能说明变好了吗(离线评估)
【考察内容】推荐评估是算法岗高频题
【题目】精排模型迭代后离线 AUC 涨了 0.01,算法同学说“有效果”。离线评估到底该看哪些指标(AUC/GAUC/LogLoss/NDCG)?GAUC 和 AUC 差在哪、为什么推荐场景更看重 GAUC?离线指标和线上效果不一致怎么办?
【参考答案】
离线指标:
- AUC/GAUC:GAUC=按用户分组的 AUC 加权平均(消除用户差异,比全局 AUC 更能反映个性化排序质量——推荐场景用 GAUC);但 GAUC 的口径必须先说清,否则 +0.01 未必是模型收益:单个用户组内要同时有正样本和负样本才存在 AUC,「整组无点击」的用户会被静默丢弃,于是 GAUC 实际只在「已有点击的人群」上计算——题干想优化的曝光未点击人群恰好落在指标之外。要声明:权重按曝光数还是点击数、被丢弃的组占比多少,以及新旧模型对比必须固定同一组用户集合(组集合变化本身就能造出 0.01 的差);
- LogLoss/交叉熵:概率校准质量(预测是否准,不只是排序对);
- 排序指标:NDCG/MAP(列表质量,位置加权)、Precision@K/Recall@K(TopK 命中);
- 校准度:预测 CTR vs 实际 CTR 的比值(校准曲线);
离线评估要点:
- 按时间切分(防时间泄漏,见 AI-10);
- 样本来自线上日志(曝光样本,注意选择偏差);
- 只看离线 AUC 不够:AUC 高不代表业务好(A/B 是最终标准);
线上指标:CTR、CVR、GMV、时长、留存(业务指标);GAUC 线上对照(A/B 组排序质量差);
对应关系:离线 AUC/GAUC 选模型,线上 A/B 定胜负——离线是筛选器,线上是裁判;
注意:离线指标与线上指标可能不一致(特征 skew、分布差异),以线上为准。
关键公式: ΔAUC=0.01 是否显著与测试样本量有关;可做 DeLong 检验/自助法置信区间。业务上还要看 GAUC/分桶 CTR 提升。
排查步骤: 置信区间 → 分用户群看是否稳定 → 在线 AB。线上-离线:小离线涨幅常被线上噪声淹没;排序模型还要考虑打分 RT/特征成本。
【原理溯源】
- 为什么全局 AUC 会骗人? 推荐是个性化任务,用户间正负比例差异巨大。高活跃用户贡献大量样本,全局 AUC 被他们主导;一个“只对活跃用户排序变好”的模型,全局 AUC 可能涨,但大多数用户体验没变。
- GAUC 如何修正? 按用户分组算 AUC,再按曝光加权平均——组内须同时有正负样本,整组无点击的用户会被静默丢弃,所以 GAUC 实际只在「已有点击的人群」上计算,不是真的「每个用户」;对比新旧模型必须固定同一组用户集合,更贴近“个性化”本质。
- AUC 涨 0.01 为什么常常线上无效? ① 统计波动(需显著性检验);② 涨在冷门用户/位置,业务权重低;③ Skew/泄漏导致离线虚高;④ AUC 不看校准,业务阈值决策可能变差。
- 为什么离线是筛选器不是裁判? 离线样本来自历史策略曝光(选择偏差),无法评估探索内容与真实反馈循环。最终必须 A/B。
【选型判断树】
离线评估看什么?
1. 排序质量
├─ 推荐个性化 → GAUC(主)
└─ 全局排序任务 → AUC
2. 概率质量
└─ 要做阈值/出价 → LogLoss + 校准曲线
3. 列表质量
└─ TopK 展示 → NDCG / Precision@K
4. 切分
└─ 严格按时间;样本注意曝光偏差
5. 最终
└─ 线上 A/B 定胜负【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “AUC+0.01 不够,要看 GAUC/LogLoss,最终线上裁” |
| 0:30–2:00 | 指标族 | AUC/GAUC/LogLoss/NDCG |
| 2:00–3:30 | GAUC 原理 | 按用户分组消除活跃用户主导 |
| 3:30–4:30 | 离线局限 | 曝光偏差、Skew、不看校准 |
| 4:30–5:00 | 收尾 | “离线筛选,线上裁判” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| AUC 提升 | +0.005~0.01 常落在噪声边缘 | 要看正样本量:约 1k 正/99k 负时 SE(AUC)≈0.007(0.01 刚够看),正样本上万则 SE≈0.002(0.01 已≈5SE) |
| GAUC | 推荐主排序指标 | 按用户加权 |
| LogLoss | 看校准 | 出价/阈值敏感 |
| NDCG@K | K=10/20 | 列表质量 |
| 时间切分 | 必做 | 防泄漏 |
【追问链】(三层)
L1|“GAUC 为什么更合适?” → 推荐是个性化任务,用户间正负样本比例差异大,全局 AUC 会被高活跃用户主导。
L2|“离线涨了线上跌了,先查什么?” → 先查 Skew(特征回放)与泄漏,再看分群(是否只涨冷门),最后看统计显著性。
L3|“什么时候必须看 LogLoss?” → 模型输出要当概率用(阈值决策、出价、校准)时。只排序可主看 GAUC。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道看 AUC |
| 80 分 | 会提 GAUC、LogLoss、NDCG;知道离线要 A/B 验证 |
| 95 分 | 讲清 GAUC 消除活跃用户主导;AUC+0.01 的多种无效原因;曝光偏差;校准场景 |
【关联题】
- 同一知识簇: AI-21(评估指标)、AI-22(A/B)、AI-10(时序切分)
- 工程衔接: AI-05(Skew)、AI-18
【自测】
- GAUC 和 AUC 核心区别? 参考答案: GAUC 按用户分组加权,消除用户间差异,更贴个性化。
- 离线评估为什么可能高估? 参考答案: 曝光选择偏差、时间泄漏、Skew、不检验显著性。
- 什么时候看 LogLoss? 参考答案: 输出要当概率用(阈值/出价/校准)时。
AI-26. 模型输出 0.8 分的用户算不算风险用户(阈值选择)
【考察内容】模型决策化
【题目】风控模型输出 0~1 的风险分,业务上得定“多少分以上拦截”。默认 0.5 合适吗?风控(宁可多拦)和营销(宁可精准)阈值取向有何不同?怎么用 PR 曲线和业务成本选阈值?
【参考答案】
问题:默认 0.5 不总是最优(正负不平衡/代价不对称时需调整);
决策依据(代价敏感):
- 业务代价:FP 与 FN 的成本——风控(误报=打扰用户、漏报=损失,通常宁可多误报,即降低阈值提高召回)与营销(多发券有成本、漏发丢机会)方向相反;
- PR 曲线:画出不同阈值下 P/R 曲线,按业务要求选点(要求召回 90%→找对应阈值);
- 成本函数:最优点=最小化总代价(C_FP×FP + C_FN×FN);
- 基线对比:与随机/现有规则对比提升是否显著;
校准与验证:阈值要用验证集选(不能在测试集上选,会过拟合);线上阈值可配置(AB 调整);
特殊情况:
- 不平衡+代价不对称:先重采样/加权(见 AI-01),再调阈值;
- 分数分布漂移后阈值要重调(监控校准);
工程:阈值作为配置(模型平台支持热更新阈值,不用重训模型)。
关键公式: 阈值选择:最大化 Fβ 或满足 Precision≥P0 下最大化 Recall;期望代价 Cost=c_FN·FN+c_FP·FP。校准:Platt/Isotonic。
排查步骤: 分数分布 → PR 曲线选点 → 名单容量约束 → 人工审核带宽 → 上线后按反馈重训阈值。线上-离线:分数未校准时 0.8 不代表 80% 概率。
【原理溯源】
- 为什么 0.5 默认经常错? 0.5 假设正负均衡且 FP/FN 代价相等。风控漏报代价远大于误报,应对齐“总代价最小”而不是“0.5 分界”。
- PR 曲线如何映射业务? 业务说“漏报不能超过 10%”,就是要求 Recall≥0.9,对应曲线上一个点和一个阈值。把业务语言翻译成阈值。
- 为什么阈值要在验证集选? 在测试集上调阈值=过拟合测试集,最终指标虚高。验证集选、测试集评。
- 为什么阈值要可热更新? 分数分布会漂移(AI-24),阈值需跟着调。热更新免去重训,响应快。
【选型判断树】
阈值怎么定?
1. 代价
├─ 漏报贵(风控/疾病)→ 压低阈值保 Recall
└─ 误报贵(营销)→ 抬高阈值保 Precision
2. 曲线
└─ PR 曲线上按业务约束选点
3. 成本
└─ 最小化 C_FP*FP + C_FN*FN
4. 工程
├─ 验证集选阈值
└─ 线上可配置热更新;漂移后重调【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “0.5 不是真理,阈值应对齐业务代价” |
| 0:30–2:00 | 代价敏感 | 风控 vs 营销取向相反 |
| 2:00–3:30 | PR 曲线选点 | 业务约束→阈值 |
| 3:30–4:30 | 工程 | 验证集选;热更新;漂移重调 |
| 4:30–5:00 | 收尾 | “阈值是产品决策,不是模型默认值” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| 默认阈值 | 0.5 仅在平衡+等代价 | 很少成立 |
| 风控召回 | 常要求 90%+ | 看业务 |
| 阈值更新 | 漂移后重调 | 与监控联动 |
| 成本比 | C_FN/C_FP 决定阈值方向 | 业务给定 |
| 选阈值数据 | 验证集 | 禁用测试集 |
【追问链】(三层)
L1|“阈值调高召回变好还是变差?” → 阈值高→更严格→精确率升、召回率降(反向)。
L2|“在测试集上调了阈值,有什么问题?” → 指标虚高(过拟合测试集)。应在验证集选、测试集只评一次。
L3|“分数分布漂移了阈值怎么办?” → 重新用最新验证/回流数据画 PR 曲线选点;阈值热更新。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道可以调阈值 |
| 80 分 | 代价敏感;PR 曲线;验证集选 |
| 95 分 | 讲清 0.5 假设不成立;成本函数;热更新与漂移联动;阈值与模型解耦 |
【关联题】
- 同一知识簇: AI-21(P/R)、AI-01(不平衡)、AI-24(漂移)
- 工程衔接: AI-23(灰度)
【自测】
- 为什么风控阈值通常偏低? 参考答案: 漏报代价大,压低阈值提高召回,接受更多误报。
- 阈值在哪个集合上选? 参考答案: 验证集;测试集只做最终评估。
- 为什么阈值要可配置? 参考答案: 分数分布会漂移,需热更新而不重训。
AI-27. 文本多分类长尾类别老是分错,怎么评估和改进(多分类评估)
【考察内容】分类任务评估扩展
【题目】文本分类模型有 50 个类别,其中 3 个长尾类别准确率极低。只看总体准确率 92% 看不出问题。多分类该怎么评估(Macro-F1 vs Micro-F1、每类 P/R)?多标签任务又该看什么指标(Hamming Loss、子集准确率)?
【参考答案】
多分类评估:
- 混淆矩阵(每类 P/R/F1)+ Macro-F1(各类 F1 平均,关注小类)vs Micro-F1(总体统计,受大类主导);
- 类别不平衡时 Macro-F1 更合理(各类平等对待);
- 准确率可看(平衡时),但多类不平衡仍需看每类 F1;
多标签评估:
- 每标签单独算 P/R/F1(micro/macro 聚合);
- Hamming Loss(标签预测错误率)、Exact Match(子集准确率,严格但苛刻);
- 排序类指标(标签置信度排序):Precision@K、Coverage;
实践:类别不平衡的多分类(长尾标签)用加权损失+Macro-F1 评估;多标签注意标签相关性(用二元相关/分类器链/图模型);
工程:评估报告按类别拆分(哪些类分不好→补数据/特征);
指标选择原则:与业务目标对齐(哪个类重要就重点看哪个类的 F1)。
关键公式: Macro-F1=各类 F1 的平均;Micro-F1 在单标签多分类≈Accuracy;Weighted-F1 按支持度加权。混淆矩阵定位长尾类。
排查步骤: 看每类 Recall → 长尾类数据增强/合并/层次分类 → 类别权重 → 评估用 Macro。线上-离线:业务有时只关心关键类(如投诉),离线 Macro 上升不代表关键类上升。
【原理溯源】
- Micro vs Macro 何时差异大? 类别不平衡时:Micro 被大类主导(等于总体准确率倾向),Macro 平等看待各类——长尾类变差会拉低 Macro,但 Micro 几乎不动。
- 为什么“只报总体准确率”危险? 50 类中 3 个长尾全错,准确率可能只掉 1 个点,业务却在漏关键类。
- Exact Match 为何苛刻? 多标签要求“所有标签全对”才算对,标签数多时分数会很低;Hamming Loss 更平滑。
- 改进长尾类的方向? 数据:补样本/增强;损失:类别加权/focal;结构:分层分类;评估:盯着每类 F1 而不是总准确率。
【选型判断树】
多分类/多标签怎么评?
1. 任务
├─ 单标签多分类 → 每类 P/R/F1 + Macro-F1(不平衡时主看)
└─ 多标签 → Hamming Loss + Exact Match + 每标签 F1
2. 是否不平衡
├─ 是 → Macro 优先;加权损失
└─ 否 → Micro/准确率可用
3. 业务
└─ 重要类单独看 F1,设护栏
4. 诊断
└─ 混淆矩阵定位易混类;补样本/特征【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “50 类长尾差,必须 Macro-F1+每类拆分,不能只报 92%” |
| 0:30–2:00 | Micro vs Macro | 主导差异与选择 |
| 2:00–3:30 | 多标签指标 | Hamming / Exact Match |
| 3:30–4:30 | 改进 | 加权、补数据、混淆矩阵诊断 |
| 4:30–5:00 | 收尾 | “指标对齐业务,长尾类单独盯” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| Macro-F1 | 不平衡时主指标 | 各类平等 |
| Micro-F1 | 近似准确率 | 大类主导 |
| 长尾类 | 每类样本<总量 1% 需警惕 | 看业务 |
| Hamming Loss | 越低越好 | 多标签 |
| Exact Match | 严格,分数偏低 | 标签多时苛刻 |
【追问链】(三层)
L1|“Macro 和 Micro 什么时候差异大?” → 类别不平衡时。Micro 被大类主导,Macro 平等看待各类。
L2|“长尾类分不好怎么改?” → 补样本/增强、类别加权损失、分层分类、检查是否与其他类混淆。
L3|“多标签和多分类评估差在哪?” → 多分类每样本一个类;多标签每样本多个标签,需 Hamming/Exact Match 等集合指标。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道要看每类准确率 |
| 80 分 | Macro vs Micro;多标签 Hamming/Exact Match |
| 95 分 | 讲清大类主导机制;按业务盯关键类 F1;混淆矩阵诊断与改进闭环 |
【关联题】
- 同一知识簇: AI-21(指标)、AI-01(不平衡)、AI-35(文本分类)
- 评估衔接: AI-25
【自测】
- 为什么不平衡多分类主看 Macro-F1? 参考答案: 各类平等,避免大类掩盖长尾。
- Exact Match 适合什么? 参考答案: 多标签且要求“全对”的严格场景,分数会偏低。
- 长尾类差首先做什么? 参考答案: 混淆矩阵定位是否与其他类混;补数据或加权。
AI-28. 训练可以用复杂模型,线上只给 10ms,怎么办(训练服务差异)
【考察内容】训练服务差异化是算法工程高频题
【题目】精排模型离线训练怎么复杂都行,但线上推理只有 10ms 预算。模型压缩(量化/剪枝/蒸馏)、特征预计算、双塔架构、推理加速这些手段分别怎么用?压缩后怎么验证效果没掉?
【参考答案】
问题:训练与推理的算力/数据环境不同——训练可慢(离线),推理必须快(在线),两者差异导致效果损失(skew)或成本高;
优化方向:
- 模型压缩:量化(INT8 推理,精度损失可控)、剪枝(去掉不重要的参数/神经元)、蒸馏(大模型教小模型)——减小推理计算量;
- 特征分层:高频特征(ID/实时特征)在线计算,重特征(长文本 embedding)预计算/缓存(物品特征离线算好,线上只查);
- 推理优化:Batch 推理(多个请求合并一次前向——先问 SLA:固定 batch 是拿排队换吞吐,题干 10ms 硬延迟下不能用;只有高并发或 GPU 打不满时才用 micro-batch,窗口 ≤1ms 且「凑满即发、超时即发」)、模型缓存(相同输入缓存结果——精排的 user×item 输入几乎不重复,命中率≈0;缓存只对粗排/物品侧特征与向量有效,别写成精排提速手段)、ONNX/TensorRT 加速、GPU 服务化(Triton / ONNX Runtime / TensorRT;vLLM 一类是 LLM 自回归推理引擎,不服务 CTR/DNN 精排图);
- 模型结构:精排用复杂模型离线调优,线上用蒸馏后的小模型或双塔(在线只用用户塔推理+物品塔预计算);
- 特征服务:特征预加载(Redis 全量特征)、embedding 预计算存库;
一致性保障:训练与推理的特征口径完全一致(特征平台/回放,见 AI-18);量化模型要评估精度损失(离线对比 FP16/INT8 的指标差);
成本权衡:线上资源成本 vs 效果提升(A/B 验证压缩后模型业务指标不掉);
演进:上线前做推理性能压测(P99 延迟满足 SLA)再灰度。
关键公式/预算: 端到端时延=特征+召回+粗排+精排+重排+业务。若精排只剩 10ms,模型大小、算子、线程数都要受限。知识蒸馏:学生模型拟合教师输出分布。
排查步骤: 压测分解各阶段 p99 → 裁剪特征/层数 → 蒸馏/量化/编译优化 → 兜底缓存。线上-离线:离线大模型指标好但打不出来就无意义;要用“线上预算下的模型”报离线指标。
【原理溯源】
- 为什么训练可以“重”、推理必须“轻”? 训练是异步离线,吞吐优先;推理在用户请求路径上,延迟 SLA 硬约束。两者目标不同,允许架构分叉——但特征口径不能分叉(否则 Skew)。
- 蒸馏为何有效? 小模型学大模型的软标签(类别分布),软标签携带了“类间相似度”等暗知识,比硬标签信息更丰富,小模型能学到更平滑的决策边界。
- 量化为何能“几乎不掉点”? 权重与激活从 FP16/FP32 降到 INT8,矩阵乘吞吐大幅提升;对不敏感的权重,精度损失通常是 AUC 绝对值下降 <0.005(即 <0.5 个百分点),可接受。
- 双塔为何是延迟友好架构? 物品塔离线预计算,线上只算用户塔+向量检索/内积,把复杂交叉挪出请求路径。
【选型判断树】
线上 10ms 预算:
1. 模型侧
├─ 过大 → 蒸馏小模型 / 量化 INT8
└─ 结构可改 → 双塔(物品侧预计算)
2. 特征侧
├─ 重特征离线预计算,线上查 Redis
└─ 实时特征精简到关键项
3. 引擎
└─ TensorRT/ONNX;**batch 仅高并发/micro-batch≤1ms(10ms 硬 SLA 下固定 batch 不能用)**;缓存仅粗排与物品侧
4. 验证
├─ 精度:FP16 vs INT8 离线对比
└─ 性能:P99 压测达标再灰度【口述骨架】(5 分钟)
| 时间 | 任务 | 内容 |
|---|---|---|
| 0:00–0:30 | 定性 | “训练重、推理轻是常态,但特征口径必须一致” |
| 0:30–2:00 | 压缩三件套 | 量化、剪枝、蒸馏 |
| 2:00–3:30 | 架构 | 特征预计算、双塔、引擎加速 |
| 3:30–4:30 | 验证 | 精度对比 + P99 压测 + A/B |
| 4:30–5:00 | 收尾 | “先压测达标,再灰度;防 Skew” |
【关键数字】
| 参数 | 经验值 | 说明 |
|---|---|---|
| 精排延迟 | 10–50ms | 本题 10ms |
| 量化 | INT8 ≈ 相对 FP16 减半算力 | 精度需实测 |
| 蒸馏 | 主指标保留大模型 90%+ 的相对水平(须写明是准确率/AUC 的相对值,别读成绝对分数) | 任务相关 |
| 物品特征 | 全量预计算+缓存 | 在线只读 |
| P99 | 必须达标 | 不只平均 |
【追问链】(三层)
L1|“双塔为什么适合线上?” → 物品塔离线算好向量,线上只算用户塔+向量检索,推理极快。
L2|“蒸馏怎么保证效果?” → 小模型学大模型的软标签(分布),比硬标签信息更丰富。
L3|“量化后指标掉了一点,上不上?” → 看业务容忍度与延迟收益。通常 A/B 验证:延迟收益>指标损失则可上;否则换蒸馏/架构优化。
【评分标准】
| 档位 | 答案特征 |
|---|---|
| 60 分 | 知道要量化/简化模型 |
| 80 分 | 量化/剪枝/蒸馏;特征预计算;双塔 |
| 95 分 | 讲清训练推理目标分叉与特征一致性;蒸馏软标签机制;P99 压测与 A/B 验收 |
【关联题】
- 同一知识簇: AI-18(Skew)、AI-52(双塔分工)、AI-45(LLM 推理)
- 工程衔接: AI-23(灰度)、AI-16(实时特征链路:埋点→Kafka→Flink→Redis)
【自测】
- 量化、剪枝、蒸馏分别减什么? 参考答案: 量化降数值精度;剪枝去参数;蒸馏用小模型学大模型软标签。
- 为什么物品侧常预计算? 参考答案: 物品特征变化慢,离线算好,在线只查,把计算挪出请求路径。
- 压缩后必须验证什么? 参考答案: 离线精度差(如 INT8 vs FP16)+ P99 延迟 + 线上 A/B。