Answers:
我想知道使用交叉验证为各种机器学习技术找到最佳调整参数是否不同于数据监听?
您的关注是正确的时机,关于该主题的文献很多,例如
问题在于,带有交叉验证的超参数调整是一个数据驱动的优化过程,并且仍然倾向于过度拟合您的数据集(少于通过替换错误进行调整,但仍然如此)。尝试将调整交叉验证结果用作“独立”性能度量,就像吃馅饼(=调整)并保持(=度量最终模型性能)一样。
这并不意味着您不应该将交叉验证用于超参数调整。这仅表示您只能将其用于一个目的。为验证目的而优化或测量模型性能。
解决方案是您需要进行独立的验证,以测量通过调整后的超参数获得的模型的质量。这称为嵌套或双重验证。您将在此处找到有关这些主题的许多问题和答案。
从概念上讲,我喜欢说训练包括各种花哨的步骤,不仅适合“常规”模型参数,而且适合(自动调整)超参数。因此,数据驱动的λ优化显然是模型训练的一部分。
根据经验,您还可以说,模型训练是可以使用的最终黑匣子功能(能够为新案例生成预测)之前需要做的所有事情。
PS:我发现测试与验证的术语非常混乱,因为在我的领域中,“验证”意味着证明最终模型适合目的,因此,其他人称之为测试而不是验证。我更喜欢将内部测试集称为“调整测试集”,将外部测试集称为“最终验证测试集”等。
更新:
因此,如果我的模型(在这种情况下为我的调整参数)未能通过外部验证,那我该怎么办?
通常,这不会发生任何事情:在某些情况下会导致这种故障。我知道的所有此类情况都是过拟合的情况。您需要注意,尽管正则化有助于减少必要的培训案例数量,但数据驱动的优化需要大量数据。
我的建议:
通常,您(应该)已经有了粗略的期望,例如应该可以实现什么性能,可疑的外观会是什么样。或说明您需要达到的性能和基准性能。从中以及可用训练案例的数量(针对您决定的拆分方案),计算内部(调整)测试的预期不确定性。如果不确定性表明您将无法进行有意义的比较,请不要进行数据驱动的优化。
您应该检查通过选择的λ和通过自动调整过程找到的最佳λ 所获得的预测的稳定性如何。如果λ对于数据的不同分割而言不是相当稳定,则优化无效。
如果您发现您将无法执行数据驱动的优化,或者根本无法使用,则可以根据您的专业知识(例如,基于类似数据的经验)来选择λ。或者,如果知道如果发现优化失败,则需要更强的正则化:导致失败的过度拟合将对过于复杂的模型起作用。
“数据侦听”或我称之为“探索性数据分析”不涉及预先指定的问题。您会列举一些可能的,看似有趣的结果,并分别进行评估。您可以执行任意数量的探索性分析,通常,您不必担心多次测试。您可以使用交叉验证分别评估每个探索性分析,但是当您有多个探索性分析时,它并不能固有地考虑多次测试。这种情况下的假设可能非常广泛,影响深远,“哪些因素与前列腺癌有关?” (在队列中测量了饮用咖啡,输精管切除术的使用情况等)。重大结果被视为“假说产生”,并且没有提供证实性证据。
实际上,在CV期间,您尝试在验证集上找到最佳参数,该参数集不同于测试集。您将整个数据分为三组:训练集,验证集和测试集。当您正确进行交叉验证时,您永远不会在测试结束之前查看测试结束,因此根本没有监听。在测试集上进行交叉验证是一个严重的(至今仍是)方法学错误。
如果以Lasso示例为例,请参见“统计学习入门”的第225页,您会发现它们实际上是嵌套的交叉验证。也就是说,模型选择是在cv.glmnet
一个train
集合中完成的,该集合被cv.glmnet
包装拆分为训练测试对。模型验证是在验证(“ test
”)集上完成的,因此它是独立验证。