Почему значения RMSE увеличиваются на меньшем дереве (RPART) - PullRequest
0 голосов
/ 21 ноября 2018

ЦЕЛЬ: Я хочу понять, почему RMSE увеличивается на меньшем дереве.

КОНТЕКСТ: Я изучаю алгоритм rpart.У меня были некоторые данные, я разделил их на три части (обучение, проверка, тестирование).Я использую этот набор данных Kaggle.

Я подхожу к модели:

homes_model <- rpart(formula = SalePrice ~ ., 
                     data = homes_train, 
                     method = "anova")

С этим базовым деревом:

enter image description here

Затем я вычислил 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)

Я построил его:

enter image description here

Затем я снова вычислил 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.ЗАЧЕМ?Разве меньшее дерево не должно лучше соответствовать невидимым данным?

1 Ответ

0 голосов
/ 21 ноября 2018

Всегда существует баланс между деревом, достаточно большим, чтобы представлять изменения в данных, и не настолько большим, чтобы оно переписывалось.Причина того, что большие деревья иногда дают лучшие результаты, заключается в том, что они более тонко разделяют данные и представляют нюансы.Причина того, что меньшие деревья иногда дают лучшие результаты, состоит в том, что с переоснащением меньше проблем.Но если самое маленькое дерево всегда было лучшим, почему бы просто не использовать один узел?Простое использование корневого узла оценило бы значение с использованием среднего значения, которое вряд ли будет действительно точным.Две конфликтующие силы должны быть сбалансированы, чтобы получить лучший результат.

...