假设我有训练和测试数据,并且我想训练一个分类器(例如 SVM)。通常,在分类之前对特征进行归一化,以确保某些特征的权重不会高于其他特征。
如果我对训练和测试数据使用不同的缩放参数,是否存在对性能进行错误估计的风险?(这假设我正在标准化到相同的范围,例如 [0,1]。)
假设我有训练和测试数据,并且我想训练一个分类器(例如 SVM)。通常,在分类之前对特征进行归一化,以确保某些特征的权重不会高于其他特征。
如果我对训练和测试数据使用不同的缩放参数,是否存在对性能进行错误估计的风险?(这假设我正在标准化到相同的范围,例如 [0,1]。)
一般来说,应该避免这种情况。学习算法的基本假设是所有数据都来自相同的分布。对训练和测试数据应用不同的归一化程序(或使用不同的参数)违反了这一点。
然而,在某些情况下这可能是合适的。如果已知测试数据遵循不同的分布,则可以应用其他方法。如果测试数据(未标记)可用于训练,则可以应用半监督学习等技术。如果差异是由于测量误差(例如批次效应,这在生物数据上很常见),可以应用批次效应去除方法(参见本文的比较和参考资料)。如果没有未标记的数据可用,我看不到任何处理它的方法,除非有先验知识。
我看不出与欠拟合或过拟合有任何关系。它更多地是关于应用具有不同参数的相同类型的转换。我已经尝试对具有各种数据大小 m = 10k、10k、100 的 MNIST 数据进行 ZCAWhitening。我的直觉是必须应用具有相同参数(mu、sigma)的相同转换。否则,训练或测试集的数据会出现偏差。我们可以认为它就像在训练集上加 1.0,在测试集上加 1.2。在这种情况下,测试集的偏差为 0.2。如果我们单独应用 ZCAWhitening,我们是否应该期望得到类似的结果?只有当训练和测试集有足够多的例子时,我才会说是。(如果潜在的变化不大,小数据集也可能由于它们本质上相似的结构而显示相似的结果)随着示例数量的增加,
m = 10k 普通归一化 = 94.980% 单独归一化 = 94.740%
m = 1k 普通归一化 = 81.500% 单独归一化 = 79.600%
m = 100 普通归一化 = 70.000% 单独归一化 = 65.000%
很明显,随着样本数量的增加,常见和单独归一化之间的差异会随着采样误差的减小而减小。