Classification xgboost R程序包提前停止不会触发
我在xgboost R包中使用xgb.train()来适应分类模型。我试图找出停止树的最佳迭代。我将早期停止轮数设置为6,通过观察每次迭代的指标,我可以清楚地看到验证数据的auc性能达到最大值,然后下降。但是,模型不会停止并继续运行,直到达到指定的nround 问题1:当验证性能开始下降时,它是迭代时定义的最佳模型(对于给定参数) 问题2:验证时的auc开始下降时,为什么模型不停止 问题3:如何最大化参数=假平均值?如果设置为FALSE,什么会使其停止?设置“提前停止”轮时是否必须为FALSE 问题4:模型如何知道观察列表中哪一个是验证数据?我见过人们使用test=、eval=、validation1=等等 谢谢大家!Classification xgboost R程序包提前停止不会触发,classification,xgboost,Classification,Xgboost,我在xgboost R包中使用xgb.train()来适应分类模型。我试图找出停止树的最佳迭代。我将早期停止轮数设置为6,通过观察每次迭代的指标,我可以清楚地看到验证数据的auc性能达到最大值,然后下降。但是,模型不会停止并继续运行,直到达到指定的nround 问题1:当验证性能开始下降时,它是迭代时定义的最佳模型(对于给定参数) 问题2:验证时的auc开始下降时,为什么模型不停止 问题3:如何最大化参数=假平均值?如果设置为FALSE,什么会使其停止?设置“提前停止”轮时是否必须为FALSE
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:它主要是基于位置的。先训练部分。接下来应该进入验证/评估阶段