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

以下采用一个经过脱敏和重组的电商商品分类案例说明实施过程。案例中的数值用于呈现判断逻辑,不对应具体客户或平台。
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;无论数据来自内部还是外部,进入训练或评估流程前都应采用一致的字段定义、采样规则和版本记录。

| 使用场景 | 建议主指标 | 辅助检查 |
|---|---|---|
| 信用分、价格、时长等连续特征 | PSI | KS 统计量、分位数变化 |
| 需要判断两个连续样本是否同分布 | KS 检验 | 效应量、样本量、业务阈值 |
| 类别概率、词频或预测概率分布 | KL 散度 | Jensen-Shannon 散度、零概率比例 |
| 模型评分卡或风控评分监控 | PSI | 坏账率、校准度、KS 指标 |
| 文本或图像嵌入漂移 | 聚类后 PSI 或 KL 散度 | 中心距离、下游任务评估 |
| 类别字段出现新取值 | 类别 PSI | 新增类别率、未知类别率 |
建议的生产落地流程
- 明确监控对象,包括原始字段、特征、标签、模型输出和业务切片。
- 选择稳定且具有代表性的基准窗口,保存不可变的数据快照。
- 固定清洗、缺失值处理、类别合并和平滑规则。
- 根据变量类型选择 PSI、KL 散度或 KS 检验,不要求所有字段使用同一方法。
- 用历史稳定周期回放指标,建立每个字段自己的波动基线。
- 配置最小样本量、连续触发次数和多指标联合告警规则。
- 在告警中展示贡献最大的分箱、类别、渠道和时间段。
- 将漂移结果与模型效果、人工抽检和业务指标关联。
- 记录数据、特征、模型和基准集版本,确保问题可复现。
- 仅在业务结构发生长期变化时重建基准,避免告警后自动更新基准。
常见问题
PSI、KL 散度和 KS 检验能否只选一个?
可以从一个主指标开始,但三者不能完全互换。常见做法是用 PSI 进行持续告警,用 KS 检验验证连续变量的分布差异,再用 KL 散度分析类别概率、词频或模型预测概率的结构变化。
PSI 大于 0.25 是否一定代表严重漂移?
不一定。0.25 只是常见经验值,实际阈值需要结合字段的自然波动、样本量、分箱方式、业务季节性和模型风险进行回放校准。
KS 检验的 p 值很小,是否应立即重训模型?
不应仅凭 p 值决定重训。大样本下轻微变化也可能高度显著,需要同时检查 KS 统计量、变化持续时间、模型效果、人工抽检结果以及数据管道是否发生变更。
KL 散度计算结果为无穷大怎么办?
通常是比较分布中出现了零概率。应使用固定的平滑值处理零频次,并重新归一化。若需要方向无关且范围更稳定的指标,可以同时计算 Jensen-Shannon 散度。
高维文本或图像嵌入如何做漂移检测?
可先用固定版本的模型生成嵌入,再通过固定聚类、中心距离或降维映射构造可比较的分布。不要在每个周期重新训练聚类或降维模型,否则比较空间会发生变化。
数据漂移检测应该多久运行一次?
应根据数据更新速度、风险和最低样本量决定。高频风控或推荐业务可以按小时运行,电商和搜索数据通常按天运行,更新缓慢的数据集可按周或数据版本运行。
总结
生产环境中,PSI 适合作为可解释的日常漂移告警指标,KS 检验适合验证连续变量的经验分布差异,KL 散度适合分析概率、词频和聚类占比等完整分布的变化。落地时应固定基准窗口、分箱边界、平滑参数与数据处理口径,并设置最小样本量、连续触发和业务切片规则。检测到漂移后,不应直接重训模型,而应先排查字段语义、采集管道和特征版本,再结合模型效果与业务指标判断影响。