k折叠交叉验证的网格搜索


16

我有一个10倍交叉验证设置的120个样本的数据集。目前,我选择第一个保持的训练数据,并对其进行5倍交叉验证,以通过网格搜索选择gamma和C的值。我正在将SVM与RBF内核一起使用。由于我正在做十个10交叉验证以报告精度,请问,我是否在每个保留的训练数据中执行此网格搜索(有10个保留,每个包含10%的测试和90%的训练数据)?那不是很费时间吗?

如果我使用第一个保留项的gamma和C并将其用于k折交叉验证的9个保留项的其余部分,那是违反规定,因为我本来会使用火车数据获取gamma和C并再次使用火车数据的一部分作为第二次验证中的测试?


这个问题需要更多信息。您适合什么型号?在此模型中,γ和C是什么?此外,您能否通过编辑问题而不提供注释来提供此信息。
概率

Answers:


14

是的,这将是违规的,因为外部交叉验证的2-10折的测试数据将是1折的训练数据的一部分,用于确定内核和正则化参数的值。这意味着有关测试数据的某些信息可能已泄漏到模型的设计中,从而可能对性能评估产生乐观的偏见,对于对超参数的设置非常敏感的模型(例如,它最强烈地支持具有不良功能的模型)。

这种偏差对于小型数据集(例如这种数据集)可能最强,因为对于小型数据集,模型选择标准的方差最大,这会鼓励过度拟合模型选择标准,这意味着有关测试数据的更多信息可能会泄漏通过。

我在一两年前写了一篇论文,当时我完全被完全嵌套的交叉验证所引起的偏差偏差的幅度吓倒了,这很容易淹没分类器系统之间的性能差异。该论文是“关于模型选择的过度拟合和性能评估中的后续选择偏差”,Gacola Cawley,Nicola LC Talbot;JMLR 11(Jul):2079-2107,2010。

从本质上讲,应该将调整超参数视为拟合模型的有机组成部分,因此,每次在新的数据样本上训练SVM时,都应独立重新调整该样本的超参数。如果遵循该规则,您可能不会做错太多。获得无偏的性能估算值非常值得在计算上花费,否则会冒从实验中得出错误结论的风险。


1
我的亲身经历也使我对这种过度拟合的来源也非常谨慎。
cbeleites支持Monica 2012年

6

在为每个代理模型进行网格搜索之后,您可以并且应该检查以下几件事:

  • 优化参数(此处为C)的变化。 最佳参数稳定吗?如果没有,您很可能会遇到麻烦。γC
  • 比较内部和外部交叉验证的报告性能。
    如果内部(即调优)交叉验证看起来比外部(最终模型的验证)好得多,那么您也有麻烦:您过度拟合。存在很大的风险,即所调整的参数根本不是最佳的。但是,如果外部交叉验证正确完成(所有测试集确实独立于相应的替代模型),那么至少您对模型的性能仍然保持公正(!)的估计。但是您不能确定它是否是最佳的。
  • 最佳发音是什么?对于次优参数,性能会迅速下降吗?最佳性能有多好?

关于通过模型选择进行过度拟合,有很多话要说。但是,请记住,差异和乐观偏见都可能真正损害

  • 方差意味着您可能会意外地远离真正的最佳超参数。
  • 但是偏见也会造成伤害:如果您过度拟合,则可能会遇到许多模型看起来对内部交叉验证都是完美的情况(但实际上并非如此)。在这种情况下,调整可能会误入歧途,因为它无法识别模型之间的差异。
  • 如果偏差取决于超参数,那么您将遇到很大麻烦。

如果您对一个示例感兴趣,并且可以阅读德语,我可以将Diplom论文在线发表。

以我的经验,调整超参数是过度拟合的极其有效的方法。

现在,如果您意识到自己过度拟合,则主要有两种选择:

  • 报告说,优化存在过度拟合问题,但您进行了适当的外部验证,从而导致...(外部交叉验证结果)。
  • 限制了模型的复杂性。一种方法是修复超参数:

作为将超参数调整为每个训练集的替代方法,您可以预先指定(超)参数(即,预先修复它们)。我对模型所做的工作尽可能多,因为通常情况下您的案例比您少,请参见下文。
但是,必须事先进行诚实的固定:例如,我问一位同事在相似数据集上的优化参数(独立实验),或者进行了一项预实验,包括对参数进行网格搜索。然后,该第一个实验将用于为实际实验和数据分析固定一些实验参数以及模型参数。有关更多说明,请参见下文。

当然,可以对自动优化的模型进行适当的测试(双重或嵌套验证),但是您的样本量可能不允许将数据分割两次
在这种情况下,恕我直言最好是报告一个使用专业经验建立的模型的诚实估计,该经验是关于如何选择建模参数的,而不是报告对某种自动优化模型的过度乐观的估计。
关于这种情况的另一种观点是,您必须权衡

  • 由于搁置了另外一堆用于参数优化的情况而导致性能变差(较小的训练样本大小=>较差的模型,但参数“最优”)
  • 由于专家对参数进行了次优的固定,导致性能较差(但在较大的训练数据上)。

关于类似问题的一些类似想法:https : //stats.stackexchange.com/a/27761/4598


关于参数的确定和Dikran Marsupial的评论

我在使用Dikran Marsupial在他的论文中使用的超参数一词(他的答案中的链接)

我使用光谱数据。这是一种测量,其中数据分析和建模通常包括很多预处理。这可以看作是超参数(例如,基线应使用多项式的阶数?应包括哪些测量通道?)。还有其他一些更接近于您的svm参数的决策,例如,如果在训练“真实”模型之前完成了PCA以进行降维,则要使用多少个主要组件?有时我也使用SVM分类,因此必须决定SVM参数。

现在,恕我直言,修复超参数的最佳方法是,如果您有来自应用程序的原因。例如,我通常会基于物理/化学/生物学原因(即有关标本的知识以及由此得出的光谱行为)决定使用哪种基线。但是,我不知道这样的论点对SVM参数有帮助...

我上面提到的预实验情况如下:

  • 我们获取一堆细胞的数据(以区分不同的细胞系)。
  • 分析光谱,反复进行两次交叉验证SVM运行(在计算服务器上花费一两个晚上)。

    • γC
    • 我还观察到某种过拟合:外部交叉验证不如调整结果好。符合预期。
    • 但是,在超参数的调整范围内,性能仍然存在差异,并且在调整网格上的性能看起来相当平稳。好。
  • 我的结论是:虽然我不确定最终的超参数是否最优,但外部交叉验证为我提供了替代模型性能的适当估计。

  • 在实验部分,我们决定对实验设置进行一些更改(不影响数据信噪比,但在仪器自动化方面又向前迈进了一步)

  • 我们改进了实验设置并获得了新光谱。就细胞而言,它们需要新鲜生长。也就是说,新数据集甚至是独立的培养批次。

现在,我面临一个决定:是否应该“跳过”内部交叉验证,而仅使用我根据旧数据确定的超参数?

  • 如上所述,我冒着这些预定的超参数不是最佳的风险。
  • 但是我也不能确定通过进行内部(调整)交叉验证来获得真正的最佳超参数。
  • 但是,对旧数据的调整是稳定的。
  • 进行优化时,我将训练较少的样本:由于我的样本太少了,如果我将更多的样本留给第二轮交叉验证,我必须期望得到更差的模型。

因此,在那种情况下,我决定采用固定参数(通过对相似数据的经验了解,并知道将来我们将必须做“作业”,其中包括用大数据重新检查这些决策)。

请注意,重要的是我跳过了内部调整交叉验证),而不是外部。使用固定的超参数,我可以对可能欠佳的模型的性能进行无偏估计。的确,这个估计值有很大的方差,但是无论我是否进行内部调整,此方差基本上是相同的。
跳过外部交叉验证,我将获得对调整后的模型的乐观偏向估计-根据应用程序和数据可能毫无价值(如果过于乐观),并且乐观偏向显然是不可接受的。


抱歉,您必须对此答案不满意,但是对超参数使用预先指定的值不是一个好习惯,因为最佳概括取决于这些参数的适当设置,这些设置会因数据集而异(对于问题,样本中的数据将很少)进行采样)。实验前的网格搜索甚至更糟,因为它导致与我在论文中讨论的完全相同的偏见形式。对于SVM,不存在将数据拆分两次的问题,因为您几乎可以免费使用虚拟留一法交叉验证作为内部CV中的模型选择标准。
迪克兰有袋博物馆,2012年

但是,检查优化参数的变化是一个很好的建议。如果您有足够的数据可以从数据中可靠地估计出参数和超参数,那么我在论文中提到的那种偏差就不会有太大的问题。但是,如果由于数据集太小而导致优化的超参数值存在很大的可变性,则在这种情况下,确实有必要使用嵌套交叉验证和其他此类严格方法来避免性能评估中的重大偏差。
迪克兰有袋博物馆,2012年

@DikranMarsupial:我更清楚地解释了我的背景,看看。另外,我还更彻底地阅读了您的论文。我认为我们的观点相差不远。如果您愿意,让我们在聊天中见面-我对您的论文有很多疑问……
cbeleites支持Monica 2012年

@DikranMarsupial :(不幸的是,对于我的大多数数据,由于具有嵌套/分层数据结构,因此我无法使用分析性休假)。另外,我在“留一法”上遇到了一些丑陋的惊喜,因此我进行了k折或自举验证。但是,这是这个问题的题外话。
cbeleites支持Monica 2012年

@DikranMarsupial:如果优化的参数不稳定,无论如何我都会遇到麻烦。当然,那么我不能得出结论,可以将这些参数用于新数据。但是,对于最终模型,我不会称其为最佳参数(在众多参数集中?)……我看到优化过程非常疯狂,但是内部(调整)验证的结果总是过分乐观。而且我可以通过将外部交叉验证与最佳模型的内部交叉验证估计值进行比较来进行测量。相应地更新了答案。
cbeleites支持Monica 2012年

5

γCkterr(γ,C)γCγ,C{2nl,2nl+1,,2nu}γ

我认为,关键是要在局部最小值(或每个1维投影)周围的表面上寻找一些平滑度,而不仅仅是采用全局最小值。

γ(pσ)1pγCC


因此,假设我有一个包含120个样本的数据集。我是否应该最初使用120个样本找到γ和C。然后,当使用90%的数据进行训练而10%的数据进行测试时,是否使用相同的gamma和C对k个保持点进行10倍交叉验证?这是否意味着我使用相同的训练集来获取伽玛和C,并且部分样本也在测试集上?
2012年

γC

(γ,C)(γ,C)(γ,C)

2
有区别;调整参数保留给必须输入的数据才能适合模型。“权重”是拟合过程产生的结果。以套索/山脊为例λ 是调整参数, β是重量。您是正确的,所有值都是数据派生的,但是对于CV而言,区别很重要。调整参数不是随机的,权重是随机的。这就是选择测试错误背后的统计原因。
muratoa

2
在套索/山脊 λ 支配先前分布的方差 β。对于固定λ 您磨练了 β。为固定调整参数设置的每个CV列均得出该点的估计值βλ。到CV程序结束时,您可以根据先前的情况估算出测试误差。然后,您可以更改调整参数,以选择具有最佳测试错误属性的参数。
muratoa
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.