跳到内容

此回调函数用于确定早停的条件。

以下属性被赋给 booster 对象

  • best_score 最佳迭代时的评估分数

  • best_iteration 获得最佳分数的 boosting 迭代次数(二进制模型互操作性的 0-based 索引)

相同的值也会作为 R 属性存储,作为回调函数的结果,此外还有一个附加属性 stopped_by_max_rounds,它指示是否因 stopping_rounds 条件而发生早停。请注意,存储在 R 属性下的 best_iteration 将遵循 base-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,并且无论它在 evals 中的位置如何,都想使用测试数据中的 AUC 进行早停,那么需要设置以下之一:metric_name = 'dtest-auc'metric_name = 'dtest_auc'。评估指标名称中的所有破折号 '-' 字符都被视为等同于 '_'。

verbose

是否打印早停信息。

save_best

训练是否应返回最佳模型或最后模型。如果设置为 TRUE,它将只保留到检测到的最佳迭代轮次的 boosting 轮,并丢弃之后的轮次。此参数尚未被 xgb.cv 函数和 gblinear booster 支持。

返回值

一个 xgb.Callback 对象,可以传递给 xgb.train()xgb.cv()