此回调函数用于确定提前停止的条件。
以下属性会赋给助推器对象:
- best_score最佳迭代时的评估分数
- best_iteration发生最佳分数的助推迭代次数(为了二进制模型的互操作性,采用基于0的索引)
相同的值也会作为回调函数的结果存储为 R 属性,另外还有一个附加属性 stopped_by_max_rounds,它指示是否由于 stopping_rounds 条件发生了提前停止。请注意,存储在 R 属性下的 best_iteration 将遵循基于1的索引,因此它将比通过 xgb.attr() 或 xgb.attributes() 访问的 C 级别 'best_iteration' 大 '1'。
为了使提前停止生效,evals 中至少需要一个数据集。
用法
xgb.cb.early.stop(
  stopping_rounds,
  maximize = FALSE,
  metric_name = NULL,
  verbose = TRUE,
  save_best = FALSE
)参数
- stopping_rounds
- 在评估指标没有改善的情况下,停止训练的轮数。 
- maximize
- 是否最大化评估指标。 
- metric_name
- 用作提前停止标准的评估列的名称。如果未设置,则使用最后一列。假设 - evals中的测试数据被标记为- dtest,并且无论 AUC 在- evals中的位置如何,都希望使用测试数据中的 AUC 进行提前停止,那么需要设置以下之一:- metric_name = 'dtest-auc'或- metric_name = 'dtest_auc'。指标名称中所有的破折号 '-' 字符都视为等同于下划线 '_'。
- verbose
- 是否打印提前停止信息。 
- save_best
- 训练是返回最佳模型还是最后一个模型。如果设置为 - TRUE,它将只保留检测到的最佳迭代之前的助推轮次,而丢弃之后的回合。- xgb.cv函数和- gblinear助推器尚不支持此参数。
值
一个 xgb.Callback 对象,可以传递给 xgb.train() 或 xgb.cv()。