训练集和测试集的特征缩放

数据挖掘 机器学习 分类 深度学习 监督学习
2021-09-30 17:17:06

假设我想使用梯度下降算法。我有一个训练集和一个测试集,我想通过均值归一化来进行特征缩放。

我应该对两组中的等效特征使用相同的均值和方差吗?为什么?

4个回答

您进行特征缩放以加速学习过程。特征可能有不同的尺度。一个可能是从 1 到 10,一个可能是从 -100 到 1000。使用标准化,您可以使它们的比例彼此相同,有助于加速学习过程。您应该在训练数据上分别找到每个特征的均值和方差。然后在训练和测试期间,每个特征都应该减少相应的平均值并除以相应的标准差。所以是的,对于测试和训练期间的每个特征,您必须为使用训练数据获得的均值和标准提供相同的值。我建议你看看这里

使用仅在训练集上计算的统计数据的主要原因是避免从测试集中泄漏信息。

如果这不是问题,那么使用整个数据集的统计数据是完全可以的。

请参阅此处进行进一步讨论。

使用缩放(或 Z 变换),您需要一个均值和一个方差,这应该来自总数据。

更重要的是,如果您的模型将用于未来的数据,那么这个均值和方差也需要应用于新数据,而不是基于新数据的均值或方差。

建模中的一个重要假设是训练中的特征/模式在测试集中是相同或相似的。这是我们可以使用历史数据来预测未来的基础。

因此,这需要使用一个转换函数将值映射到另一个值的一致性。不同的均值和方差集,会导致不同的变换。

通过使用训练数据统计量(均值、标准差)进行归一化来避免信息泄漏到新数据中的论点似乎违反直觉,因为将训练均值和标准差插入新数据是从训练数据到新数据的信息泄漏。

从统计上看,这个过程“强制”将新数据的成员加入到训练人群中,这并不一定在所有情况下都是正确的:预测也是对基础过程平稳性的测试。

例如,平均差异的统计 t 检验使用每个组的统计数据,因此能够检测组之间的(平均)差异;如果改为使用组合(或仅该组的一个)统计数据,这将是困难的(测试将具有较低的功效)。

我认为目前的做法试图通过将训练集中的信息“流血”到新集中来保持低预测误差。