Classification xgboost R程序包提前停止不会触发

Classification xgboost R程序包提前停止不会触发,classification,xgboost,Classification,Xgboost,我在xgboost R包中使用xgb.train()来适应分类模型。我试图找出停止树的最佳迭代。我将早期停止轮数设置为6,通过观察每次迭代的指标,我可以清楚地看到验证数据的auc性能达到最大值,然后下降。但是,模型不会停止并继续运行,直到达到指定的nround 问题1:当验证性能开始下降时,它是迭代时定义的最佳模型(对于给定参数) 问题2:验证时的auc开始下降时,为什么模型不停止 问题3:如何最大化参数=假平均值?如果设置为FALSE,什么会使其停止?设置“提前停止”轮时是否必须为FALSE

我在xgboost R包中使用xgb.train()来适应分类模型。我试图找出停止树的最佳迭代。我将早期停止轮数设置为6,通过观察每次迭代的指标,我可以清楚地看到验证数据的auc性能达到最大值,然后下降。但是,模型不会停止并继续运行,直到达到指定的nround

问题1:当验证性能开始下降时,它是迭代时定义的最佳模型(对于给定参数)

问题2:验证时的auc开始下降时,为什么模型不停止

问题3:如何最大化参数=假平均值?如果设置为FALSE,什么会使其停止?设置“提前停止”轮时是否必须为FALSE

问题4:模型如何知道观察列表中哪一个是验证数据?我见过人们使用test=、eval=、validation1=等等

谢谢大家!

param<-list(
  objective="binary:logistic",
  booster="gbtree",
  eta=0.02, #Control the learning rate
  max.depth=3, #Maximum depth of the tree
  subsample=0.8, #subsample ratio of the training instance
  colsample_bytree=0.5 # subsample ratio of columns when constructing each     tree
)

watchlist<-list(train=mtrain,validation=mtest)

sgb_model<-xgb.train(params=param, # this is the modeling parameter set     above
                 data = mtrain,
                 scale_pos_weight=1,
                 max_delta_step=1,
                 missing=NA,
                 nthread=2,
                 nrounds = 500, #total run 1500 rounds
                 verbose=2,
                 early_stop_rounds=6, #if performance not improving for 6 rounds, model iteration stops
                 watchlist=watchlist,
                 maximize=FALSE,
                 eval.metric="auc" #Maximize AUC to evaluate model
                 #metric_name = 'validation-auc'
                 )
param
  • 回答1:不,不是最好的,但从偏差方差来看已经足够好了 折衷的观点
  • 回答2:它可以工作,可能是你的代码有问题。请您分享每一个增压步骤的列车和测试集AUC的进度输出,以证明这一点?如果您100%确定它不工作,那么您可以在XGBoost git项目中提交错误通知单
  • 回答3:
    Maximize=FALSE
    用于自定义优化功能(比如自定义
    merror
    类型的东西)。您总是希望最大化/增加AUC,因此
    maximize=TRUE
    更适合您
  • 回答4:它主要是基于位置的。先训练部分。接下来应该进入验证/评估阶段