老李是净水厂的水质监测员,二十年如一日记着一本“水质配方本”:清水占多少、泥沙占多少、微生物占多少。他每天的工作,就是拿今天的检测数据跟这本配方本对照。哪一天河水的泥沙比例从 5% 涨到 20%,他不会拍脑袋喊“出事啦”,而是先算一笔统计账——这点变化能不能用正常波动解释?如果不能,他才拉响警报,通知上游排查污染源,同时调整净水配方。 如果把 AI 模型想象成一座净水厂,模型的预测输出就是“水”,标签漂移就是“水”的配方悄悄变了。模型上线时,它见过的标签分布是“清水 80% + 泥沙 20%”;半年后,业务环境变了,真实世界的标签分布可能变成了“清水 60% + 泥沙 40%”。模型没见过这个新配方,预测自然越来越不准。 标签漂移检测要做的,正是老李的日常——持续取水样、算统计量、设阈值、响警报。本文将介绍的 KS 检验,就是对比两条“成分曲线”找最大缝隙的统计工具;PSI 指标则是给整条河的浑浊度打一个综合分。两者配合,再加上一套自动化监控体系,模型一旦“水土不服”,系统会第一时间报警,工程师再决定要不要给模型“换配方”(重训练)。

岗位关联

对 AI 从业者而言,标签漂移检测是模型上线后的“体检科室”。掌握 KS 检验与 PSI 监控,你能第一时间发现模型失效的苗头,而不是等业务投诉爆发后才被动救火——这是 MLOps 工程师的核心技能之一。

目录
  1. 可视化演示
  2. 漂移现象认知
  3. 分布提取对比
  4. KS检验原理
  5. PSI指标监控
  6. 漂移判定告警
  7. 监控体系搭建
  8. 模型重训练
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

交互展示预测分布漂移检测、KS统计量计算过程和漂移告警机制,理解模型线上监控核心方法。

本节配有交互动效(进入视口后自动加载,约 3KB)。

预测分布漂移检测 训练分布(基准)与线上分布对比 分布偏移量随时间逐步增大 P_train(Y) ≠ P_prod(Y) 标签漂移影响模型预测质量

漂移现象认知

老李的配方本上,河水常年是“清水 80% + 泥沙 20%”。但今年春天,他连续一周测到泥沙比例飙升到 35%。水没有变少、仪器也没有坏,变的只是“成分的比例”。这种现象在机器学习的世界里有个专门的名字——标签漂移(Label Drift)。

标签漂移,指的是模型预测目标 \(y\) 的分布随时间发生变化。分类模型里“正样本占 10%”变成了“正样本占 25%”,或者推荐模型里“用户点击率”的整体水平上移了一个台阶,都属于标签漂移。它和特征漂移(Feature Drift)是两回事:特征漂移是“题目变了”(输入 \(x\) 的分布变了),标签漂移是“答案变了”(目标 \(y\) 的分布变了)。常见的诱因包括业务策略调整、客群结构变化、标注口径变更。漂移一旦发生,模型的概率校准会失准,基于预测分数的业务决策也会跟着跑偏。

用数学语言描述“答案变了”,就是下面的不等式:

老李不会因为一次检测超标就换掉整条产线。他会先反复确认:配方是真变了,还是只是偶然波动?确认之后,才决定要不要调整净水流程。AI 工程师面对标签漂移,也得走同样的流程——先检测,再确认,最后行动。

Ptrain(y)≠Pcurrent(y)P_{\text{train}}(y) \neq P_{\text{current}}(y)
通俗理解:模型在训练时见过的“答案配方”,和现在真实世界的“答案配方”对不上了。
  1. 训练期标签分布 \(P_{\text{train}}(y)\)模型出生时见过的“答案配方”,比如训练集里正样本占 10%。
    Ptrain(y)P_{\text{train}}(y)
  2. 当前期标签分布 \(P_{\text{current}}(y)\)模型此刻在线上面对的“答案配方”,比如最近一周正样本占 25%。
    Pcurrent(y)P_{\text{current}}(y)
  3. 不相等 \(\neq\)两个配方出现了实质性偏离,而不是采样造成的随机抖动。
    ≠\neq

分布提取对比

老李取水样很有讲究:上游、中游、下游各设一个取样点,每天固定时间取三管水,而不是随手舀一瓢。取样的位置和频率不对,后面的分析全是白搭。标签漂移检测的第一步,同样是“取水样”——把模型的预测输出收集起来。

在分类模型里,这个“水样”通常是模型对每个样本输出的预测分数(比如 Logistic 回归的输出概率,或 Softmax 的最大类概率)。一批预测分数构成一个样本集合,我们关心的是这个集合的分布长什么样。取样的两个关键是窗口:基准窗口和对比窗口。基准窗口选取模型“健康”时期的预测分数,通常用训练集,或者上线后第一个月的预测记录;对比窗口则是最近一个滑动时间窗(近 1 天、近 7 天)的预测分数。基准代表“正常的水质配方”,对比代表“现在的水质配方”。

拿到两个窗口的分数后,怎么把“分布”画出来?统计学里有一个简单又强大的工具——经验累积分布函数(Empirical CDF),它把样本按分数从小到大排队,然后数出“小于等于某个值”的样本占比:

取样的位置对了、经验的曲线画出来了,接下来就看两批“水样”的差异到底有多大——这正是 KS 检验登场的时刻。

F^n(x)=1n∑i=1nI(xi≤x)\hat{F}_n(x) = \frac{1}{n} \sum_{i=1}^{n} I(x_i \le x)
通俗理解:把样本分数从小到大排好队,站在某个分数 \(x\) 处回头数一数,队伍里有百分之多少的人排在自己前面。
  1. 经验分布函数 \(\hat{F}_n(x)\)用 \(n\) 个实际样本“拼”出来的累积分布曲线,是真实分布的估计。
    F^n(x)\hat{F}_n(x)
  2. 指示函数 \(I(x_i \le x)\)一位严格的检查员——样本 \(x_i\) 不超过 \(x\) 就记 1,否则记 0。
    I(xi≤x)I(x_i \le x)
  3. 求和 \(\sum_{i=1}^{n}\)把所有检查员的 1 加起来,得到“分数不超过 \(x\) 的样本总数”。
    ∑i=1n\sum_{i=1}^{n}
  4. 平均 \(\frac{1}{n}\)除以样本总量,把计数换算成占比,范围落在 0 到 1 之间。
    1n\frac{1}{n}

KS检验原理

老李把两批水样的“浓度-深度”曲线叠在同一张图上:一条是上个月的,一条是今天的。他发现两条曲线之间有一道明显的缝隙,但缝隙到底算不算“大”?不能凭感觉,得量出来。

KS 检验(Kolmogorov-Smirnov Test)干的就是这件事。它是一种非参数假设检验,不假设数据服从正态分布,只比较两个经验累积分布函数。做法很朴素:把基准窗口和当前窗口的经验 CDF 画在一起,横轴扫过所有可能的分数值,在每个位置计算两条曲线的垂直距离,取其中的最大值作为 KS 统计量:

算出 \(D_{KS}\) 之后,还要回答一个关键问题:这道缝隙是真实的分布变化,还是抽样带来的偶然?KS 检验会给出一个 P 值——在原假设(两个分布相同)成立的前提下,出现这么大缝隙的概率。P 值小于 0.05,统计学上就认为“缝隙大到不可能是巧合”。

老李看到绿色标尺明显拉长时,就知道这不是正常波动,而是水真的变了。不过,KS 只看“最大缝隙”,万一局部缝隙不大、但整体成分都在缓慢偏移呢?这时就要请出 PSI 这个“综合浑浊度指数”。

DKS=max⁡x∣F^baseline(x)−F^current(x)∣D_{KS} = \max_x \left| \hat{F}_{\text{baseline}}(x) - \hat{F}_{\text{current}}(x) \right|
通俗理解:KS 就是两条“累积占比曲线”之间最大的那道缝。缝越宽,说明两个分布偏得越远。
  1. 基线经验分布 \(\hat{F}_{\text{baseline}}(x)\)由基准窗口样本构造的累积分布曲线,代表“健康水质”。
    F^baseline(x)\hat{F}_{\text{baseline}}(x)
  2. 当前经验分布 \(\hat{F}_{\text{current}}(x)\)由当前窗口样本构造的累积分布曲线,代表“当下水质”。
    F^current(x)\hat{F}_{\text{current}}(x)
  3. 垂直距离 \(\left| \hat{F}_{\text{baseline}}(x) - \hat{F}_{\text{current}}(x) \right|\)在同一个 \(x\) 处,两条累积曲线的“高度差”。
    ∣F^baseline(x)−F^current(x)∣\left| \hat{F}_{\text{baseline}}(x) - \hat{F}_{\text{current}}(x) \right|
  4. 最大差距 \(\max_x\)从左到右扫过所有位置,挑出最大的那道缝隙。
    max⁡x\max_x

PSI指标监控

老李发现,有时候两批水样的最大缝隙并不夸张,但整条河的“体质”已经在悄悄改变——每一层的泥沙都多了一点点。KS 像一把尺子量最大缝隙,而 PSI(Population Stability Index,群体稳定性指标)更像一个综合评分,把整条河分成十段横截面,逐段对比占比差异,再累加成总分。

PSI 的计算分三步:先把预测分数按基线窗口的分位数等频分成若干段(通常 10 段);然后分别计算基线窗口和当前窗口在每个分段里的样本占比;最后逐段计算“占比差 × 占比对数比”并求和:

行业里常用的 PSI 判读标准是:小于 0.1 表示分布稳定,0.1 到 0.25 表示轻度漂移需要观察,超过 0.25 表示显著漂移需要告警。老李的“水质配方本”里没有单一大招,KS 管最大缝隙,PSI 管综合体质,两者互为补充。

PSI=∑i=1n(Ai−Bi)×ln⁡(AiBi)PSI = \sum_{i=1}^{n} (A_i - B_i) \times \ln\left(\frac{A_i}{B_i}\right)
通俗理解:把河分成 10 个水层,逐层比较“这层的水占整条河的百分比变没变”,每层的偏离量累加成一个总分。
  1. 当前段占比 \(A_i\)当前窗口里,预测分数落在第 \(i\) 个分段的样本比例。
    AiA_i
  2. 基线段占比 \(B_i\)基线窗口里,落在第 \(i\) 个分段的样本比例。
    BiB_i
  3. 差值 \((A_i - B_i)\)每个分段的占比变化幅度,可正可负。
    (Ai−Bi)(A_i - B_i)
  4. 对数比 \(\ln(A_i / B_i)\)占比相对变化的“张力”,占比变小为负、变大为正,变化越剧烈绝对值越大。
    ln⁡(AiBi)\ln\left(\frac{A_i}{B_i}\right)
  5. 求和 \(\sum_{i=1}^{n}\)把各分段的偏离量累加,得到整体漂移分数。
    ∑i=1n\sum_{i=1}^{n}

漂移判定告警

净水厂的警报分两级:黄灯亮,说明水质有波动,先加强检测频率;红灯亮,说明必须马上停下来排查。标签漂移的告警设计也是同样的思路——不是一看到缝隙就大喊大叫,而是分级、滞后、再人工确认。

判定是否告警,要看两个信号。第一个信号是 KS 检验的显著性:P 值小于 0.05(或 KS 统计量超过查表临界值),说明两分布差异显著。第二个信号是 PSI 的档位:超过 0.25 属于显著漂移。工程上通常设定“连续 N 个监控周期都超阈值”才触发告警,避免偶发抖动引起误报。判定规则可以写成:

告警不是终点,而是起点。告警触发后,工程师要去看板核对监控曲线、和业务方确认是否有策略调整,排除“业务活动导致的正常变化”,再决定是否重训模型。老李也一样——红灯响起,他先打给上游确认是不是有人排污,而不是直接关掉净水厂。

DKS>Dα(n)⇒拒绝 H0D_{KS} > D_{\alpha}(n) \Rightarrow \text{拒绝 } H_0
通俗理解:当观测到的最大缝隙,超过了“纯随机波动”可能达到的极限时,统计学就不再把差异当成巧合了。
  1. 临界值 \(D_{\alpha}(n)\)在显著性水平 \(\alpha\)(通常取 0.05)和样本量 \(n\) 下,查表得到的缝隙极限。
    Dα(n)D_{\alpha}(n)
  2. 比较 \(D_{KS} > D_{\alpha}(n)\)实际测得的缝隙超过了随机波动的上限。
    DKS>Dα(n)D_{KS} > D_{\alpha}(n)
  3. 拒绝原假设 \(H_0\)统计学上判定“两个分布不同”,触发人工复核流程。
    ⇒拒绝 H0\Rightarrow \text{拒绝 } H_0

监控体系搭建

老李不可能 24 小时蹲在河边盯曲线。他在河里布了浮标传感器,每小时自动传回数据,异常时短信提醒;每周出一份水质趋势周报。标签漂移监控也要建成这样一套“自动化监测站”,而不是靠人肉对比。

监控体系由四个环节组成。第一步是预测采集:在模型推理链路中记录每次预测的分数和对应标签,写入日志或数仓。第二步是指标计算:用定时任务(如 Airflow 调度)周期性地拉取基准窗口和当前窗口的数据,计算 KS 统计量与 PSI 指标。第三步是看板展示:把 KS、PSI 随时间变化的趋势画成折线图,叠加阈值参考线,让漂移过程一目了然。第四步是告警通知:阈值触发后通过企业微信、钉钉或短信通知到负责人。

监控频率怎么定?交易类模型通常按天甚至按小时监控,营销类模型按周即可。频率过高会引入噪声、浪费算力;过低则错过漂移早期信号。一个务实的做法是:先按天监控一周,观察指标的自然波动幅度,再据此设定阈值和频率。

老李的浮标系统让他从“天天盯河边”变成了“每周看报表、异常才出动”。AI 工程师也一样——把监控体系搭好,把人和机器的分工理清,漂移检测就不再是救火,而是常态化巡检。

模型重训练

黄灯、红灯都响过、渠道也排查了,老李确认:不是上游排污,是这条河本身的生态变了。要想让出水达标,光靠老配方不行,得调整净水剂的配比。模型重训练,就是给模型“换配方”。

触发重训练不能只凭一个指标。工程上常见的判定组合是:KS 检验显著(P 值 < 0.05)且 PSI 超过 0.25,且 线上业务指标(如准确率、AUC、转化率)同步下滑。三个条件都满足,才启动重训练流程——避免因为“分布变了但模型依然好用”而白白消耗资源。

重训练的具体策略要讲究。样本集更新上,常采用“最新 N 天数据 + 回放历史数据”的混合方式:新数据让模型跟上新分布,历史数据防止模型遗忘旧知识。上线方式上,新模型要灰度切换——先给 5% 流量试跑,观察 KS 和业务指标都稳定后,再逐步放量到 100%。同时保留旧模型作为回滚预案,一旦新模型表现异常,可以秒级切回。

老李的净水厂也有一套备用配方,新配方先在一条支线上试运行三天,出水达标才全面启用。标签漂移监控的终点不是“报警”,而是形成一个闭环:检测 → 告警 → 复训 → 灰度 → 回滚,让模型始终追得上真实世界的变化。

AI 应用场景

风控模型标签漂移预警

阶段:模型部署与线上监控

解决的问题:传统做法依赖业务投诉或人工抽查,问题爆发往往滞后数周。AI 方式通过对逾期标签分布做 KS/PSI 日级监控,第一时间捕捉坏账率的异常抬升。

具体案例:某消费金融公司的贷后风控模型,某月 KS 统计量从 0.08 跃升至 0.31,PSI 达到 0.42,系统自动告警。工程师复核发现近期客群下沉、多头借贷比例升高,随即触发重训练并调整审批策略,将逾期率回落了 2.3 个百分点。

推荐系统 CTR 分布监控

阶段:线上推理质量保障

解决的问题:大促活动会让点击率预测分数整体抬高,若不加区分地视为模型失效,会造成无效告警和误重训。AI 方式用 PSI 监控分数分布变化,辅助判断是“活动效应”还是“真实漂移”。

具体案例:某电商平台按天计算点击率预测分数的 PSI,活动期间 PSI 冲到 0.18,但结合业务日历确认是促销带来的正常抬升,因此只升级观测频率、不触发重训;大促结束后 PSI 回落至 0.06,验证了判断。

信贷审批模型重训练触发

阶段:模型迭代与版本管理

解决的问题:审批通过率分布漂移后,手动决定何时重训缺乏依据。AI 方式把“KS 显著 + PSI 超阈值 + 业务指标下滑”组合成自动化触发条件。

具体案例:某银行信贷审批模型检测到审批通过率分布连续 7 天 PSI > 0.25,系统自动拉取最新 30 天样本重训,并先以 10% 流量灰度验证,AUC 提升 4% 后全量上线,旧模型保留两周作为回滚兜底。

Python 演示

python42 行
# -*- coding: utf-8 -*-"""标签漂移监控演示:KS检验与PSI指标"""import numpy as npfrom scipy import stats  def compute_ks(cur_scores, base_scores):    ks, p_value = stats.ks_2samp(cur_scores, base_scores)    return ks, p_value  def compute_psi(cur_scores, base_scores, bins=10):    edges = np.percentile(base_scores, np.linspace(0, 100, bins + 1))    base_hist, _ = np.histogram(base_scores, bins=edges)    cur_hist, _ = np.histogram(cur_scores, bins=edges)    base_ratio = base_hist / base_hist.sum() + 1e-6    cur_ratio = cur_hist / cur_hist.sum() + 1e-6    psi = np.sum((cur_ratio - base_ratio) * np.log(cur_ratio / base_ratio))    return psi  def main():    rng = np.random.default_rng(42)    base_scores = rng.beta(2, 5, size=20000)    cur_scores = rng.beta(2, 5, size=20000)    ks, p = compute_ks(cur_scores, base_scores)    psi = compute_psi(cur_scores, base_scores)    print("基线期 vs 当前期(正常)")    print("  KS = {:.4f}, P = {:.4f}, PSI = {:.4f}".format(ks, p, psi))    drift = (p < 0.05) or (psi > 0.10)    print("  判定: {}".format("存在标签漂移" if drift else "分布稳定"))    cur_scores = rng.beta(1.5, 8, size=20000)    ks, p = compute_ks(cur_scores, base_scores)    psi = compute_psi(cur_scores, base_scores)    print("基线期 vs 当前期(模拟漂移)")    print("  KS = {:.4f}, P = {:.4f}, PSI = {:.4f}".format(ks, p, psi))    drift = (p < 0.05) or (psi > 0.10)    print("  判定: {}".format("存在标签漂移" if drift else "分布稳定"))  if __name__ == "__main__":    main()
目的:用两批模拟的预测分数演示标签漂移检测——分别用 KS 检验和 PSI 指标判断当前分布是否偏离基线,并给出告警判定。
  1. ks, p_value = stats.ks_2samp(cur_scores, base_scores)调用 SciPy 的双样本 KS 检验,一次拿到统计量和 P 值。
  2. edges = np.percentile(base_scores, np.linspace(0, 100, bins + 1))按基线分数分位数生成等频分箱边界,保证每段样本量接近。
  3. base_ratio = base_hist / base_hist.sum() + 1e-6归一化成占比,加上极小值防止对数运算除零。
  4. psi = np.sum((cur_ratio - base_ratio) * np.log(cur_ratio / base_ratio))逐段计算 (A-B)×ln(A/B) 并累加,就是 PSI 公式。
  5. drift = (p < 0.05) or (psi > 0.10)KS 显著性或 PSI 超阈值任一命中,即判定存在漂移。
  6. cur_scores = rng.beta(1.5, 8, size=20000)用形状参数更倾斜的 Beta 分布模拟真实环境退化后的标签分布。

常见误区

误区我看到模型线上效果变差,去查了一下输入特征,发现“用户年龄分布变了”,于是得出结论:模型发生了标签漂移。这不都一样吗?都是数据变了。

正解标签漂移和特征漂移是两个不同的监测对象。特征漂移看的是输入 \(x\) 的分布(题目变了),标签漂移看的是预测目标 \(y\) 的分布(答案变了)。就像净水厂里,“水源泥沙变多”是进水问题,“出厂水质标准提高”是目标问题。监控时要用不同的窗口和数据源:特征漂移看特征表,标签漂移看预测分数和真实标签。

为何常见:两者往往同时发生,且都表现为“线上数据跟训练时不一样”,初学者容易混为一谈。

误区KS 检验的 P 值小于 0.05,说明漂移显著,那还等什么?赶紧拉数据重训模型啊。

正解统计显著不等于业务需要干预。P 值只回答“分布是否不同”,不回答“模型是否变差”。有时标签分布变了,但模型在新分布下依然表现良好;有时漂移来自业务活动的正常波动(比如大促)。正确的做法是先看 PSI 档位、再看业务指标是否下滑、最后结合人工复核,三个信号都指向“模型真的水土不服”才触发重训。

为何常见:把“统计检验”误当成“行动指令”,跳过了工程判断环节。

误区KS 检验既能算 P 值又能给统计量,比 PSI 严谨多了,我就只监控 KS 一个指标,够了。

正解KS 捕捉的是两条累积分布“最大缝隙”,对局部突变敏感;PSI 是对全部分段占比差异的累加,对整体慢性偏移敏感。真实场景里,局部突变和整体平移可能同时存在,只盯一个指标会漏报。最佳实践是两者同时监控:KS 负责“哪里偏了”,PSI 负责“整体偏了多少”。

为何常见:初学者容易认为“指标越高级越好”,忽略了不同指标有不同的敏感方向。

误区网上说 PSI 小于 0.1 稳定、大于 0.25 漂移,我就直接写死在监控代码里,所有模型都用这一套。

正解0.1 / 0.25 是经验参考值,不是物理定律。不同模型、不同样本量、不同业务波动幅度下,阈值的含义完全不同。正确做法是先用历史数据统计“健康期”的 KS 和 PSI 自然波动范围,再按分位数设定阈值;告警触发后还要结合误报率迭代调参。

为何常见:行业文章里广泛传播的默认值看起来“省事又权威”,容易让人放弃因地制宜的调参。

面试题

Q1. 下列对“标签漂移”定义最准确的是?

单选题 · easy

  • A.模型参数在训练中被悄悄改变
  • B.预测目标分布随运营时间改变← 正确答案
  • C.输入特征的统计特性发生改变
  • D.训练数据集被反复的扩充变大

答案:B。标签漂移指预测目标 \(P(y)\) 的分布随时间变化,就像老李发现“泥沙比例”变了。C 描述的是特征漂移(输入分布变化),A 是模型参数层面的事,D 只是数据量问题,均不符合定义。

Q2. KS 统计量在几何上表示什么?

单选题 · mid

  • A.两条经验分布曲线间的最大垂直距离← 正确答案
  • B.两条经验分布曲线平均差距的平方根
  • C.两条经验分布曲线的交点坐标位置
  • D.两条经验分布曲线下方的总面积之差

答案:A。KS 统计量是横轴扫过所有位置时,两条累积分布曲线最大垂直距离的绝对值,对应水样“浓度曲线”的最大缝隙。B 描述的是类似 RMSE 的平均差,C 是交点,D 是面积差,都不是 KS 的定义。

Q3. 标签漂移与特征漂移最主要的区别是?

单选题 · mid

  • A.前者监控预测目标而后者监控输入特征← 正确答案
  • B.前者发生在离线训练而后者发生在线部署
  • C.前者只用分类任务而后者只用回归任务
  • D.前者依赖人工标注而后者不依赖任何数据

答案:A。标签漂移关注“答案”分布 \(P(y)\),特征漂移关注“题目”分布 \(P(x)\),一个看结果一个看输入。两者都可能同时发生在训练或部署阶段,也都不绑定特定任务类型,因此 B、C、D 均错误。

Q4. 关于 PSI 指标的分段,最佳实践是?

单选题 · mid

  • A.对基线分数等频分成十个左右的小区间← 正确答案
  • B.对基线分数等宽分成上百个细小区间
  • C.按业务需要随时调整且不设固定区间数
  • D.将分数区间设定为每个区间一个样本量

答案:A。常用做法是依据基线分数的分位数等频分成 10 段左右,保证每段样本量接近,既能捕捉局部变化又不过度引入噪声。等宽上百段会让稀疏区间产生剧烈波动,无固定分段或每段一个样本则让 PSI 失去稳定性。

Q5. 常用于监控标签漂移的指标有哪些?

多选题 · easy

  • A.特征均值与方差的差值
  • B.两条经验分布的KS统计量← 正确答案
  • C.分段占比计算的PSI指标← 正确答案
  • D.模型参数矩阵的范数大小

答案:BC。KS 统计量和 PSI 指标是标签分布监控的两大主力,经验 CDF 对比是 KS 的基础。特征均值方差属于特征漂移范畴,模型参数范数用于正则化或剪枝分析,都与标签漂移无关。

Q6. KS 检验的原假设 H0 指的是?

单选题 · hard

  • A.两个样本来自完全相同的分布← 正确答案
  • B.两个样本来自相差较大的分布
  • C.两个样本的数量存在显著差异
  • D.两个样本的均值存在显著差异

答案:A。KS 检验的原假设是两个样本来自同一分布。若 P 值很小,说明在“同分布”假设下观察到如此大缝隙的概率极低,于是拒绝原假设。B 把原假设和备择假设搞反了,C、D 混淆了样本量和均值检验。

Q7. PSI 公式中 A_i 和 B_i 分别表示?

单选题 · mid

  • A.当前期与基线期在该分段的样本占比← 正确答案
  • B.基线期与当前期在该分段的样本占比
  • C.当前期与基线期的分段数量之差占比
  • D.基线期与当前期的模型误差率占比

答案:A。PSI 公式中 \(A_i\) 是当前期占比、\(B_i\) 是基线期占比,逐段计算 \((A_i-B_i)\times\ln(A_i/B_i)\) 后累加。B 把两者调反,会导致符号完全反过来;C、D 分别混淆了“分段数量”和“误差率”概念。

Q8. 检测到显著标签漂移后,合适的处置包括?

多选题 · hard

  • A.立即将线上流量全部切换到备用模型
  • B.人工复核看板并与业务方确认变化原因← 正确答案
  • C.使用最新样本触发模型重训练流程← 正确答案
  • D.自动删除历史全部数据并重新采集样本

答案:BC。显著漂移的正确流程是先人工复核确认原因,再用最新样本触发重训练,并通过灰度平滑上线。A 的“全部切换”风险过高,D 删除历史数据既无必要也无依据,重训练恰恰要混合历史数据防止遗忘。

Q9. 选择基准窗口时更合理的做法是?

单选题 · mid

  • A.使用最近一周的完整预测数据
  • B.使用训练集或上线首月的预测← 正确答案
  • C.使用随机抽样的任意一百条数据
  • D.使用当前窗口自身作为基准

答案:B。基准窗口应代表模型的“健康基线”,训练集或上线首月的数据最合适,之后的对比窗口与之对照。用最近一周甚至当前窗口当基准,等于“拿生病的自己做对照”,会掩盖漂移;随机抽样一百条样本量太小,不具有代表性。

Q10. 下列哪些情况可能引发标签漂移?

多选题 · easy

  • A.业务方调整了营销策略与客群结构← 正确答案
  • B.线下标注团队变更了标签判定口径← 正确答案
  • C.硬件的GPU新版驱动出现性能波动
  • D.用户群体随季节更替发生了迁移← 正确答案

答案:ABD。业务策略调整、标注口径变化、用户群体迁移都会改变真实世界“答案”的分布,是标签漂移的典型诱因。GPU 驱动影响的是算力与推理性能,与标签分布无关,属于基础设施层面的问题。