交叉验证之前的归一化


16

在执行重复的k倍交叉验证之前,对数据进行归一化处理(均值为零,统一标准差为零)是否会产生诸如过度拟合之类的负面后果?

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

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

任何意见表示感谢!很抱歉,这个问题似乎很明显。

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

Answers:


13

要回答您的主要问题,在简历中进行扩展将是最佳选择。但是,如果分类器重新缩放数据(大多数情况下这样做(至少在R中如此)),则可能无关紧要,并且在实践中可能根本不重要。

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

要回答您的评论,显然是否会导致过度拟合将取决于您选择特征的方式。如果您是偶然地选择它们(为什么要这么做?),或者是出于先验的理论考虑(其他文献),那么这无关紧要。但是,这取决于您的数据集。统计学习的要素有很好的解释。您可以在此处http://www-stat.stanford.edu/~tibs/ElemStatLearn/免费和合法下载.pdf

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


谢谢-当然,如果仅报告的结果是针对每次折叠使用所选模型(功能)获得的性能估计,这是否会导致过拟合?毕竟,您只报告给定功能子集的一般性能。
格林格林(BGreene)

我扩大了回答的范围,以解决您的评论。我认为链接中的解释比我现在能做的要好。
Erik

谢谢。这表明不应使用基于标准过滤器的功能选择,而应使用基于包装器的功能选择或等效功能。对于#Cases> #Features的情况,这仍然成立吗?(我有259个案例,共有56个特征)。我认为这里出错的可能性较小?
BGreene

4

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

唯一不需要的时间是统计过程对数据的标度和平均值完全不敏感。


我认为这是一个很好的答案,尽管它并不严格,但可以理解。我认为其含义是,如果您对每一对进行归一化,都可以确保归一化不会影响性能。尽管迪克兰在最后一行确实指出,还有其他方法可以避免偏见,但是没有其他方法可以避免偏见。如果在CV内部进行归一化,则与从外部进行偏移相比,它永远不会增加偏差。另一个答案指出,这种偏见可能不会产生太大影响。
汤姆·安德森

1

我认为,如果规范化仅涉及两个参数,并且您有一个不错的大小样本,那将不是问题。我将更关注转换和变量选择过程。如今,十倍交叉验证似乎风行一时。难道没有人像Efron(1983)在JASA中首先提出的那样,使用Bootstrap 632或632+来进行分类器错误率估计吗?随后,Efron和Tibshirani在随后的论文中使用632+来进行引导?


0

我个人喜欢.632方法。从根本上讲,这是通过更换来实现的。如果执行此操作并删除重复项,则从1000个输入集中将获得632个条目。


632估算器与您所说的不同。它实际上是两个误码率估计器的线性组合,给出了自举权重0.632Ë0估计值和表观错误率的0.368(也称为替换估计值)。
Michael R. Chernick '18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.