R xgboost 使用 early.stop.round 进行预测

zuk*_*uku 2 r xgboost

我有以下代码。让我们假设优化在 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)
Run Code Online (Sandbox Code Playgroud)

zuk*_*uku 5

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