此回调函数用于确定早停的条件。
以下属性被赋给 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()
。