交叉验证之外的超参数调整有多糟糕?

机器算法验证 交叉验证 验证 超参数
2022-01-26 19:20:34

我知道在交叉验证之外执行超参数调整会导致对外部有效性的偏高估计,因为用于测量性能的数据集与用于调整特征的数据集相同。

我想知道这是一个多么糟糕的问题我可以理解这对特征选择有多么不利,因为这会给你大量的参数来调整。但是,如果您使用的是 LASSO(它只有一个参数,即正则化强度),或者没有特征选择的随机森林(它可以有几个参数,但没有像添加/删除噪声特征那样引人注目)怎么办?

在这些情况下,您期望您对训练误差的估计有多乐观?

我将不胜感激有关此的任何信息——案例研究、论文、轶事等。谢谢!

编辑:澄清一下,我不是在谈论在训练数据上估计模型性能(即,根本不使用交叉验证)。“交叉验证之外的超参数调整”是指仅使用交叉验证来估计每个单独模型的性能,但包括外部的第二个交叉验证循环来纠正超参数调整过程中的过度拟合(不同于训练过程中的过度拟合)。参见例如这里的答案

4个回答

这种偏见的影响可能非常大。一些机器学习会议中的开放机器学习竞赛很好地证明了这一点。这些通常有一个训练集、一个验证集和一个测试集。竞争对手看不到验证集或测试集的标签(显然)。验证集用于确定每个人都可以在比赛进行时看到的排行榜上的竞争对手的排名。根据测试数据,在比赛结束时处于排行榜领先地位的人在最终排名中非常低是很常见的。这是因为他们已经为他们的学习系统调整了超参数,以最大限度地提高他们在排行榜上的表现,并且这样做过度拟合了验证数据通过调整他们的模型。更有经验的用户很少或根本不关注排行榜,并采用更严格的无偏性能估计来指导他们的方法。

我的论文中的示例(由 Jacques 提到)表明,这种偏差的影响可能与学习算法之间的差异具有相同的大小,所以简短的回答是,如果你是,请不要使用有偏差的性能评估协议真正有兴趣找出什么有效,什么无效。基本规则是“将模型选择(例如超参数调整)视为模型拟合过程的一个组成部分,并将其包含在用于性能评估的交叉验证的每个折叠中)。

事实上,正则化比特征选择更不容易过拟合,这正是 LASSO 等是执行特征选择的好方法的原因。然而,偏差的大小取决于特征的数量、数据集的大小和学习任务的性质(即,有一个元素取决于特定的数据集,并且会因应用程序而异)。这与数据相关的性质意味着您最好通过使用无偏协议并比较差异来估计偏差的大小(报告该方法在这种特殊情况下对模型选择的过度拟合具有鲁棒性可能是有意义的在自身)。

GC Cawley 和 NLC Talbot (2010),“模型选择中的过度拟合和性能评估中的后续选择偏差”,机器学习研究杂志,11,p.2079,第 5.2 节。)

  • 您所说的偏差仍然主要与过度拟合有关。
  • 您可以通过仅评估很少的模型来修复正则化超参数以及在合理选择范围内降低复杂性来保持低风险。

  • 正如@MarcClaesen 指出的那样,您有适合您的学习曲线,这将在一定程度上减轻偏见。但是学习曲线通常只在极少数情况下是陡峭的,而且过度拟合也是一个更大的问题。

最后,我希望偏见很大程度上取决于

  • 数据(很难过度拟合单变量问题......)和
  • 你的经验和建模行为:我认为,如果你对模型类型和应用程序都有足够的经验,并且你表现得非常好并且不屈服于更复杂模型的诱惑。但当然,我们不认识您,因此无法判断您的建模有多保守。
    此外,承认您花哨的统计模型是高度主观的,并且您没有剩余的案例来进行验证,这通常不是您想要的。(即使在预期整体结果会更好的情况下也是如此。)

我不使用 LASSO(由于物理原因,变量选择对​​我的数据没有多大意义),但 PCA 或 PLS 通常效果很好。山脊将是接近 LASSO 且更适合此类数据的替代方案。有了这些数据,我发现“快捷方式验证”与正确的独立(外部)交叉验证相比,错误分类要高出一个数量级。然而,在这些极端情况下,我的经验表明,快捷验证看起来非常好,例如 2 % 的错误分类 => 20 % 并具有适当的交叉验证。

不过,我不能给你直接适用于你的问题的真实数字:

  • 到目前为止,我确实更关心在我的领域中发生并导致数据泄露的其他类型的“捷径”,例如交叉验证光谱而不是患者(巨大的偏差!我可以告诉你 10% 的错误分类 -> 70% = 猜测3 类),或在交叉验证中不包括 PCA(2 - 5% -> 20 - 30%)。
  • 在我必须决定是否应该将我能负担得起的一个交叉验证用于模型优化或验证的情况下,我总是决定进行验证并根据经验修复复杂度参数。PCA 和 PLS 与正则化技术一样工作得很好,因为复杂性参数(# components)与问题的物理/化学性质直接相关(例如,我可能很好地猜测我期望有多少化学上不同的物质组)。此外,出于物理化学原因,我知道这些组件应该看起来有点像光谱,如果它们有噪音,我就会过度拟合。但是经验也可能是在先前实验中的旧数据集上优化模型复杂性,该实验通常足够相似,可以证明传输超参数是合理的,然后只使用新数据的正则化参数。
    这样,我不能声称拥有最佳模型,但我可以声称对我可以获得的性能进行了合理的估计。
    并且对于我拥有的患者人数,无论如何不可能进行具有统计学意义的模型比较(请记住,我的总患者人数低于估计单个比例的推荐样本量[根据@FrankHarrell 在这里给出的经验法则])。

你为什么不运行一些尽可能接近你的数据的模拟,让我们知道会发生什么?


关于我的数据:我使用光谱数据。数据集通常很宽:几十个独立病例(患者;虽然每个病例通常有很多测量值。Ca. 10³ 在原始数据中有所不同,我可以通过应用领域知识来减少无信息区域,将其减少到 250 个超出我的光谱并降低光谱分辨率。

如果您为 LASSO 选择超参数,则不需要嵌套 CV。超参数选择是在单个/平面 CV 交互中完成的。

鉴于您已经决定使用 LASSO,并且您已经决定保留哪些特征并将其提供给算法(LASSO 可能会删除一些特征,但这是 LASSO 优化而不是您的决定),剩下的唯一事情是选择λ超参数,您将使用平面/单个 CV:

1) 将数据划分为训练\学习集Li和测试集Ti并选择了λ最小化所有的平均误差Ti当用相应的训练Li.

2) λ是您选择的超参数。完毕。

(这不是选择超参数的唯一方法,但它是最常见的一种 - 还有GC Cawley 和 NLC Talbot(2010)讨论和批评的“中值”过程,“模型选择中的过度拟合和后续选择偏差在性能评估中”,机器学习研究杂志,11,第 2079 页,第 5.2 节。)

我理解您要问的是:使用我在上面步骤 1 中计算的错误有多糟糕(允许我选择的最小错误λ) 作为分类的泛化误差的估计λ未来的数据?在这里,您在谈论估计而不是超参数选择!

我知道测量此估计偏差的两个实验结果(与合成数据集的真实泛化误差相比)

两者都开放访问。

在以下情况下,您需要嵌套 CV:

a)您想在 LASSO 和其他一些算法之间进行选择,特别是如果它们也有超参数

b) 如果您想报告对最终分类器的预期泛化误差/准确度的无偏估计(LASSO 与λ)。

事实上,嵌套 CV 用于计算分类器泛化误差的无偏估计(使用最佳的超参数选择 - 但您不知道哪些是超参数的值)。这就是让您在 LASSO 和 SVM-RBF 之间做出决定的原因——应该选择具有最佳泛化误差的那个。而这个泛化错误就是你用来报告 b) 的错误(令人惊讶的是,在 b)你已经知道最佳超参数的值 -λ- 但嵌套的 CV 程序不使用该信息)。

最后,嵌套 CV 并不是计算预期泛化误差的合理无偏估计的唯一方法。至少还有其他三个提案

任何复杂的学习算法,如 SVM、神经网络、随机森林……如果你允许它们(例如通过弱/无正则化),都可以达到 100% 的训练准确率,结果是绝对可怕的泛化性能。

例如,让我们使用带有 RBF 内核的 SVMκ(xi,xj)=exp(γxixj2). 对于(或某个可笑的大数),核矩阵成为单位矩阵。这导致模型具有的训练集准确度和恒定的测试集预测(例如,全部为正或全部为负,取决于偏差项)。γ=100%

简而言之,你可以很容易地在你的训练集上得到一个完美的分类器,它在独立的测试集上绝对没有学到任何有用的东西。那是多么糟糕。