训练/测试真正独立时的信息泄漏?

数据挖掘 机器学习 数据挖掘 统计数据 交叉验证 数据泄露
2022-02-17 22:47:20

我很清楚,为了避免信息泄露,建议在训练数据集上拟合任何转换(例如,标准化或基于中值的插补)并将其应用于测试数据集。然而。如果数据是 iid 并且训练/测试拆分确实是随机的,我不清楚在训练/测试拆分之前将这些转换应用于整个数据集的风险是什么?

例如,如果原始数据集具有某些统计特征(例如,平均值、中位数和标准差),那么我会期望随机数据溢出,生成具有相同统计特征的训练和测试数据集。因此,标准化整个数据集然后拆分应该产生与拆分数据集、基于训练数据库标准化和转换测试数据集相同的结果。对于基于中值的插补,也可以提出相同的论点。

我错过了什么吗?

1个回答

好吧,请记住,当您标准化/估算数据时,您正在估计参数。鉴于您已定义的条件并拥有足够的数据以使估计值良好,那么我认为使用训练数据或所有数据并不重要(事实上,使用训练数据应该与使用所有数据的参数非常相似)。

但是,当数据集很小时,这些估计值可能会有很大的方差,如果您希望交叉验证可靠,您可能需要考虑它。一般来说,我认为对于缩放和缺失插补这应该不是问题,但如果你正在做一些更容易过度拟合的事情,比如目标编码,或者使用模型而不是单个参数进行插补,那么你应该再小心点。

为了不考虑是否有足够的数据,交叉验证框架试图在将模型投入生产时将测试数据视为服务数据应该是什么,然后你就没事了。