Skip to content

AI 第三章 模型评估与上线(AI-21 ~ AI-28) ​


AI-21. 全猜“没病”准确率 99%,这模型能上线吗(评估指标) ​

【考察内容】评估指标是 ML 面试第一必考

【题目】疾病筛查模型:患病率 1%,模型把所有人都预测为“健康”,准确率 99%——业务方却说这模型没用。为什么?精确率/召回率/F1/AUC 各自定义是什么?这个场景该看什么指标?

【参考答案】

  1. 概念:

    • 准确率 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),衡量“模型把正样本排前面的能力”;
  2. 使用场景:

    • 不平衡/欺诈/疾病:F1/PR-AUC/Recall@阈值(关注少数类);
    • 排序任务(推荐/广告 CTR):AUC/GAUC(衡量排序能力,不依赖阈值);
    • 阈值选择:按业务权衡(风控宁可误报(高召回低阈值),营销宁可精准(高精确高阈值));
  3. 工程细节:AUC 只看排序不看绝对分数(线上阈值另定);类别极度不平衡时 PR-AUC 比 ROC-AUC 更敏感;

  4. 常犯错误:不平衡任务报准确率(自欺);不同模型只比 AUC 不看业务指标。

  5. 关键公式(补全): 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。

  6. 线上-离线差异: 离线选阈值基于历史分布;线上患病率/欺诈率变化会让 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:30AUC排序能力、与阈值无关
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 随机基线≈ 正样本率极端不平衡更敏感
F12PR/(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. 患病率 1%,全预测健康,准确率多少?能用吗? 参考答案: 99%,不能用——完全没抓到病人。
  2. AUC 衡量什么? 参考答案: 排序能力:随机正样本排在负样本前的概率。
  3. 风控为什么常压低阈值? 参考答案: 漏报代价大,压低阈值提高召回,接受更多误报。

AI-22. 新模型上线前,怎么证明它真的更好(A/B 实验) ​

【考察内容】A/B 测试是算法上线必考题

【题目】新排序模型要上线,你负责设计 A/B 实验。怎么分流才公平(随机、分层)?样本量怎么定?实验跑多久?看哪些指标(主指标+护栏指标)?怎么判断结果显著(避免“看着涨了其实不显著”)?

【参考答案】

  1. 实验假设与指标:明确主指标(CTR/转化率)+护栏指标(延迟、坏样本率——防止“指标涨但体验崩”);口径先定(统计口径、埋点);

  2. 分流设计:

    • 随机分流:用户/请求级随机,保证实验组与对照组特征分布一致(同质);
    • 正交分层:多个实验并行时用分层分流(每层独立哈希),避免互相污染;
    • 样本量计算:基于基线指标与最小可检测提升(功效分析),保证统计显著性;
  3. 执行:

    • 同时进行(不能先跑 A 再跑 B——时间因素污染);
    • 单一变量(只改模型,其他不动);
    • 流量占比(如 10% 实验 vs 10% 对照,其余稳定);
    • 最小化干扰:用户两次请求可能落到不同组——按用户分流保证同一用户体验一致;
  4. 分析:

    • 显著性检验(t 检验/卡方,p<0.05)、置信区间;
    • SRM 检查(分流比例是否失真:分流不均匀=实验污染);
    • 看分段/分群(新老用户、渠道)差异(异质性);
    • 长期指标(留存)不能只看短期;
  5. 决策:显著且护栏未恶化→全量;不显著→迭代;负向→回滚;注意多重比较(多个指标同时看会提升假阳性,需校正)。

  6. 关键公式: 两比例 z 检验;最小样本量近似 n≈(z_{1-α/2}+z_{1-β})²·(p1(1-p1)+p2(1-p2))/δ²。观察周期至少覆盖周内周期性。

  7. 排查步骤: 预注册指标与停止规则 → 随机分流(按用户/设备)→ 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(多样性护栏)

【自测】

  1. 什么是护栏指标? 参考答案: 防止主指标涨但体验/性能恶化的约束指标,如延迟、投诉率。
  2. SRM 是什么?为什么要先查? 参考答案: 样本比例失衡检查;分流被污染则后续分析全不可信。
  3. 为什么不能先跑旧模型一周再跑新模型一周? 参考答案: 时间因素污染,无法归因。必须同期随机对比。

AI-23. 新模型不敢直接全量,怎么安全放量(模型灰度) ​

【考察内容】模型灰度是算法工程化必考题

【题目】新推荐模型离线指标更好,但谁也不敢直接全量(怕线上翻车)。从影子发布、小流量 A/B、逐步放量到全量的流程怎么走?每个阶段的通过标准是什么?怎么做到秒级回滚?

【参考答案】

  1. 灰度流程(与工程灰度同思想+算法特有细节):

    • 离线验证:离线指标(AUC/GAUC)通过 + 业务规则检查(异常预测率、分布检查);
    • 影子发布(Shadow):新模型并行运行,只记录预测结果与真实结果对比,不干预线上(验证在线推理与离线一致、性能达标);
    • 小流量 A/B(1%~5%):与线上模型 A/B,看主指标+护栏指标;
    • 逐步放量(1%→5%→20%→50%→100%):每阶段卡点按档位分两套(否则 1% 档永远「不显著」,只能拍脑袋放行):1%~5% 小流量档只卡工程护栏(P99、错误率、异常日志、特征缺失率、打分分布漂移),业务指标显著性卡点从 20% 档起;小流量起点 1%、首档不越过 5%;
    • 全量:稳定后全量,保留回滚预案(一键切回旧模型);
  2. 算法灰度特有要点:

    • 回滚要快:模型回滚=切换模型版本(秒级,配置化,不像代码回滚);
    • 监控推理延迟(模型复杂可能拖慢接口)、显存/资源(新模型资源消耗);
    • 特征/样本一致性:灰度期同时监控特征缺失率(新模型可能依赖新特征);
    • 冷启动/新鲜度:新模型对长尾物品的预测分布对比(防止“全部推热门”的隐性退化);
  3. 决策依据:主指标显著正向+护栏无恶化+分段无负向(新老用户都 OK)→ 全量;

  4. 模型版本管理:模型注册表(版本、特征、数据、指标基线),回滚到任意历史版本。

  5. 关键公式/策略: 放量阶梯 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% 档跑数天)。转化类指标按「转化事件数」计,不按会话数。失败自动回滚条件:错误率/核心指标劣化超阈值。

  6. 排查步骤: 影子打分(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:30A/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)

【自测】

  1. 影子发布验证什么? 参考答案: 在线推理正确性与性能,不看业务效果。
  2. 为什么模型回滚可以秒级? 参考答案: 切换模型版本配置,无需代码发布。
  3. 灰度要盯哪些非 CTR 指标? 参考答案: 延迟、特征缺失率、预测分布/多样性。

AI-24. 模型上线三个月后悄悄变差,怎么提前发现(模型监控) ​

【考察内容】模型监控是算法工程高频题

【题目】模型上线时效果很好,三个月后业务指标悄悄下滑,等发现时已损失不小。怎么建立模型监控体系(特征漂移 PSI、预测分布、业务指标、性能)?漂移检测指标怎么用?发现漂移后怎么办(重训/回滚)?

【参考答案】

  1. 监控分层:

    • 数据监控:特征分布漂移(PSI)、缺失率、新值出现率;标签分布(正样本率变化);
    • 模型输出监控:预测分数分布(均值/分位数漂移)、AUC 在线估计(有标注回流时)、Top 结果分布;
    • 业务指标监控:CTR/转化率/收入/用户体验(投诉、跳出)——最终裁判;
    • 性能监控:推理延迟(P99)、QPS、资源(CPU/显存);
  2. 漂移检测方法:

    • PSI(群体稳定性指标):特征/分数分布偏移,>0.1 轻度、>0.2 需关注;
    • KS 检验/卡方检验:分布差异显著性;
    • 数据时效性:模型训练数据 vs 线上数据的“时间差”(新鲜度);
  3. 告警与应对:

    • 阈值告警(PSI>0.2、CTR 环比下跌 X%)→ 触发重训(定期重训+漂移触发重训);
    • 分布漂移严重时:回滚到稳定模型→排查原因(外部环境/策略变化)→ 用新数据重训;
    • 模型“偷懒”监控:预测分布退化(全推热门)——监控多样性指标;
  4. 定期重训:按数据量/时间(如每天/每周增量训练),版本对比(新模型 vs 线上模型 shadow 评估)。

  5. 关键公式: PSI=Σ(aᵢ−eᵢ)·ln(aᵢ/eᵢ),aᵢ、eᵢ 是第 i 箱的占比(0–1 小数);若代百分数(0–100)会把 PSI 整体放大 100 倍,与 0.1/0.2 阈值不匹配;KS 用于分数分布与排序稳定;特征漂移监控均值/缺失率。

  6. 排查步骤: 特征分布 → 分数分布 → 业务指标 → 样本回流延迟 → 模型版本。线上-离线:监控系统本身要在生产真实流量上算,而不是离线日志抽样失真。

【原理溯源】

  • 为什么要四层监控? 只看业务指标:发现晚、归因难。数据漂移是先导信号,能在业务变差前预警;输出分布暴露模型行为异常;性能监控保 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(特征一致性)

【自测】

  1. PSI 阈值经验值? 参考答案: >0.1 轻度,>0.2 通常需要干预。
  2. 只监控业务指标有什么问题? 参考答案: 发现晚、难归因;数据漂移可先导预警。
  3. 数据漂移和概念漂移的区别? 参考答案: 前者 P(X) 变,后者 P(Y|X) 变;后者需标签回流确认。

AI-25. 精排模型离线 AUC 涨了 0.01,能说明变好了吗(离线评估) ​

【考察内容】推荐评估是算法岗高频题

【题目】精排模型迭代后离线 AUC 涨了 0.01,算法同学说“有效果”。离线评估到底该看哪些指标(AUC/GAUC/LogLoss/NDCG)?GAUC 和 AUC 差在哪、为什么推荐场景更看重 GAUC?离线指标和线上效果不一致怎么办?

【参考答案】

  1. 离线指标:

    • AUC/GAUC:GAUC=按用户分组的 AUC 加权平均(消除用户差异,比全局 AUC 更能反映个性化排序质量——推荐场景用 GAUC);但 GAUC 的口径必须先说清,否则 +0.01 未必是模型收益:单个用户组内要同时有正样本和负样本才存在 AUC,「整组无点击」的用户会被静默丢弃,于是 GAUC 实际只在「已有点击的人群」上计算——题干想优化的曝光未点击人群恰好落在指标之外。要声明:权重按曝光数还是点击数、被丢弃的组占比多少,以及新旧模型对比必须固定同一组用户集合(组集合变化本身就能造出 0.01 的差);
    • LogLoss/交叉熵:概率校准质量(预测是否准,不只是排序对);
    • 排序指标:NDCG/MAP(列表质量,位置加权)、Precision@K/Recall@K(TopK 命中);
    • 校准度:预测 CTR vs 实际 CTR 的比值(校准曲线);
  2. 离线评估要点:

    • 按时间切分(防时间泄漏,见 AI-10);
    • 样本来自线上日志(曝光样本,注意选择偏差);
    • 只看离线 AUC 不够:AUC 高不代表业务好(A/B 是最终标准);
  3. 线上指标:CTR、CVR、GMV、时长、留存(业务指标);GAUC 线上对照(A/B 组排序质量差);

  4. 对应关系:离线 AUC/GAUC 选模型,线上 A/B 定胜负——离线是筛选器,线上是裁判;

  5. 注意:离线指标与线上指标可能不一致(特征 skew、分布差异),以线上为准。

  6. 关键公式: ΔAUC=0.01 是否显著与测试样本量有关;可做 DeLong 检验/自助法置信区间。业务上还要看 GAUC/分桶 CTR 提升。

  7. 排查步骤: 置信区间 → 分用户群看是否稳定 → 在线 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:30GAUC 原理按用户分组消除活跃用户主导
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@KK=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

【自测】

  1. GAUC 和 AUC 核心区别? 参考答案: GAUC 按用户分组加权,消除用户间差异,更贴个性化。
  2. 离线评估为什么可能高估? 参考答案: 曝光选择偏差、时间泄漏、Skew、不检验显著性。
  3. 什么时候看 LogLoss? 参考答案: 输出要当概率用(阈值/出价/校准)时。

AI-26. 模型输出 0.8 分的用户算不算风险用户(阈值选择) ​

【考察内容】模型决策化

【题目】风控模型输出 0~1 的风险分,业务上得定“多少分以上拦截”。默认 0.5 合适吗?风控(宁可多拦)和营销(宁可精准)阈值取向有何不同?怎么用 PR 曲线和业务成本选阈值?

【参考答案】

  1. 问题:默认 0.5 不总是最优(正负不平衡/代价不对称时需调整);

  2. 决策依据(代价敏感):

    • 业务代价:FP 与 FN 的成本——风控(误报=打扰用户、漏报=损失,通常宁可多误报,即降低阈值提高召回)与营销(多发券有成本、漏发丢机会)方向相反;
    • PR 曲线:画出不同阈值下 P/R 曲线,按业务要求选点(要求召回 90%→找对应阈值);
    • 成本函数:最优点=最小化总代价(C_FP×FP + C_FN×FN);
    • 基线对比:与随机/现有规则对比提升是否显著;
  3. 校准与验证:阈值要用验证集选(不能在测试集上选,会过拟合);线上阈值可配置(AB 调整);

  4. 特殊情况:

    • 不平衡+代价不对称:先重采样/加权(见 AI-01),再调阈值;
    • 分数分布漂移后阈值要重调(监控校准);
  5. 工程:阈值作为配置(模型平台支持热更新阈值,不用重训模型)。

  6. 关键公式: 阈值选择:最大化 Fβ 或满足 Precision≥P0 下最大化 Recall;期望代价 Cost=c_FN·FN+c_FP·FP。校准:Platt/Isotonic。

  7. 排查步骤: 分数分布 → 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:30PR 曲线选点业务约束→阈值
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(灰度)

【自测】

  1. 为什么风控阈值通常偏低? 参考答案: 漏报代价大,压低阈值提高召回,接受更多误报。
  2. 阈值在哪个集合上选? 参考答案: 验证集;测试集只做最终评估。
  3. 为什么阈值要可配置? 参考答案: 分数分布会漂移,需热更新而不重训。

AI-27. 文本多分类长尾类别老是分错,怎么评估和改进(多分类评估) ​

【考察内容】分类任务评估扩展

【题目】文本分类模型有 50 个类别,其中 3 个长尾类别准确率极低。只看总体准确率 92% 看不出问题。多分类该怎么评估(Macro-F1 vs Micro-F1、每类 P/R)?多标签任务又该看什么指标(Hamming Loss、子集准确率)?

【参考答案】

  1. 多分类评估:

    • 混淆矩阵(每类 P/R/F1)+ Macro-F1(各类 F1 平均,关注小类)vs Micro-F1(总体统计,受大类主导);
    • 类别不平衡时 Macro-F1 更合理(各类平等对待);
    • 准确率可看(平衡时),但多类不平衡仍需看每类 F1;
  2. 多标签评估:

    • 每标签单独算 P/R/F1(micro/macro 聚合);
    • Hamming Loss(标签预测错误率)、Exact Match(子集准确率,严格但苛刻);
    • 排序类指标(标签置信度排序):Precision@K、Coverage;
  3. 实践:类别不平衡的多分类(长尾标签)用加权损失+Macro-F1 评估;多标签注意标签相关性(用二元相关/分类器链/图模型);

  4. 工程:评估报告按类别拆分(哪些类分不好→补数据/特征);

  5. 指标选择原则:与业务目标对齐(哪个类重要就重点看哪个类的 F1)。

  6. 关键公式: Macro-F1=各类 F1 的平均;Micro-F1 在单标签多分类≈Accuracy;Weighted-F1 按支持度加权。混淆矩阵定位长尾类。

  7. 排查步骤: 看每类 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:00Micro 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

【自测】

  1. 为什么不平衡多分类主看 Macro-F1? 参考答案: 各类平等,避免大类掩盖长尾。
  2. Exact Match 适合什么? 参考答案: 多标签且要求“全对”的严格场景,分数会偏低。
  3. 长尾类差首先做什么? 参考答案: 混淆矩阵定位是否与其他类混;补数据或加权。

AI-28. 训练可以用复杂模型,线上只给 10ms,怎么办(训练服务差异) ​

【考察内容】训练服务差异化是算法工程高频题

【题目】精排模型离线训练怎么复杂都行,但线上推理只有 10ms 预算。模型压缩(量化/剪枝/蒸馏)、特征预计算、双塔架构、推理加速这些手段分别怎么用?压缩后怎么验证效果没掉?

【参考答案】

  1. 问题:训练与推理的算力/数据环境不同——训练可慢(离线),推理必须快(在线),两者差异导致效果损失(skew)或成本高;

  2. 优化方向:

    • 模型压缩:量化(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 预计算存库;
  3. 一致性保障:训练与推理的特征口径完全一致(特征平台/回放,见 AI-18);量化模型要评估精度损失(离线对比 FP16/INT8 的指标差);

  4. 成本权衡:线上资源成本 vs 效果提升(A/B 验证压缩后模型业务指标不掉);

  5. 演进:上线前做推理性能压测(P99 延迟满足 SLA)再灰度。

  6. 关键公式/预算: 端到端时延=特征+召回+粗排+精排+重排+业务。若精排只剩 10ms,模型大小、算子、线程数都要受限。知识蒸馏:学生模型拟合教师输出分布。

  7. 排查步骤: 压测分解各阶段 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)

【自测】

  1. 量化、剪枝、蒸馏分别减什么? 参考答案: 量化降数值精度;剪枝去参数;蒸馏用小模型学大模型软标签。
  2. 为什么物品侧常预计算? 参考答案: 物品特征变化慢,离线算好,在线只查,把计算挪出请求路径。
  3. 压缩后必须验证什么? 参考答案: 离线精度差(如 INT8 vs FP16)+ P99 延迟 + 线上 A/B。

持续学习,持续积累。