交叉验证之前的标准化

机器算法验证 交叉验证 正常化
2022-01-17 16:12:34

在执行重复的 k 折交叉验证之前对数据进行归一化(具有零均值和统一标准偏差)是否有任何负面后果,例如过度拟合?

注意:这是针对 #cases > total #features 的情况

我正在使用对数转换转换我的一些数据,然后如上所述对所有数据进行规范化。然后我正在执行特征选择。接下来,我将所选特征和归一化数据应用于重复的 10 倍交叉验证,以尝试估计泛化分类器的性能,并担心使用所有数据进行归一化可能不合适。我是否应该使用从该折叠的训练数据中获得的归一化数据对每个折叠的测试数据进行归一化?

任何意见都感激不尽!如果这个问题看起来很明显,请道歉。

编辑: 在对此进行测试时(根据以下建议),我发现与 CV 中的归一化相比,CV 之前的归一化在性能方面没有太大差异。

4个回答

要回答您的主要问题,在 CV 中扩展将是最佳且更合适的。但是,如果您的分类器重新调整数据(大多数情况下(至少在 R 中)),那么它可能并不重要,并且在实践中可能根本不重要。

但是,在交叉验证之前选择特征是一个很大的问题,并且会导致过度拟合,因为您将根据它们在整个数据集上的表现来选择它们。日志转换可以在外部执行,因为转换不依赖于实际数据(更多地取决于数据类型),如果您只有 90% 的数据而不是 100% 和没有根据数据进行调整。

还要回答您的评论,显然它是否会导致过度拟合将取决于您选择特征的方式。如果您偶然选择它们(您为什么要这样做?)或由于先验的理论考虑(其他文献),这无关紧要。但是,如果它取决于您的数据集,它会。Elements of Statistical Learnings 有一个很好的解释。您可以在这里自由合法地下载 .pdf 文件http://www-stat.stanford.edu/~tibs/ElemStatLearn/

与您有关的观点在第五版第 245 页的第 7.10.2 节中。它的标题是“进行交叉验证的错误和正确的方法”。

交叉验证最好被视为一种估计统计过程性能的方法,而不是统计模型。因此,为了获得无偏的性能估计,您需要在交叉验证的每个折叠中分别重复该过程的每个元素,其中包括标准化。所以我会说在每个折叠中标准化。

唯一没有必要的情况是统计程序对数据的比例和平均值完全不敏感。

我认为,如果归一化只涉及两个参数,并且你有一个大小合适的样本,那将不是问题。我会更关心转换和变量选择过程。10 折交叉验证在今天似乎很流行。没有人使用引导程序 632 或 632+ 进行分类器错误率估计,正如 Efron (1983) 在 JASA 中首先建议的那样,后来在 Efron 和 Tibshirani 的论文中使用 632+ 进行了跟进?

我个人喜欢 .632 方法。这基本上是通过替换来提升的。如果您这样做并删除重复项,您将从 1000 个输入集中获得 632 个条目。有点整洁。