h2o GBM 提前停止
h2o GBM early stopping
我正在尝试用 h2o 使 GBM 过拟合(我知道这很奇怪,但我需要这个来说明问题)。所以我增加了树的 max_depth 和收缩,并禁用了停止标准:
overfit <- h2o.gbm(y=response
, training_frame = tapp.hex
, ntrees = 100
, max_depth = 30
, learn_rate = 0.1
, distribution = "gaussian"
, stopping_rounds = 0
, distribution = "gaussian"
)
过度拟合效果很好,但我注意到在第 64 棵树之后训练误差并没有改善。你知道为什么吗 ?如果我对 boosting 的概念理解得足够好,随着树数量的增加,训练误差应该会收敛到 0。
关于我的数据的信息:
大约 100 万次观察
10个变量
响应变量是定量的。
祝你有美好的一天!
如果 0.1 学习率不适合您,我建议降低学习率,例如 0.01 或 0.001。虽然你说训练错误在树 64 之后停止减少,但我仍然建议尝试添加更多树,至少 1000-5000,特别是如果你尝试较慢的学习率。
您是否尝试降低 min_split_improvement 参数? 1e-5 的默认值已经是微观的,但在有一百万行时是相关的。
我猜第 64 棵树之后的所有树(在你的例子中)都是微不足道的?
我正在尝试用 h2o 使 GBM 过拟合(我知道这很奇怪,但我需要这个来说明问题)。所以我增加了树的 max_depth 和收缩,并禁用了停止标准:
overfit <- h2o.gbm(y=response
, training_frame = tapp.hex
, ntrees = 100
, max_depth = 30
, learn_rate = 0.1
, distribution = "gaussian"
, stopping_rounds = 0
, distribution = "gaussian"
)
过度拟合效果很好,但我注意到在第 64 棵树之后训练误差并没有改善。你知道为什么吗 ?如果我对 boosting 的概念理解得足够好,随着树数量的增加,训练误差应该会收敛到 0。
关于我的数据的信息: 大约 100 万次观察 10个变量 响应变量是定量的。
祝你有美好的一天!
如果 0.1 学习率不适合您,我建议降低学习率,例如 0.01 或 0.001。虽然你说训练错误在树 64 之后停止减少,但我仍然建议尝试添加更多树,至少 1000-5000,特别是如果你尝试较慢的学习率。
您是否尝试降低 min_split_improvement 参数? 1e-5 的默认值已经是微观的,但在有一百万行时是相关的。 我猜第 64 棵树之后的所有树(在你的例子中)都是微不足道的?