R xgboost 预测 early.stop.round

R xgboost predict with early.stop.round

我有以下代码。假设优化在 600 轮后停止,最佳轮数为 450 轮。将使用哪个模型进行预测 - 第 450 轮后还是第 600 轮后?

watchlist <- list(val=dval,train=dtrain)

param <- list(  objective           = "binary:logistic", 
                booster             = "gbtree",
                eval_metric         = "auc",
                eta                 = 0.02,
                max_depth           = 7,
                subsample           = 0.6,
                colsample_bytree    = 0.7
)

clf <- xgb.train(   params              = param, 
                    data                = dtrain, 
                    nrounds             = 2000, 
                    verbose             = 0,
                    early.stop.round    = 150,
                    watchlist           = watchlist,
                    maximize            = TRUE
)

preds <- predict(clf, test)

经过一番研究,我自己找到了答案。预测将在第 600 轮后使用模型。如果想使用效果最好的模型,应该使用 preds <- predict(clf, test, ntreelimit=clf$bestInd)