交叉验证和早期停止

时间:2017-12-04 02:40:16

标签: r validation cross-validation h2o

我正在努力确保我不会对h2o如何使用交叉验证和验证数据集感到困惑。我确信我对用于描述这个

的措辞感到困惑
if disparity < cutoff {
    vec4 result = vec4(imageColor.rgb, 0);
}
  1. 在gbm_no_val_frame中用于提前停止的验证框架是什么?这是如何阻止过度拟合的呢?

  2. 我想我理解gbm_val_frame是如何工作的 - 当训练过的折叠/最终模型碰到“有效”框架时,当分数停止改善时,它会停止过度拟合吗?

  3. 只想消除我在这里的任何疑虑..

1 个答案:

答案 0 :(得分:2)

  

如何提前停止工作?

你的假设是正确的。早期停止将用于每个CV模型,然后用于最终模型。

  

如果我在这里删除了validation_set,那么......

您未在示例中指定验证数据集。而是通过设置nfolds来请求交叉验证。

如果您删除nfolds但未指定validation_frame,则会使用 training 数据集上的分数来评估何时应停止提前停止。当您使用GBM时,这实际上意味着它不会提前停止:在添加每个额外的树后,GBM将始终变得更好。

所以,是的,请始终指定validation_framenfolds

基于代码编辑的更新

gbm_no_val_frame:对于每个5倍的数据,1/5的数据用作验证框架。 最终模型是使用所有数据构建的。它只会间接使用提前停止:它会忽略您给出的ntrees的值,而是使用5 cv模型最终使用的平均树数。 (来源:本书第102页的顶部,但它也在GBM FAQ中。)

关于你的第二个问题,我对the FAQ的解读表明,上述仍然是如何提前停止工作,并且验证集仅用于为您提供额外的统计数据。

(对于GBM,我认为这很好;对于深度学习,其中进度是随机的并且可能会更加嘈杂,我发现每个折叠的早期停止点可能完全不同,并且对于确定早期停止最终模型;所以我通常不想使用nfolds,只使用validation_frame

相关问题