#r #machine-learning #random-forest #r-ranger
#r #машинное обучение #случайный лес #r-ranger
Вопрос:
Я хочу получить оптимальное количество деревьев для случайного леса путем отображения ошибки OOB в зависимости от Количество деревьев и посмотреть, в какой момент ошибка достигает максимума. Однако, поскольку моя проблема связана с интеллектуальным анализом текста, мои обучающие данные имеют тип разреженной матрицы, т. Е. В dgCMatrix. Это означает, что я не могу использовать пакет randomForest для обучения моей модели, поскольку randomForest не поддерживает разреженную матрицу. Вместо этого я должен использовать пакет ranger, но ranger не выдает ошибку OOB против Количество деревьев. Я попытался преобразовать свою разреженную матрицу в фрейм данных размером 90 000 на 5500 для запуска в randomForest, но это занимает очень много времени даже при параллельном выполнении, и у меня нет такой вычислительной мощности.
Итак, мои вопросы:
-
Как я могу отобразить ошибку OOB в зависимости от Количество деревьев, использующих ranger?
-
Каковы другие методы преобразования разреженной матрицы в фрейм данных? До сих пор я пытался
train_matrix <- as.data.frame(as.matrix(train_dtm))
-
Какие есть способы сократить время выполнения randomForest с использованием преобразованного фрейма данных?
-
Существуют ли другие способы определения оптимального количества деревьев без отображения ошибки OOB в зависимости от Количество деревьев, если вышеуказанный сбой?
Был бы признателен за любую помощь, если это возможно. Спасибо!
Ответ №1:
Я столкнулся с аналогичной проблемой, и в итоге я использовал подход «бедный человек» (это отвечает только на ваш первый вопрос):
library(ranger)
# sample data
# install.packages("AmesHousing")
d <- AmesHousing::make_ames()
nt <- seq(1, 501, 10)
oob_mse <- vector("numeric", length(nt))
for(i in 1:length(nt)){
rf <- ranger(Sale_Price ~ ., d, num.trees = nt[i], write.forest = FALSE)
oob_mse[i] <- rf$prediction.error
}
plot(x = nt, y = oob_mse, col = "red", type = "l")
Я не знаю, существует ли «оптимальное» количество деревьев, но построение большего количества деревьев, чем необходимо, может значительно замедлить ваши прогнозы, особенно при построении графиков частичной зависимости. Это единственная причина, по которой я это сделал.