Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么较小的树(RPART)上的RMSE值会增加_R_Machine Learning_Regression_Cart_Rpart - Fatal编程技术网

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

为什么较小的树(RPART)上的RMSE值会增加,r,machine-learning,regression,cart,rpart,R,Machine Learning,Regression,Cart,Rpart,AIM:我想了解为什么RMSE在较小的树上增加 上下文:我正在学习rpart算法。我有一些数据,我将其分为三个部分(培训、验证、测试)。我正在使用 我符合模型: homes_model <- rpart(formula = SalePrice ~ ., data = homes_train, method = "anova") 我选择了带有7个拆分的树: opt_index <- 7 cp_op

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

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

我符合模型:

homes_model <- rpart(formula = SalePrice ~ ., 
                     data = homes_train, 
                     method = "anova")
我选择了带有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)

它从
46894
上升到
49964
。为什么?较小的树不应该更适合看不见的数据吗?

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

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

这不是一个编程问题,更适合于这个问题,似乎更像是一个统计问题,而不是一个编码问题,所以您可以尝试将其移动到。这本书从第2章开始,对这类主题进行了一些非常容易理解的讨论。这不是一个编程问题,更适合于这个问题,似乎更像是一个统计问题,而不是一个编码问题,因此您可以尝试将其移至。本书从第2章开始,对这类主题进行了一些非常容易理解的讨论。
    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
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)
#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