H2O提前停止只限制ntree吗?

Is H2O early stop only restrict against ntree?

我正在阅读以下两个例子

它们都在设置网格搜索时修复了 ntree,而不是提供一个 ntree 列表,例如

[i * 100 for i in range(1, 11)]. 

这是我的问题

  1. 我想知道的是,因为提前停止是针对 树?例如,我们可以设置ntree = 1000 和 score_tree_interval = 100,则可以对模型进行评估 性能从 100、200、... 到 1000。我理解正确吗?
  2. 但是如果我的网格搜索还包括learn_rate和max_depth。将要 提前停止还针对 learn_rate 和 max_depth 进行评估?我 表示在相同数量的树中,例如 ntree = 500,当它 评估不同的学习率 [0.01, 0.015, 0.025, 0.05, 0.1], 它会在学习率列表中的某处停止吗?
  3. 在 "stopping_tolerance" (http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/stopping_tolerance.html) 的文档 它描述了“模型将在达到三个后停止训练 对模型错误分类值的连续事件进行评分 不会提高 1e-3”。 那么三个得分项目是什么? 他们有 3 棵不同数量的树,也可能是相同数量的树 树但学习率不同?

正如 Darren Cook 在评论中提到的,您构建的每个模型都会提前停止,网格搜索也会提前停止。

对于单个 GBM,ntrees(树的数量)通过提前停止进行调整(即使用算法中指定的 stopping_tolerance、stopping_rounds、stopping_metric)。如果您打开流程并查看您的个人模型的得分历史图,您可以看到这一点。你会看到树的数量是 x 轴。

对于网格搜索,您添加了超参数层。因此,如果您在 GBM 模型中设置 ntrees = 100,并且在学习率 = [0.01, 0.015] 上设置网格,您将构建两个模型,一个 ntrees = 100 且学习率 = 0.01,另一个模型 ntrees = 100 并学习比率 = 0.015。并且,例如,在第一个模型中,每次迭代将有不同数量的树,而学习率将是固定的。

所以看看你的具体问题:

  1. 是的,这是正确的

  2. 网格将查看您的不同学习率(0.01、0.015 等)和最大深度之间是否有任何改进。所以你说的再一次是正确的。如果在不同的学习率和最大深度值下没有看到任何改进,网格将停止(即它不会继续构建新模型)。

  3. 所以这里需要把模型和网格搜索分开。如果在三个评分事件后没有看到改进,单个模型将停止构建(添加树)(这里你的 learn_rate 和 max_depth 将被修复,而 ntrees 会改变)。然后我们走出网格,如果网格在其构建的各个模型之间没有看到用户指定的改进量,则网格将停止构建新模型。