ЦЕЛЬ: Я хочу понять, почему RMSE
увеличивается на меньшем дереве.
КОНТЕКСТ: Я изучаю алгоритм rpart
.У меня были некоторые данные, я разделил их на три части (обучение, проверка, тестирование).Я использую этот набор данных Kaggle.
Я подхожу к модели:
homes_model <- rpart(formula = SalePrice ~ .,
data = homes_train,
method = "anova")
С этим базовым деревом:
Затем я вычислил RMSE на тестовых данных:
pred_base <- predict(object=homes_model,
newdata = homes_test)
library(Metrics)
rmse_base <- rmse(actual=homes_test$SalePrice, #Actual values
predicted = pred_base )
rmse_base
этого первого дерева: 46894
.
ТогдаЯ посмотрел на cptable
, чтобы выбрать лучшее дерево в соответствии с самым низким правилом xerror+xstd
.
CP nsplit rel error xerror xstd
1 0.446 0 1.00 1.00 0.096
2 0.114 1 0.55 0.56 0.054
3 0.078 2 0.44 0.48 0.055
4 0.035 3 0.36 0.41 0.037
5 0.021 4 0.33 0.40 0.046
6 0.018 5 0.31 0.41 0.047
7 0.017 6 0.29 0.39 0.045
8 0.017 7 0.27 0.39 0.045
9 0.013 8 0.25 0.37 0.043
10 0.010 9 0.24 0.35 0.043
Я выбрал дерево с 7 разбиениями:
opt_index <- 7
cp_opt <- homes_model$cptable[opt_index, "CP"]
# Prune the model (to optimized cp value)
homes_model_opt <- prune(tree = homes_model,
cp = cp_opt)
Я построил его:
Затем я снова вычислил RMSE
на этом меньшем дереве по данным тестирования:
#Computing predicted values
pred_opt <- predict(object=homes_model_opt,
newdata = homes_test)
#Compute RMSE
rmse_opt <- rmse(actual=homes_test$SalePrice, #Actual values
predicted = pred_opt) #Predicted values
Это пошло вверхот 46894
до 49964
.ЗАЧЕМ?Разве меньшее дерево не должно лучше соответствовать невидимым данным?