描述性统计似乎并不能证实数据漂移

Descriptive statistics don't seem to confirm data drift

提问人:Fredrik 提问时间:11/16/2023 更新时间:11/16/2023 访问量:17

问:

我正在处理一个典型的分类机器学习任务,并面临着一个潜在的数据漂移问题。现象是,虽然我的模型训练了一些“旧”数据集,但从“旧”数据的评估子集上给出了很好的结果,但在一些“新”数据上表现非常差(严重错误地分类了其中一个类)。

我怀疑数据在新旧数据之间漂移,并尝试了一些方法来证明这一点。除了基于模型的方法(训练另一个试图区分新旧数据的模型)之外,我还尝试了统计测试,每个测试都证实了数据漂移。但是,当我实际比较新旧数据中的漂移特征(列)时,我看不到任何显着差异。

下面是一个示例。Kolmogorov-Smirov 检验在新旧数据中给出了同一列(根据我的模型,这是一个重要特征)之间的显着差异:

import pandas as pd
from scipy.stats import kstest

kstest(old_data[column], new_data[column])[1]

这给出了 P 值,其 P 值揭示了几乎完全的差异。但是当我检查主要的描述性统计数据时,它们实际上似乎并没有什么不同:2.505780e-145

pd.DataFrame({"Old":old_data[column].describe(), "New":new_data[column].describe()})

给:

           Old       New
mean  3.527651  3.406413
std   0.722752  0.689564
min   0.000000  0.000000
25%   3.000000  3.000000
50%   3.750000  3.083333
75%   4.000000  4.000000
max   5.000000  5.000000

尽管上面看似相似,但这两列实际上是否“不同”?我很困惑如何令人放心地验证所谓的漂移。

机器学习 统计漂

评论

0赞 Robert Dodier 11/17/2023
有趣的问题,虽然这里是题外话;请尝试 stats.stackexchange.com。也就是说,任何显著性检验都比无用更糟糕,因为它不能衡量实际差异。试着看一下有问题的变量的直方图,或者只是计算每个不同值的数量(因为从你显示的位来看,它可能具有相对较少的值)。具体而言,请查看与错误分类类相对应的案例子集的变量;这种情况的差异可能会被所有其他情况所消除。

答: 暂无答案