Bonferroni 校正和机器学习

机器算法验证 机器学习 交叉验证 支持向量机 过拟合 邦费罗尼
2022-03-07 21:44:05

在心理学研究中,我了解到在单个数据集上测试多个假设时,我们应该使用 Bonferroni 方法来调整显着性水平。

目前我正在使用支持向量机或随机森林等机器学习方法进行分类。在这里,我有一个数据集,用于交叉验证以找到产生最佳精度的最佳参数(例如 SVM 的内核参数)。

我的直觉说(也许完全不正确)这是一个类似的问题。如果我正在测试太多可能的参数组合,那么我很有可能找到一个能产生很好结果的组合。然而,这可能只是机会。

总结一下我的问题:

在机器学习中,我们使用交叉验证来找到分类器的正确参数。我们使用的参数组合越多,意外找到一个好的参数组合的机会就越大(过度拟合?)。bonferroni 校正背后的概念是否也适用于此?这是一个不同的问题吗?如果是这样,为什么?

2个回答

您所说的 p 值校正在一定程度上是相关的,但是有一些细节使这两种情况非常不同。最重要的是,在参数选择中,您正在评估的参数或您正在评估它们的数据没有独立性。为了便于讨论,我将以在 K-Nearest-Neighbors 回归模型中选择k为例,但该概念也可以推广到其他模型。

假设我们有一个验证实例V,我们预测它会针对样本中的各种k值获得模型的准确性。为此,我们在训练集中找到k = 1,...,n最接近的值,我们将其定义为T 1 , ... ,T n对于我们的第一个k = 1值,我们的预测P1 1将等于T 1,对于k=2,预测P 2将是(T 1 + T 2 )/2P 1 /2 + T 2 /2,对于k=3将是(T 1 + T 2 + T 3 )/3P 2 *2/3 + T 3 /3事实上,对于任何值k,我们都可以定义预测P k = P k-1 (k-1)/k + T k /k我们看到预测不是彼此独立的,因此预测的准确性也不会是。事实上,我们看到预测值正在接近样本的平均值。因此,在大多数情况下,测试k = 1:20的值将选择与测试k = 1:10,000相同的k值除非您可以从模型中获得的最佳拟合只是数据的平均值。

这就是为什么可以在数据上测试一堆不同的参数而不必过多担心多重假设检验的原因。由于参数对预测的影响不是随机的,因此您的预测准确度不太可能仅仅因为偶然性而得到很好的拟合。您仍然必须担心过度拟合,但这是与多重假设检验不同的问题。

为了阐明多重假设检验和过拟合之间的区别,这次我们将想象制作一个线性模型。如果我们反复重新采样数据以制作我们的线性模型(下面的多条线)并评估它,在测试数据(暗点)上,偶然其中一条线将成为一个好的模型(红线)。这并不是因为它实际上是一个很好的模型,而是因为如果你对数据进行了足够的采样,一些子集就会起作用。这里要注意的重要一点是,由于测试了所有模型,因此在保留的测试数据上的准确性看起来不错。事实上,由于我们是根据测试数据选择“最佳”模型,因此该模型实际上可能比训练数据更适合测试数据。多重假设检验

另一方面,过度拟合是当您构建单个模型时,但会扭曲参数以使模型能够拟合超出可推广范围的训练数据。在下面的示例中,模型(线)完美地拟合了训练数据(空心圆圈),但在对测试数据(实心圆圈)进行评估时,拟合度要差得多。过拟合

我在某种程度上同意巴克的观点,但是模型选择不仅仅是kNN您应该使用带有验证集和测试集的交叉验证方案。您将验证集用于模型选择,将测试集用于模型误差的最终估计。它可以是嵌套的 k 折 CV 或训练数据的简单拆分。由于您选择了性能最佳的模型,因此最佳性能模型的验证集测量的性能将存在偏差。测试集的测量性能没有偏差,因为您老实说只测试了一个模型。如有疑问,请将您的整个数据处理和建模包含在外部交叉验证中,以获得对未来准确性的最小偏差估计。

据我所知,没有可靠的简单数学校正适合多个非线性模型之间的任何选择。我们倾向于依靠蛮力自举来模拟未来的模型精度。顺便说一下,在估计未来预测误差时,我们假设训练集是从总体中随机抽样的,并且未来的测试预测是从同一总体中抽样的。如果不是,那谁知道...

例如,如果您使用内部 5 倍 CV 来选择模型,而外部 10 倍 CV 重复 10 次来估计误差,那么您不太可能用过分自信的模型精度估计来欺骗自己。