Я установил случайную модель леса.Я использовал оба пакета randomForest
и ranger
.Я не настраивал количество деревьев в лесу, я просто оставил для него номер по умолчанию, равный 500. Теперь я хотел бы посмотреть, достаточно ли этого, то есть достигли ли ошибки плато или нет.Поэтому я считаю, что мне нужно было бы извлечь отдельные деревья, выбрать случайным образом, например, 100, 200, 300, 400 и, наконец, 500 деревьев, вынуть из них древовидные деревья и вычислить ошибку OOB для 100, 200, ... деревьев последовательно.,Тогда я мог бы построить ошибку OOB против количества деревьев.Я обнаружил, что randomForest::getTree
и ranger::treeInfo
возвращают data.frame деревьев, но я не могу понять, что там есть.Более того, ranger::treeInfo
возвращает фрейм данных с 50% NA, а общий результат еще сложнее для чтения.Итак, мой вопрос:
- Как я могу отобразить ошибку OOB против количества деревьев, используемых в лесу, если у меня уже есть случайный лес с 500 деревьями?
- Почему
ranger::treeInfo
есть 50% НС и на самом деле только у этих строк есть прогнозы?
Вот минимальный пример:
mpg2 <- mpg %>%
mutate(is_suv = as.factor(class == 'suv')) %>%
select(-class)
mpg_model <- ranger::ranger(is_suv ~ ., data = mpg2)
ranger::treeInfo(mpg_model, tree = 100)