交叉验证与数据监听有何不同?


13

我刚读完《统计学习入门》。我想知道使用交叉验证为各种机器学习技术找到最佳调整参数是否不同于数据监听?

我们正在反复检查调整参数的哪个值会在测试集中产生最佳的预测结果。如果我们得到的调整参数恰好偶然地适合于此特定测试集,而在将来的某些测试集上表现不佳怎么办?

请原谅我对机器学习的新知识,我渴望受过教育。

编辑:请参阅@AdamO答案有关“数据监听”的定义。我在问题中使用的术语非常不准确。


我很高兴能找到这个……明天与一些发表了一些论文的研究人员进行TC……不幸的是遭受了这个问题的困扰。好问题!
pallevillesen

Answers:


12

我想知道使用交叉验证为各种机器学习技术找到最佳调整参数是否不同于数据监听?

您的关注是正确的时机,关于该主题的文献很多,例如

问题在于,带有交叉验证的超参数调整是一个数据驱动的优化过程,并且仍然倾向于过度拟合您的数据集(少于通过替换错误进行调整,但仍然如此)。尝试将调整交叉验证结果用作“独立”性能度量,就像吃馅饼(=调整)并保持(=度量最终模型性能)一样。

这并不意味着您不应该将交叉验证用于超参数调整。这仅表示您只能将其用于一个目的。为验证目的而优化或测量模型性能。

解决方案是您需要进行独立的验证,以测量通过调整后的超参数获得的模型的质量。这称为嵌套或双重验证。您将在此处找到有关这些主题的许多问题和答案。

从概念上讲,我喜欢说训练包括各种花哨的步骤,不仅适合“常规”模型参数,而且适合(自动调整)超参数。因此,数据驱动的λ优化显然是模型训练的一部分。

根据经验,您还可以说,模型训练是可以使用的最终黑匣子功能(能够为新案例生成预测)之前需要做的所有事情。


PS:我发现测试与验证的术语非常混乱,因为在我的领域中,“验证”意味着证明最终模型适合目的,因此,其他人称之为测试而不是验证。我更喜欢将内部测试集称为“调整测试集”,将外部测试集称为“最终验证测试集”等。


更新:

因此,如果我的模型(在这种情况下为我的调整参数)未能通过外部验证,那我该怎么办?

通常,这不会发生任何事情:在某些情况下会导致这种故障。我知道的所有此类情况都是过拟合的情况。您需要注意,尽管正则化有助于减少必要的培训案例数量,但数据驱动的优化需要大量数据。

我的建议:

  • 通常,您(应该)已经有了粗略的期望,例如应该可以实现什么性能,可疑的外观会是什么样。或说明您需要达到的性能和基准性能。从中以及可用训练案例的数量(针对您决定的拆分方案),计算内部(调整)测试的预期不确定性。如果不确定性表明您将无法进行有意义的比较,请不要进行数据驱动的优化。

  • 您应该检查通过选择的λ和通过自动调整过程找到的最佳λ 所获得的预测的稳定性如何。如果λ对于数据的不同分割而言不是相当稳定,则优化无效。

  • 如果您发现您将无法执行数据驱动的优化,或者根本无法使用,则可以根据您的专业知识(例如,基于类似数据的经验)来选择λ。或者,如果知道如果发现优化失败,则需要更强的正则化:导致失败的过度拟合将对过于复杂的模型起作用。


1
我同意,术语训练/测试/验证不是很直观
M. Berk 2014年

3

k

λλ

“数据侦听”或我称之为“探索性数据分析”不涉及预先指定的问题。您会列举一些可能的,看似有趣的结果,并分别进行评估。您可以执行任意数量的探索性分析,通常,您不必担心多次测试。您可以使用交叉验证分别评估每个探索性分析,但是当您有多个探索性分析时,它并不能固有地考虑多次测试。这种情况下的假设可能非常广泛,影响深远,“哪些因素与前列腺癌有关?” (在队列中测量了饮用咖啡,输精管切除术的使用情况等)。重大结果被视为“假说产生”,并且没有提供证实性证据。

k


λλ

1
@Anh:通过交叉验证对λ进行调整本身并不坏。但是这样做时,您“用完了”交叉验证以进行λ调整,并且需要另一个独立于建模的验证,包括调整λ的过程。不执行此外部验证是BAD。如果特定的λ不能“再次”起作用(例如,在另一数据拆分中),则您的优化无效。在这种情况下,通常还会看到外部验证结果与调整期间观察到的“最佳”性能之间存在很大差异。
cbeleites对SX不满意,2014年

@cbeleites因此,如果我的模型(在本例中为我的调整参数)未能通过外部验证,那我该怎么办?我无法返回并找到另一个调整参数,因为从本质上讲,这会将外部验证转换为调整测试集。那么该怎么办?
海森堡2014年

λ

λk

1

实际上,在CV期间,您尝试在验证集上找到最佳参数,该参数集不同于测试集。您将整个数据分为三组:训练集,验证集和测试集。当您正确进行交叉验证时,您永远不会在测试结束之前查看测试结束,因此根本没有监听。在测试集上进行交叉验证是一个严重的(至今仍是)方法学错误。


如果验证集和测试集不同,那么对我来说有意义。但是,在我读过的这本书(由Hastie等人撰写)中,他们认为使用保留测试很昂贵(我们没有使用大量数据进行训练),因此他们建议进行k倍交叉验证,我认为其中没有单独的测试集。
海森堡2014年

1
@Anh:两个拆分都可以通过重新采样(例如重复交叉验证)来完成,而不是只保留一个小数据集。
cbeleites对SX 2014年

@Anh:在k倍交叉验证中,您将原始训练集的k倍拆分为较小的训练集和验证集。原始测试集不涉及,仅在最后使用。
Jerorx

0

如果以Lasso示例为例,请参见“统计学习入门”的第225页,您会发现它们实际上是嵌套的交叉验证。也就是说,模型选择是在cv.glmnet一个train集合中完成的,该集合被cv.glmnet包装拆分为训练测试对。模型验证是在验证(“ test”)集上完成的,因此它是独立验证。

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.