Реализация randomForest не позволяет производить выборку сверх количества наблюдений, даже при выборке с заменой. Почему это?
Работает отлично:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
Что я хочу сделать:
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) :
sampsize can not be larger than class frequency
Аналогичная ошибка без стратифицированной выборки:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Так как я ожидал, что метод будет брать образцы начальной загрузки, когда задано replace = TRUE в обоих случаях, я не ожидал этого предела.
Моя цель состоит в том, чтобы использовать это с опцией стратифицированной выборки, чтобы получить достаточно большую выборку из относительно редкого класса.
Ответы:
Это не отвечает почему , но чтобы обойти это, можно дублировать данные для редкого класса в данных обучения и взять стратифицированную выборку результата.
Два недостатка этого подхода по сравнению с «естественной» передискретизацией:
но это позволит построить лес с желаемым соотношением классов.
источник
У меня точно такой же вопрос, и я нашел его в журнале изменений для randomForest :
Изменения в 4.1-0:
Установка replace = TRUE вручную также, похоже, не отменяет это.
источник
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)