#r #machine-learning #plot #tree #regression
#r #машинное обучение #сюжет #дерево #регрессия
Вопрос:
Я изучаю этот веб-сайт о методе пакетирования. https://bradleyboehmke.github.io/HOML/bagging.html
Я собираюсь использовать функцию train () с перекрестной проверкой для пакетирования. что-то вроде приведенного ниже.
насколько я понял, nbagg= 200 сообщает r попробовать 200 деревьев, вычислить RMSE для каждого и вернуть количество деревьев (здесь 80 ), для которых достигается наилучший RMSE.
теперь, как я могу увидеть, какие значения RMSE других значений nbagg были получены в этой модели. например, график зависимости RMSE от количества деревьев на этом веб-сайте (начните вводить метод cv и функцию train (), как показано на рисунке ниже)
ames_bag2 <- train(
Sale_Price ~ .,
data = ames_train,
method = "treebag",
trControl = trainControl(method = "cv", number = 10),
nbagg = 200,
control = rpart.control(minsplit = 2, cp = 0)
)
ames_bag2
## Bagged CART
##
## 2054 samples
## 80 predictor
##
## No pre-processing
## Resampling: Cross-Validated (10 fold)
## Summary of sample sizes: 1849, 1848, 1848, 1849, 1849, 1847, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 26957.06 0.8900689 16713.14
Комментарии:
1. решил ли мой ответ вашу задачу?
Ответ №1:
Поскольку пример, которым вы поделились, не полностью воспроизводим, я взял другой пример из mtcars
набора данных, чтобы проиллюстрировать, как вы можете это сделать. Вы можете расширить это для своих данных.
Примечание: RMSE, показанный здесь, представляет собой среднее значение из 10 RMSE, поскольку число CV здесь равно 10. Поэтому мы сохраним только это. В приведенном здесь примере также добавлены соответствующие библиотеки. И установить максимальное количество деревьев равным 15, просто для примера.
library(ipred)
library(caret)
library(rpart)
library(dplyr)
data("mtcars")
n_trees <-1
error_df <- data.frame()
while (n_trees <= 15) {
ames_bag2 <- train(
mpg ~.,
data = mtcars,
method = "treebag",
trControl = trainControl(method = "cv", number = 10),
nbagg = n_trees,
control = rpart.control(minsplit = 2, cp = 0)
)
error_df %>%
bind_rows(data.frame(trees=n_trees, rmse=mean(ames_bag2[["resample"]]$RMSE)))-> error_df
n_trees <- n_trees 1
}
error_df
покажет результат.
> error_df
trees rmse
1 1 2.493117
2 2 3.052958
3 3 2.052801
4 4 2.239841
5 5 2.500279
6 6 2.700347
7 7 2.642525
8 8 2.497162
9 9 2.263527
10 10 2.379366
11 11 2.447560
12 12 2.314433
13 13 2.423648
14 14 2.192112
15 15 2.256778