gpt4 book ai didi

r - 为什么较小的树上的 RMSE 值会增加 (RPART)

转载 作者:行者123 更新时间:2023-11-30 09:32:16 25 4
gpt4 key购买 nike

AIM:我想了解为什么 RMSE 在较小的树上会增加。

上下文:我正在学习rpart算法。我有一些数据,我将其分为三个部分(训练、验证、测试)。我正在使用this Kaggle dataset.

我适合模型:

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 个 split 的树:

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。为什么?较小的树不应该更好地适应看不见的数据吗?

最佳答案

树足够大以表示数据的变化,但又不能大到过度拟合,两者之间始终存在平衡。较大的树有时会产生更好的结果,因为它们对数据进行更精细的划分,因此代表了细微差别。较小的树有时会产生更好的结果,因为过度拟合的问题较少。但如果最小的树总是最好的,为什么不只使用一个节点呢?仅使用根节点就会使用平均值来估计值 - 不太可能真正准确。必须平衡两种相互冲突的力量才能获得最佳结果。

关于r - 为什么较小的树上的 RMSE 值会增加 (RPART),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53416637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com