此回调函数用于确定提前停止的条件。
以下属性会赋给助推器对象:
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()。