caretStack в r - неиспользованный аргумент
Я делаю стек моделей в 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, каковы другие варианты.
Извините за длинный список qns... Спасибо...
В соответствии с просьбой @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 ответ
Ваш вопрос содержит три вопроса:
- Почему я вижу следующую ошибку? Что я могу сделать? Я застрял сейчас.
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