Я запускаю случайную перекрестную проверку поиска для регрессии XGboost через пакет mlr. Моя настройка:
library('mlr')
library('xgboost')
train.task <- makeRegrTask(data = train_data, target = "target")
test.task <- makeRegrTask(data= test_data, target = "target")
lrn <- makeLearner("regr.xgboost")
lrn$par.vals <- list(
objective="reg:gamma"
,eval_metric= "mae"
,early_stopping_rounds = 10
)
#set parameter space
params <- makeParamSet(
makeIntegerParam('max_depth', lower=3L, upper = 15L )
,makeNumericParam("min_child_weight",lower = 1L, upper = 10L)
,makeNumericParam("subsample",lower = 0.5, upper = 1)
,makeNumericParam("colsample_bytree",lower = 0.5, upper = 1)
,makeNumericLearnerParam("eta", lower=10/ntrees, upper = 0.3 )
,makeIntegerParam('nrounds', lower = 10L, upper = 2000L)
)
#set resampling strategy
rdesc <- makeResampleDesc("CV", iters=3L)
#search startegy
ctrl <- makeTuneControlRandom(maxit = 150L)
#parameter tuning
mytune <- tuneParams(learner = lrn
,task = train.task
,resampling = rdesc
,measures = mae
,par.set = params
,control = ctrl
,show.info = T)
Эти вычисления выполнялись хорошо до комбинации 113 параметров, где в качестве значения MAE я получаю «NaN»: представлен ниже
[288] train-mae:0.964692
[289] train-mae:0.964503
[290] train-mae:0.964989
[291] train-mae:0.965080
[292] train-mae:0.965028
[293] train-mae:0.964473
[294] train-mae:0.964592
[295] train-mae:0.964647
[296] train-mae:NaN
Error in if ((maximize && score > best_score) || (!maximize && score < :
missing value where TRUE/FALSE needed
Любые идеи, что может go не так?