我进行了 580 次模型-数据集实验,以证明即使你非常努力,仅仅通过查看数据漂移结果几乎不可能知道模型正在退化。
在我看来,数据漂移检测方法在我们想要了解模型出了什么问题时非常有用,但它们并不是了解模型性能如何的正确工具。
本质上,将数据漂移作为性能监控的代理并不是一个好主意。
我想通过给数据漂移方法第二次机会并尽力从中获取最大价值来证明这一点。我建立了一种依赖漂移信号来估计模型性能的技术,并将其结果与当前最先进的性能估计方法(PAPE [arxiv 链接] 和 CBPE [文档链接])进行了比较,以查看哪种技术表现最佳。
为了有效比较数据漂移信号与性能估计方法,我使用了一个模拟典型生产机器学习模型的评估框架,并运行了多个数据集-模型实验。
在数据方面,我使用了来自 Folktables 包的数据集。(Folktables 预处理美国人口普查数据以创建一组二元分类问题)。为了确保结果不会因模型性质而产生偏差,我为 Folktables 中包含的多个预测任务训练了不同类型的模型(线性、集成提升)。
然后,我建立了一种依赖漂移信号来估计模型性能的技术。该方法使用单变量和多变量数据漂移信息作为 DriftSignal 模型的特征,以估计我们监控的模型的性能。它的工作原理如下:
- 在参考数据(测试集)上拟合单变量/多变量漂移检测计算器。
- 使用拟合好的计算器测量生产集中的观测漂移。对于单变量漂移检测方法,我们使用 Jensen Shannon、Kolmogorov-Smirnov 和 Chi2 距离度量/测试。同时,我们使用 PCA 重构误差 和 域分类器 进行多变量方法。
- 构建一个 DriftSignal 模型,该模型使用参考期内的漂移结果作为特征,并以监控模型性能作为目标来训练回归算法。
- 使用训练好的 DriftSignal 模型估计生产集上监控模型的性能。
您可以在此 GitHub Gist 中找到此方法的完整实现。
然后,为了评估,我使用了 MAE 的修改版本,因为我需要一个考虑误差标准差的聚合版本。为了解决这个问题,我将绝对/平方误差按每个评估案例计算的标准误差 (SE) 进行缩放。我们将 SE 缩放的指标称为平均绝对标准误差 (MASTE)。
然后就是运行所有 580 个实验并收集结果的问题了。
由于每种性能估计方法都试图估计被监控模型的 roc_auc,因此我报告了估计的 roc_auc 和实际的 roc_auc 之间的 MASTE。
![]() |
---|
分析中涉及的方法试图估计被监控模型的 AUC-ROC。因此,在实验结束后,我们得到了估计的和实际的 AUC-ROC。为了比较两者之间的误差,我们计算了 MASTE(MAE 的修改版)以评估哪种性能估计方法效果最好。这就是这张表格所报告的。 |
PAPE 似乎是最准确的方法,其次是 CBPE。令人惊讶的是,恒定测试集性能位居第三。紧随其后的是单变量和多变量漂移信号模型的随机森林版本。
此图显示了不同方法(包括 PAPE 和 CBPE)的性能估计质量。
这是一张特定时间序列图,显示了模型的实际 ROC AUC(黑色)与所有性能估计方法进行比较。PAPE(红色)准确地估计了最显著性能变化的方向,并近似了其幅度。
实验表明,与数据漂移相比,有更好的工具可以检测性能退化,尽管我尽力从漂移信号中提取所有有意义的信息,以创建准确的性能估计方法。
有更好的工具可以量化数据漂移对模型性能的影响。因此,我希望这能帮助业界认识到,监控细粒度指标毫无意义,并且一个模糊特征的变化可能没有任何意义。最好是首先估计模型性能,然后,如果它下降,再检查数据漂移结果,而不是反过来。
完整的实验设置、数据集、模型、基准测试方法以及项目中使用的代码都可以在我上周写的这篇更长的文章中找到。