假设我们有一个训练数据集(有特征和标签)和一个测试数据集(只有特征)。
当我们建立一个需要对特征进行归一化的机器学习模型时,正确的归一化方法(防止信息泄露)是只使用训练数据集。即,错误的归一化方式是将训练(排除Y列)和测试数据集叠加在一起,进行归一化(即使用整个训练+测试数据集的均值和方差)。这里的直觉非常清楚:如果您想在生产中获得模型性能的无偏估计,那么当您训练模型时,您不应该在测试数据集中灌输任何用于衡量实际性能的信息你的模型。
我的问题是:当我们正确训练了模型并准备使用该模型进行预测时,我们应该如何对测试数据集进行归一化?我认为对测试数据集进行归一化的正确方法是:使用从训练数据集获得的均值和方差对测试数据集进行归一化。
但是,为什么不使用自己的均值和方差对测试数据进行归一化呢?或者为什么不将训练和测试数据集堆叠在一起,并使用整体均值和方差来标准化测试数据集?在预测阶段,我对数据窥探和信息泄露的想法和直觉还不清楚。