🧠 第十章 管理和部署
📄 一句话概括

输入漂移让 PSI 从 0.037 冲到 0.865,准确率只动 -0.0100; 关系漂移让准确率从 0.910 掉到 0.552,PSI 却一直停在 0.0404 的正常区间。 两个指标各有一半的故障看不见。

📝 本节和前面几节的关系

上一节把模型部署出去。这一节讲上线之后的事——模型不会一直是好的,它会随着世界变化慢慢失效。

一、上线不是终点,是起点

模型在测试集上的分数是那一刻、那批数据上的分数。 上线之后,输入的数据在变、用户的 behavior 在变、业务规则也在变。 最典型的现象叫静默失效:服务没报错、延迟正常、日志干净,但推荐的东西越来越不相关,没人发现, 直到某个业务指标掉下去。 所以监控要解决的不是「服务挂没挂」,而是「它还准不准」。前者看进程和延迟,后者要看数据。

二、两种漂移,机理完全不同

输入漂移(协变量漂移):输入特征的分布变了,但特征和标签的关系没变。 比如用户年龄整体变大、客单价整体变高。 关系漂移(概念漂移):特征分布没变,但特征和标签的关系变了。 比如同样的行为特征,昨天代表「会买」、今天代表「不会买」——促销结束、竞品降价、 政策变化都会造成这种。 两者的应对完全不同:输入漂移往往不需要重训,模型跟着数据走还是对的; 关系漂移必须重训,因为模型学的那条规律已经不成立了。 麻烦在于它们对指标的影响是反的——下面这个 Demo 就是专门演示这件事。

三、实测:两个指标各瞎一半

第一种场景:第 12 天起第一个特征每天整体抬高 0.06,标签关系不变。 PSI 从 0.037 一路涨到 0.865,早就过了「显著」的 0.25 线; 而准确率从 0.9220 变成 0.9120,只掉了 0.0100,基本没动。 原因很简单:特征是有效特征,标签也跟着变,模型学到的规律还是对的,它自然还能答对。 这时候 PSI 报警了,但模型没坏。 第二种场景:输入分布完全不动,但第 12 天起第一个权重从 +1.0 变成 -1.0。 准确率从 0.9100 掉到 0.5520,掉了 0.3580;而 PSI 全程在 0.04 附近,属于「正常」。 输入长得一模一样,分布指标什么都看不出来。这就是静默失效的样子。

四、所以监控至少要两条腿

分布指标(PSI、均值、分位数、缺失率)盯输入。优点是不需要标签,实时就能算; 缺点是它只告诉你「数据变了」,不告诉你「模型坏了」。 效果指标(准确率、转化率、人工抽检通过率)盯结果。优点是直接; 缺点是要等标签回收,可能延迟几天到几周。 只有一条腿,就会漏掉上面两种情况中的一种。 两条一起看,还要会分辨:PSI 高而效果稳 → 数据变了模型没事,观察即可; PSI 稳而效果掉 → 关系变了,立刻查原因、准备重训。 标签延迟期间可以用代理指标顶上:预测结果的分布、置信度的分布、人工抽检一小批。 但代理永远是代理,不能替代真值。 迭代闭环就是四步:发现问题 → 归因是哪种漂移 → 补数据或改标签 → 重训并过回归门禁 → 灰度上线。 少了任何一步,都会变成「改了但不知道为什么好了」。

五、动手 Demo:监控实测:PSI 冲到 0.87 时准确率没动,反过来也一样

用 500 条 6 维样本训一个逻辑回归当线上模型,然后在同一套 30 天框架里跑两种漂移: 第一种从第 12 天起把第一个特征每天抬高 0.06(输入漂移); 第二种输入完全不动、但把第一个权重从 +1.0 翻成 -1.0(关系漂移)。每天算 PSI 和准确率。

edges = np.percentile(Z[:, 0], np.linspace(0, 100, 11))   # 基准分箱
psi = float(((a - b) * np.log(a / b)).sum())              # PSI

wday = wtrue.copy()
if t >= 11:
    wday[0] = -1.0                                        # 关系翻转

实跑输出:

--------------------------------------------------------------------
持续监控:输入漂移会让 PSI 报警,关系漂移正相反
--------------------------------------------------------------------
  第一种:输入漂移。第 12 天起第一个特征每天整体抬高 0.06,标签关系不变。
  日期       特征均值漂移      PSI   准确率   状态
  -----------------------------------------------
  第 1 天            0.00   0.0373   0.9220   正常
  第 6 天            0.00   0.0240   0.9120   正常
  第 12 天           0.00   0.0361   0.8980   正常
  第 13 天           0.06   0.0411   0.9280   正常
  第 15 天           0.18   0.0731   0.9120   正常
  第 18 天           0.36   0.2000   0.9100   轻微
  第 21 天           0.54   0.3298   0.9200   显著
  第 24 天           0.72   0.5373   0.9340   显著
  第 27 天           0.90   0.6349   0.9200   显著
  第 30 天           1.08   0.8651   0.9120   显著

  第二种:关系漂移。输入分布完全不动,但第 12 天起第一个权重从 +1.0 变成 -1.0。
  日期          PSI   准确率   状态
  --------------------------------
  第 1 天    0.0530   0.9100   正常
  第 6 天    0.0456   0.9120   正常
  第 12 天   0.0412   0.5580   正常
  第 13 天   0.0538   0.5540   正常
  第 15 天   0.0456   0.6140   正常
  第 18 天   0.0369   0.5900   正常
  第 21 天   0.0273   0.6000   正常
  第 24 天   0.0476   0.5900   正常
  第 27 天   0.0121   0.6260   正常
  第 30 天   0.0404   0.5520   正常

  输入漂移:准确率         0.9220 到 0.9120,变化 -0.0100
  输入漂移:PSI            0.8651(第 30 天)
  关系漂移:准确率         0.9100 到 0.5520,变化 -0.3580
  关系漂移:PSI            0.0404(第 30 天)

  两张表放在一起看才有意思:**输入漂移让 PSI 冲到 0.87,准确率几乎没动**——模型没坏,是数据变了而关系没变,模型跟着数据走反而还是对的。
  **关系漂移让准确率掉到 0.55,PSI 却一直停在 0.04 的正常区间**——输入长得一模一样,PSI 什么都看不出来。
  所以监控至少要两条腿:分布指标(PSI、均值、分位数)盯输入,效果指标(准确率、转化率)盯结果。只有一条,总会漏掉一半的故障。
  真实业务里效果指标要等标签回收,可能延迟几天;这时候可以用「人工抽检一批」或「预测分布偏移」做代理,但它们都是代理,不是真值。

done -> _out_38m.txt

第一张表:PSI 从 0.0373 涨到 0.8651,第 18 天越过 0.1、第 21 天越过 0.25, 状态一路从「正常」跳到「显著」。准确率全程在 0.898 到 0.934 之间晃,就是抽样噪声的幅度。 第二张表:准确率第 12 天直接掉到 0.5580,之后再没回来; PSI 那列全程 0.01 到 0.05,一天都没报警。 PSI 的算法要说明一下:先用基准期第一个特征的分位数切 10 个箱,再比较每天落在各箱里的比例。 所以它只看分布形状,不看标签。 这个 Demo 的两种漂移都是我人为设的,幅度也是我定的,所以「0.87」「0.55」这些数没有普适意义。 有意义的是符号关系:输入漂移主要动 PSI、关系漂移主要动准确率,方向不可能反过来。

30 秒实验

  1. 把 PSI 的箱数从 10 改成 20,看报警的天数会不会提前。
  2. 把关系漂移改成「第 12 天起权重从 +1.0 变成 +0.2」,看准确率掉多少。
  3. 想一想:为什么输入漂移时准确率不会掉?什么情况下它会掉?

常见误区

  1. 「PSI 报警就是模型坏了」——输入漂移但关系没变时,模型往往还是准的。
  2. 「准确率没掉就没事」——关系漂移可能只影响一部分用户,平均值会掩盖它。
  3. 「有监控就够了」——监控只报警,归因和重训才是解决,缺一步都白搭。
自测三问(点开对答案) 1. 输入漂移和关系漂移的机理差别是什么? —— 输入漂移是特征分布变了、关系没变;关系漂移是特征分布没变、关系变了。 2. 为什么 PSI 抓不到关系漂移? —— PSI 只比较输入的分布形状,完全不看标签,关系变了它无从感知。 3. 标签回收延迟期间可以用什么顶上? —— 预测分布、置信度分布、人工抽检通过率这类代理指标,但代理不能替代真值。

管理四个流程讲完了。下一节换到部署本身:四种部署方式怎么选。

相关笔记