除非假设是嵌套的,否则交叉验证没有用吗?

机器算法验证 交叉验证 过拟合 岭回归
2022-03-26 12:42:03

如果我在回归设置中生成许多随机模型(根本不考虑数据),只需通过随机分配系数值,然后使用误差度量在数据集上评估这些模型并根据该误差度量选择最佳模型,我仍然会运行过度拟合?

最终我们将得到 OLS 解决方案(见评论)。如果是这种情况,交叉验证与此过程有何不同?例如,在 Ridge 或 Lasso 回归设置中,我仍在生成一堆模型(由索引)并在看不见的数据段上评估它们并选择最佳模型。λ

在我看来,CV 与 Ridge 和 Lasso 等标准正则化方法配合得很好,因为尝试过的模型有些嵌套(即 Ridge 是按 Rademacher 复杂度排序的)。因此,结构风险最小化原则开始发挥作用。否则,CV 看起来就像一个死胡同。如果我们使用交叉验证来比较一堆不相关的模型,我们最终会得到我上面描述的随机模型生成场景。

在结构风险最小化框架下,例如在 SVM 中,可以限制错误并降低模型复杂性。那么 CV 如何在与正则化方法结合使用时实际上达到相同的效果呢?当比较模型没有嵌套时怎么办?

2个回答

我的逻辑告诉我答案是肯定的。

而且,正如@amoeba 指出的那样:您的逻辑是正确的。

交叉验证与此过程有何不同?CV 本身与您的过度拟合无关。CV只是一个方案,如何保留独立的案例来测试一些模型。

请注意,如果您根据 CV 结果选择模型,则此模型选择过程(包括 CV)实际上是您训练的一部分

您需要对该最终模型进行独立验证(而不是验证)(您可以再次使用另一个CV 作为策略来保留独立于训练的案例 - 请参阅嵌套交叉验证)以获得对其的可靠估计泛化性能。

重申一下:问题不在于 CV,问题在于数据驱动的模型优化(选择)。

从这个角度来看,随机模型生成理论上应该比惩罚回归少过拟合,因为我的评估是在更大的看不见的数据段上进行的。

我不明白:为什么看不见的数据大小会有所不同?

CV 程序中是否有某种东西可以以某种方式缓解多重测试问题?

不。

与单个拆分相比,CV 唯一有助于多次测试的特性是 CV 最终会测试所有可用案例,因此由于测试案例数量有限,因此方差不确定性会稍微小一些。不过,与限制搜索空间(即限制比较次数)相比,这并没有多大帮助。

编辑:基于交叉验证调整或选择模型本质上是试图最小化预测误差(例如,均方预测误差)。您选择一个以输入数据的某些子集为条件的模型,并在遗漏位置预测输出。直观地说,这是一个预测,因为您是在样本外的位置评估模型。您的问题是,如果您的候选模型集独立于输入数据(即随机生成模型时不使用任何数据),会发生什么情况。

这个假设与任何其他模型拟合过程没有什么不同。例如,如果我从参数化模型开始,并且参数可以是任何实数,那么我也有无限的候选模型集。我们仍然需要通过最小化一些错误度量来从可能的模型集中选择最佳模型。因此,我们的两种模型选择都以某些训练数据为条件(如果使用交叉验证,可能是所有训练数据的一个子集)。您没有指定错误度量,因此假设它是均方误差 (MSE)。我选择模型参数,因此我的模型使用一些黑盒程序,假设 MSE 度量以训练数据为条件。您从一组随机模型中选择您的模型,假设 MSE 指标以训练数据为条件。

我们选择相同的模型吗?这取决于您是否从不同的候选模型集开始。

我们是否过度拟合数据?这取决于我们开始使用的候选模型集和训练数据。

我们知道我们过度拟合数据吗?如果我们进行交叉验证,那么我们可以检查预测误差。

ORIGINAL RESPONSE:从广义上讲,数据中有一些信号和一些噪声。当我们过拟合时,我们基本上是在拟合噪声。

在交叉验证中,我们在拟合时遗漏部分数据,并在预测遗漏点时评估错误。它类似于拥有训练和测试数据,因为我们测量的是样本外错误。无论省略哪些点,模型都必须很好地概括。如果我们拟合噪声,模型将无法很好地泛化。我们正在比较的模型集可能不包括那些试图在训练数据中省略数据点时对其进行插值的模型。如果模型以这种方式运行(例如,改善拟合的随机行为),那么很可能我们没有合理的通用模型拟合程序,并且交叉验证无法帮助我们。

如果您有无限的模型集和无限的时间,那么我想理论上您可以生成一个与通过任何其他程序生成的任何模型一样好或更好的模型。但是,您如何知道它是无限集中的哪个模型?如果是对训练数据进行插值的模型,那么是的,当训练数据有噪声时,它会过拟合。