Гиперпараметры Xgboost, настроенные с помощью Caret, полностью отличаются от параметров, возвращаемых h2o.grid? - PullRequest
0 голосов
/ 21 января 2020

Я настроил модель Xgboost с caret в R:

xgb_grid_1 = expand.grid(
            eta = c(0.01, 0.001, 0.0001),
            max_depth = c(2, 4, 6, 8, 10, 15),
            gamma = 1,
            nrounds = 1200,
            colsample_bytree = 1,  
            min_child_weight = 1, 
            subsample = 1
        )


xgb_trcontrol_1 <-
    trainControl(
      verbose          = TRUE,
      method           = "cv",
      # K-fold cross validation
      number           = 3,
      summaryFunction  = defaultSummary,
      allowParallel    = TRUE
    )

modFit = train(my_target ~ ., 
            data=training_data,
            trControl = xgb_trcontrol_1,
            tuneGrid = xgb_grid_1,
            method = "xgbTree",
            metric    = 'RMSE',
            maximize  = FALSE, 
            nthread = 1    
        )

Я возвращаю лучшую модель с:

modFit$bestTune enter image description here

И у меня есть хорошая кривая, показывающая, что моя модель устойчива и нет переоснащения около 1200 итераций:

enter image description here

Я хотел бы включить эту модель в конвейер, который использует только модели H2O, которые сохраняются как mojo. Тогда я думаю, что будет лучше тренировать модель с h2o.grid:

# Train the grid, straigthforward but too long to train
xgb_grid <- h2o.grid(algorithm = "xgboost",
                     y = my_target , x = model_vars,
                     training_frame = training_data,
                     nfolds = 3,
                     seed = 1,
                     hyper_params = hyper_params,
                     search_criteria = search_criteria)

Но я столкнулся с ошибкой MemoryError:

enter image description here

Предлагаемые решения для этого описаны здесь и здесь (например, для использования al oop и вызова h2o.RemoveAll()).

Я пытался это, но у меня все еще остается та же ошибка после нескольких итераций в l oop.

Теперь мой вопрос задается тем же набором данных, который использовался для настройки модели, и можно ли изобразить кривую сходимости, как показано выше ожидаем, что лучшие гиперпараметры, возвращаемые caret и h2o.grid, будут совершенно разными.

На самом деле, я бы хотел назвать caret гиперпараметры в h2o.xgboost для обучения модели и прогнозирования.

...