Проблемы с параметром tuneGrid в случайном лесу
Я имел дело с некоторыми чрезвычайно несбалансированными данными, и я хотел бы использовать стратифицированную выборку для создания более сбалансированных случайных лесов
прямо сейчас я использую пакет каретки, в основном для настройки случайных лесов. Поэтому я пытаюсь настроить tuneGrid для передачи параметров mtry и sampsize в метод caret train следующим образом.
mtryGrid <- data.frame(.mtry = 100),.sampsize=80)
rfTune<- train(x = trainX,
y = trainY,
method = "rf",
trControl = ctrl,
metric = "Kappa",
ntree = 1000,
tuneGrid = mtryGrid,
importance = TRUE)
когда я запускаю этот пример, я получаю следующую ошибку
The tuning parameter grid should have columns mtry
Я сталкивался с такими дискуссиями, как этой предполагая, что передача этих параметров должна быть возможна.
С другой стороны, это страница предполагает, что единственным параметром, который может быть передан, является mtry
могу ли я даже пройти в sampsize в случайные леса через каретку?
2 ответов
похоже, что с вашим mtryGrid
. Кроме того, вы также можете использовать expand.grid
чтобы дать различные значения mtry
вы хотите попробовать.
По умолчанию единственным параметром, который можно настроить для случайного леса, является mtry
. Однако вы все равно можете передать другие параметры в train
. Но у них будет фиксированное значение, поэтому они не будут настроены train
. Но вы все равно можете попросить использовать стратифицированную выборку в train
. Ниже, как я бы сделал, предполагая, что trainY
- это логическое переменная, в соответствии с которой вы хотите стратифицировать свои образцы, и что вы хотите образцы размера 80 для каждой категории:
mtryGrid <- expand.grid(mtry = 100) # you can put different values for mtry
rfTune<- train(x = trainX,
y = trainY,
method = "rf",
trControl = ctrl,
metric = "Kappa",
ntree = 1000,
tuneGrid = mtryGrid,
strata = factor(trainY),
sampsize = c(80, 80),
importance = TRUE)
Я сомневаюсь, что можно напрямую передать sampsize
и strata
to train
. Но от здесь Я считаю, что решение заключается в использовании trControl()
. То есть,
mtryGrid <- data.frame(.mtry = 100),.sampsize=80)
rfTune<- train(x = trainX,
y = trainY,
method = "rf",
trControl = trainControl(sampling=X),
metric = "Kappa",
ntree = 1000,
tuneGrid = mtryGrid,
importance = TRUE)
здесь X
может быть c("up","down","smote","rose")
.