为什么只对训练集进行特征缩放?

机器算法验证 数据转换 数据集 尺度不变性
2022-03-15 06:52:28

我正在关注“Aurelien Geron”的“Hands-On Machine Learning with Scikit-Learn & TensorFlow”一书。

以下是关于特征缩放的评论:-

与所有转换一样,重要的是仅将缩放器拟合到训练数据,而不是完整数据集(包括测试集)。只有这样你才能使用它们来转换训练集和测试集(以及新数据)

我对上述文字的理解是,特征缩放只在训练而不是在测试集上进行。这种解释正确吗?

如果是,那么不对测试数据集使用特征缩放的原因是什么?

3个回答

不完全的。了解训练集的均值和标准差,然后:

  • 使用训练集均值和标准差对训练集进行标准化。
  • 使用训练集均值和标准差对任何测试集进行标准化。

这只是遵循一般原则:你学到的任何东西,都必须从模型的训练数据中学习

要跟进对答案的评论 - 如果您在训练/测试拆分之前缩放数据,您将得到数据泄漏。在拆分之前计算整个数据集的均值/标准差将导致泄漏,因为每个数据集的数据将包含有关另一组数据的信息(通过均值/标准差值),并可能影响预测准确性和过拟合。

数据可能已经通过实验和/或使用的惯例自然地缩放(例如预测百分比)。其次,您将拥有一个包含两个变量的系统。因此,您不能轻易地将“非规模化”学习与规模化学习进行比较。