ошибка при оптимизации через перекрестную проверку с помощью XGBoost - PullRequest
0 голосов
/ 26 марта 2020

Я запускаю случайную перекрестную проверку поиска для регрессии 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 не так?

...