caretStack в R - неиспользованный аргумент - PullRequest
0 голосов
/ 17 октября 2018

Я делаю стек моделей в R следующим образом:

ctrl <- trainControl(method="repeatedcv", number=5, repeats=3, returnResamp="final", savePredictions="final", classProbs=TRUE, selectionFunction="oneSE", verboseIter=TRUE)

models_stack <- caretStack(
  model_list,
  data=train_data,
  tuneLength=10,
  method="glmnet",
  metric="ROC",
  trControl=ctrl
)

1) Почему я вижу следующую ошибку?Что я могу сделать?Я застрял сейчас.

Timing stopped at: 0.89 0.005 0.91
 Show Traceback
Error in (function (x, y, family = c("gaussian", "binomial", "poisson", : unused argument (data = list(c(-0.00891097103286995, 0.455282701499392, 0.278236211515583, 0.532932725880776, 0.511036607368827, 0.688757947257125, -0.560727863490874, -0.21768155316146, 0.642219917023467, 0.220363129901216, 0.591732278371339, 1.02850020403572, -1.02417799431585, 0.806359545011601, -1.21490317454699, -0.671361009441299, 0.927344615788642, -0.10449847318776, 0.595493217624868, -1.05586363903119, -0.138457794869817, -1.026253562838, -1.38264471633224, -1.32900800143341, 0.0383617314263342, -0.82222313323842, -0.644251885665736, -0.174126438952992, 0.323934240274895, -0.124613523895458, 0.299359713721601, -0.723599218327519, -0.156528054435544, -0.76193093842169, 0.863217455799044, -1.01340448660914, -0.314365383747751, 1.19150804114605, 0.314703439577839, 1.55580594654149, -0.582911462615421, -0.515291378382375, 0.305142268138296, 0.513989405541095, -1.85093305614114, 0.436468060668601, -2.18997828727424, 1.12838871469007, -1.17619542016998, -0.218175589380355

2) Не должен ли иметь параметр "данные"?Если мне нужно использовать другой набор данных для моей модели супервизора 1-го уровня, что я могу сделать?

3) Также я хотел использовать AUC / ROC, но получил эти ошибки

The metric "AUC" was not in the result set. Accuracy will be used instead.

и

The metric "ROC" was not in the result set. Accuracy will be used instead.

Я видел несколько онлайн-примеров использования ROC, потому что это не для этой модели?Какие показатели я могу использовать, кроме точности для этой модели?Если мне нужно использовать ROC, каковы другие варианты.

В соответствии с запросом @RLave, это то, как выполняется мой model_list

grid.xgboost <- expand.grid(.nrounds=c(40,50,60),.eta=c(0.2,0.3,0.4),                
.gamma=c(0,1),.max_depth=c(2,3,4),.colsample_bytree=c(0.8),                
.subsample=c(1),.min_child_weight=c(1))

grid.rf <- expand.grid(.mtry=3:6)

model_list <- caretList(y ~.,
                    data=train_data_0,
                    trControl=ctrl,
                    tuneList=list(
                      xgbTree=caretModelSpec(method="xgbTree", tuneGrid=grid.xgboost),
                      rf=caretModelSpec(method="rf", tuneGrid=grid.rf)
                    )
  )

Мои train_data_0 и train_data оба из одного и того женабор данных.Все мои предикаторы набора данных представляют собой числовые значения с меткой в ​​виде двоичной метки

1 Ответ

0 голосов
/ 17 октября 2018

Ваш вопрос содержит три вопроса:

  1. Почему я вижу следующую ошибку?Что я могу сделать?Я застрял сейчас.

caretStack не должен иметь параметр data, data генерируется на основе прогнозов моделей в caretList.Взгляните на этот воспроизводимый пример:

library(caret)
library(caretEnsemble)
library(mlbench)

с использованием набора данных сонара:

data(Sonar)

создать сетку для настройки гиперпараметра для xgboost:

grid.xgboost <- expand.grid(.nrounds = c(40, 50, 60),
                            .eta = c(0.2, 0.3, 0.4),                
                            .gamma = c(0, 1),
                            .max_depth = c(2, 3, 4),
                            .colsample_bytree = c(0.8),                
                            .subsample = c(1), 
                            .min_child_weight = c(1))

создать сетку для радиочастотной настройки:

grid.rf <- expand.grid(.mtry = 3:6)

создать управление поездом:

ctrl <- trainControl(method="cv",
                     number=5,
                     returnResamp = "final",
                     savePredictions = "final",
                     classProbs = TRUE,
                     selectionFunction = "oneSE",
                     verboseIter = TRUE,
                     summaryFunction = twoClassSummary)

настроить модели:

model_list <- caretList(Class ~.,
                        data = Sonar,
                        trControl = ctrl,
                        tuneList = list(
                          xgbTree = caretModelSpec(method="xgbTree",
                                                   tuneGrid = grid.xgboost),
                          rf = caretModelSpec(method = "rf",
                                              tuneGrid = grid.rf))
)

создать составную команду:

models_stack <- caretStack(
  model_list,
  tuneLength = 10,
  method ="glmnet",
  metric = "ROC",
  trControl = ctrl
)

2) Не должен ли быть параметр "данные"?Если мне нужно использовать другой набор данных для моей модели супервизора 1-го уровня, что я могу сделать?

caretStack нужны только прогнозы из базовых моделей, чтобы создать ансамбль моделей, обученных на разных данных, которые выдолжен создать новый caretList с соответствующим data, указанным там.

3) Также я хотел использовать AUC / ROC, но получил эти ошибки

Самый простой способ использовать AUC в качестве метрикидолжен установить: summaryFunction = twoClassSummary в trainControl

...