R Catboost для обработки категориальных переменных - PullRequest
1 голос
/ 27 февраля 2020

У меня вопрос по поводу Catboost. Должен ли я предварительно обработать категориальные перед моделированием?

Если у меня 86 переменных, включая 1 целевую переменную. В этих 85 переменных есть 2 числовых c переменных и 83 категориальных переменных (тип Factor). Целевой переменной является двоичный коэффициент, 1 или 0.

Столбец 1 и столбец 4 - столбец 85 - тип факторов.
Столбцы 2 и 3 обозначены цифрами c.

Я немного запутался с cat_features в catboost.train(). В параметрах я могу задать вектор категориальных признаков. Также я могу установить в catboost.load_pool.

library(Catboost)
library(dplyr)

X_train <- train %>% select(-Target)
y_train <- (as.numeric(unlist(train[c('Target')])) - 1)
X_valid <- test %>% select(-Target)
y_valid <- (as.numeric(unlist(test[c('Target')])) - 1)

train_pool <- catboost.load_pool(data = X_train, label = y_train, cat_features = c(0,3:84))
test_pool <- catboost.load_pool(data = X_valid, label = y_valid, cat_features = c(0,3:84))

params <- list(iterations=500,
               learning_rate=0.01,
               depth=10,
               loss_function='RMSE',
               eval_metric='RMSE',
               random_seed = 1,
               od_type='Iter',
               metric_period = 50,
               od_wait=20,
               use_best_model=TRUE,
               cat_features = c(0,3:84))

catboost.train(train_pool, test_pool, params = params)

Однако, после того, как я запустил код выше, я получил ошибку:

Error in catboost.train(train_pool, test_pool, params = params) : 
  catboost/libs/options/plain_options_helper.cpp:339: Unknown option {cat_features} with value "[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84]"

Любая помощь?

...