gpt4 book ai didi

r - 交叉验证和提前停止

转载 作者:行者123 更新时间:2023-12-02 01:05:40 26 4
gpt4 key购买 nike

我试图确保我不会对 h2o 如何与交叉验证和验证数据集一起工作感到困惑。我确定我只是对用来描述这个的措辞感到困惑

    library(mlbench)
library(h2o)

data(Sonar)
dfh2o = as.h2o(Sonar)
splits=h2o.splitFrame(dfh2o)

train = splits[[1]]
valid = splits[[2]]

gbm_no_val_frame <- h2o.gbm(x = colnames(df), y = "Class", training_frame = train,
nfolds = 5, seed = 1234, ntrees = 4000, stopping_rounds = 5)


gbm_val_frame <- h2o.gbm(x = colnames(df), y = "Class", training_frame = train, validation_frame = valid,
nfolds = 5, seed = 1234, ntrees = 4000, stopping_rounds = 5)

h2o.flow() ### to see the validation frame stopping under models.
  1. gbm_no_val_frame 中用于提前停止的验证帧是什么?这如何停止以防止过度拟合?

  2. 我想我了解 gbm_val_frame 的工作原理 - 当经过训练的折叠/最终模型命中“有效”框架时分数停止提高时,它会停止过度拟合?

只是想消除我在这里的任何疑问..

最佳答案

How does early stopping work here exactly?

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

If I remove the validation_set here, ...

您没有在示例中指定验证数据集。相反,您通过设置 nfolds 请求交叉验证。

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

所以,是的,始终指定 validation_framenfolds

基于代码编辑的更新

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

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

(对于 GBM,我认为这很好;对于深度学习,进展是随机的并且可能有很多噪音,我发现每次折叠的早期停止点可能完全不同,并且对于决定早期停止的作用不大最终模型;所以我通常不喜欢使用 nfolds,而只使用 validation_frame)

关于r - 交叉验证和提前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47625766/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com