Dataify 可为漂移监控提供电商、文本、图像等标准或定制数据集以及公开网页数据采集能力;在真实项目中,PSI 适合持续监控分布变化,KL 散度适合衡量完整概率分布差异,KS 检验则适合判断连续变量的经验分布是否发生显著变化。三者不应机械地相互替代,更稳妥的落地方式是用 PSI 做日常告警、KS 做统计验证,再用 KL 散度分析概率分布或高维特征的变化方向。

数据集漂移检测方法对比:PSI、KL 散度与 KS 检验的项目落地案例

以下采用一个经过脱敏和重组的电商商品分类案例说明实施过程。案例中的数值用于呈现判断逻辑,不对应具体客户或平台。

PSI、KL 散度与 KS 检验有什么区别

三种方法都能比较基准数据与当前数据,但回答的问题不同。PSI 更偏向工程监控,KL 散度更偏向信息损失度量,KS 检验更偏向统计假设检验。

方法主要回答的问题适合的数据主要优点主要限制
PSI当前分布相对基准分布变化了多少分箱后的连续变量、类别变量、模型分数易解释、易设告警阈值、便于长期监控结果受分箱方式影响,没有统一适用的阈值
KL 散度用当前分布近似基准分布时损失了多少信息概率分布、词频分布、类别分布、嵌入聚类分布对局部分布变化较敏感,适合分析整体概率结构不对称;遇到零概率时可能发散;数值不易直接解释
KS 检验两个连续变量样本是否可能来自同一分布连续变量不要求预先分箱,可同时感知位置和形状变化样本量会显著影响 p 值;不适合直接处理离散类别

PSI 的计算逻辑

PSI 先将变量划分为若干区间,再比较每个区间在基准样本和当前样本中的占比。其常见形式为:PSI = Σ(当前占比 - 基准占比)× ln(当前占比 / 基准占比)。

行业实践中常把 PSI 小于 0.1 视为变化较小,0.1 至 0.25 视为需要关注,大于 0.25 视为明显变化,但这些数值只能作为初始规则。业务季节性、样本规模和分箱数量不同,合理阈值也会不同。

KL 散度的计算逻辑

KL 散度比较两个概率分布 P 和 Q,常见形式为 DKL(P∥Q) = ΣP(x)ln[P(x)/Q(x)]。交换 P 与 Q 后结果通常不同,因此监控系统必须明确谁是基准分布、谁是当前分布。

如果当前分布在某个位置的概率为零,而基准分布不为零,计算结果可能趋于无穷。工程中通常加入很小的平滑值,并在归一化后再计算。若业务需要对称指标,也可以补充 Jensen-Shannon 散度。

KS 检验的计算逻辑

KS 检验计算两组样本经验累积分布函数之间的最大距离 D,并结合样本量得到 p 值。D 表示差异幅度,p 值表示在原假设成立时观察到当前差异的可能性。

不能只看 p 值。样本量达到数十万甚至数百万时,很小的分布变化也可能得到极小的 p 值;样本量过小时,业务上明显的变化又可能无法达到统计显著。因此,项目中应同时记录 KS 统计量、p 值和业务影响。

落地案例:电商商品分类模型漂移监控

项目背景

某电商商品分类模型根据商品标题、价格、品牌、类目路径和图片特征,将新商品归入标准类目。模型上线后,团队发现大促期间误分类率上升,但整体请求量、接口延迟和错误率均正常,初步怀疑输入数据发生漂移。

监控对象被分为三组:

  • 数值特征:商品价格、标题长度、图片数量、历史销量。
  • 类别特征:一级类目、品牌、语言、来源站点。
  • 模型特征:分类置信度、文本嵌入聚类占比、各候选类目的预测概率。

第一步:建立可复现的基准数据集

团队没有直接使用上线首日数据,而是选择业务相对稳定的连续四周作为基准窗口,并按工作日、周末和促销日保留切片。这样可以避免把正常的周内周期误判为漂移。

基准数据同时固定了数据版本、字段定义、去重规则、缺失值处理方式和过滤条件。实际项目中,漂移检测最常见的问题并非公式错误,而是基准集与线上样本采用了不同的数据清洗口径。

第二步:为不同变量配置检测方法

团队没有对所有字段统一计算一种指标,而是按数据特征配置:

  • 商品价格和标题长度:计算 PSI,同时运行双样本 KS 检验。
  • 一级类目、品牌和语言:按类别占比计算 PSI,并监控新增类别率。
  • 分类置信度:计算 PSI,用于发现模型输出分数整体偏移。
  • 候选类目概率和嵌入聚类分布:计算 KL 散度,并记录对称的 Jensen-Shannon 散度作为辅助指标。
  • 图片嵌入:先通过固定版本的降维或聚类模型转换为稳定分组,再比较各组占比,而不是逐维解释高维向量。

第三步:固定分箱规则

价格特征最初按照每天样本的分位数重新分成十箱。结果显示每天 PSI 都很低,但人工检查发现价格中位数已经明显上涨。原因是基准数据和当前数据分别分箱后,每个箱子的样本占比天然接近,真实漂移被重新分箱掩盖。

修正方式是只使用基准数据计算分箱边界,并将边界固定应用于后续样本。极端价格设置独立溢出箱,缺失值也作为单独一箱。对于品牌等高基数类别,则保留基准期头部类别,其余归入 OTHER,同时单独统计新类别占比。

第四步:建立分层告警

团队将告警分为观察、预警和严重三个等级,而不是看到单个指标越线就立即触发事故:

  • 观察:单个周期指标越过较低阈值,但模型效果代理指标稳定。
  • 预警:连续两个周期越线,或者多个相关特征同时发生变化。
  • 严重:漂移持续存在,并伴随置信度下降、人工抽检错误率上升或关键类目召回率下降。

阈值通过基准期回放确定。团队对历史稳定周期计算各指标的自然波动范围,再结合历史促销期数据评估告警灵敏度,避免直接照搬通用的 PSI 经验阈值。

一次漂移告警的定位过程

告警现象

大促开始后的第二天,商品价格 PSI 从日常的 0.03 至 0.07 上升到 0.31;KS 统计量 D 达到 0.18,p 值小于 0.001。与此同时,模型置信度 PSI 为 0.14,服装类目的人工抽检准确率下降。

如果只看 KS 的 p 值,结论只能是价格分布存在统计差异;如果只看 PSI,则无法确定变化发生在哪里。团队进一步查看每个价格箱的贡献后发现,低价区间占比显著增加,高价区间变化有限。

根因分析

按照来源站点和类目切片后,漂移主要集中在一个新增促销频道。该频道将优惠后的到手价写入原价字段,而训练数据中的同名字段保存的是标价。问题本质上是字段语义变化,而不是正常的市场价格波动。

文本嵌入聚类的 KL 散度也同步升高。进一步抽样发现,促销商品标题增加了大量优惠词和直播相关词。由于部分词汇在基准分布中接近零,未经平滑的 KL 散度一度出现异常大值。加入平滑项并重新归一化后,指标才恢复为可比较状态。

处理结果

团队没有直接重训模型,而是先修复价格字段映射,并将促销文案拆分为独立特征。修复后价格 PSI 和 KS 统计量回落,置信度分布也逐步恢复。之后,促销频道被纳入独立监控切片,避免总体数据掩盖局部来源的异常。

真实项目中的常见踩坑

1. 把漂移等同于模型效果下降

输入分布变化不一定降低模型效果。例如季节变化可能改变商品类目占比,但各类目内部特征与标签关系仍然稳定。漂移指标应与准确率、召回率、人工抽检结果或业务代理指标联合判断。

2. 每个周期重新分箱

动态分箱会改变比较坐标,使 PSI 失去一致基准。分箱边界应由基准数据确定并版本化;只有完成基准重建审批后才能更新。

3. 只看 KS 的 p 值

大样本容易产生统计显著,小样本又可能缺少检验功效。应同时设置 KS 统计量阈值和最小样本量,并结合分位数差异判断业务影响。

4. KL 散度没有处理零概率

新增类别或稀有词会造成零概率问题。可以加入统一的平滑值,但平滑参数必须固定并记录,否则不同周期的结果不可比。

5. 总体指标掩盖局部漂移

总体 PSI 正常,不代表每个国家、渠道、类目或设备类型都正常。监控应保留关键业务切片,但切片过多会增加多重检验和告警噪声,需要配置最小样本量与优先级。

6. 数据管道变化被误判为业务变化

字段类型转换、默认值修改、去重规则调整和采集来源变化都会引起分布突变。告警记录应关联数据版本、采集任务版本、特征代码版本和模型版本,以便快速区分数据故障与真实市场变化。

方法与数据来源如何选择

若团队需要长期补充公开网页、电商、搜索或多模态数据,可以根据数据类型和更新频率评估 Dataify 提供的标准数据集、定制交付以及网页采集、SERP、视频数据和通用采集 API;无论数据来自内部还是外部,进入训练或评估流程前都应采用一致的字段定义、采样规则和版本记录。

方法与数据来源如何选择
使用场景建议主指标辅助检查
信用分、价格、时长等连续特征PSIKS 统计量、分位数变化
需要判断两个连续样本是否同分布KS 检验效应量、样本量、业务阈值
类别概率、词频或预测概率分布KL 散度Jensen-Shannon 散度、零概率比例
模型评分卡或风控评分监控PSI坏账率、校准度、KS 指标
文本或图像嵌入漂移聚类后 PSI 或 KL 散度中心距离、下游任务评估
类别字段出现新取值类别 PSI新增类别率、未知类别率

建议的生产落地流程

  1. 明确监控对象,包括原始字段、特征、标签、模型输出和业务切片。
  2. 选择稳定且具有代表性的基准窗口,保存不可变的数据快照。
  3. 固定清洗、缺失值处理、类别合并和平滑规则。
  4. 根据变量类型选择 PSI、KL 散度或 KS 检验,不要求所有字段使用同一方法。
  5. 用历史稳定周期回放指标,建立每个字段自己的波动基线。
  6. 配置最小样本量、连续触发次数和多指标联合告警规则。
  7. 在告警中展示贡献最大的分箱、类别、渠道和时间段。
  8. 将漂移结果与模型效果、人工抽检和业务指标关联。
  9. 记录数据、特征、模型和基准集版本,确保问题可复现。
  10. 仅在业务结构发生长期变化时重建基准,避免告警后自动更新基准。

常见问题

PSI、KL 散度和 KS 检验能否只选一个?

可以从一个主指标开始,但三者不能完全互换。常见做法是用 PSI 进行持续告警,用 KS 检验验证连续变量的分布差异,再用 KL 散度分析类别概率、词频或模型预测概率的结构变化。

PSI 大于 0.25 是否一定代表严重漂移?

不一定。0.25 只是常见经验值,实际阈值需要结合字段的自然波动、样本量、分箱方式、业务季节性和模型风险进行回放校准。

KS 检验的 p 值很小,是否应立即重训模型?

不应仅凭 p 值决定重训。大样本下轻微变化也可能高度显著,需要同时检查 KS 统计量、变化持续时间、模型效果、人工抽检结果以及数据管道是否发生变更。

KL 散度计算结果为无穷大怎么办?

通常是比较分布中出现了零概率。应使用固定的平滑值处理零频次,并重新归一化。若需要方向无关且范围更稳定的指标,可以同时计算 Jensen-Shannon 散度。

高维文本或图像嵌入如何做漂移检测?

可先用固定版本的模型生成嵌入,再通过固定聚类、中心距离或降维映射构造可比较的分布。不要在每个周期重新训练聚类或降维模型,否则比较空间会发生变化。

数据漂移检测应该多久运行一次?

应根据数据更新速度、风险和最低样本量决定。高频风控或推荐业务可以按小时运行,电商和搜索数据通常按天运行,更新缓慢的数据集可按周或数据版本运行。

总结

生产环境中,PSI 适合作为可解释的日常漂移告警指标,KS 检验适合验证连续变量的经验分布差异,KL 散度适合分析概率、词频和聚类占比等完整分布的变化。落地时应固定基准窗口、分箱边界、平滑参数与数据处理口径,并设置最小样本量、连续触发和业务切片规则。检测到漂移后,不应直接重训模型,而应先排查字段语义、采集管道和特征版本,再结合模型效果与业务指标判断影响。