首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rpart的关键方法选择

rpart的关键方法选择
EN

Stack Overflow用户
提问于 2017-03-16 05:48:47
回答 1查看 3.1K关注 0票数 1

cp中选择rpart()函数中的复杂性参数( rpart )和方法的规则是什么?我读过几篇关于这个包裹的文章,但内容太技术性了,我无法理解。

示例:

代码语言:javascript
复制
rpart_1 <- rpart(myFormula, data = kyphosis,
                 method = "class", 
                 control = rpart.control(minsplit = 0, cp = 0))
plotcp(rpart_1)
printcp(rpart_1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-17 03:42:21

通常不会选择method参数;它是作为解决问题的一部分为您选择的。如果是分类问题,则使用method="class",如果是回归问题,则使用method="anova"等等。当然,这意味着您必须了解您要解决的问题是什么,以及您的数据是否会让您解决它。

cp参数控制拟合树的大小。您可以通过交叉验证或使用单独的测试数据集来选择其值。在处理这个问题上,rpart与大多数其他R建模包有些不同。默认情况下,rpart函数会自动进行交叉验证。然后检查模型以查看交叉验证的结果,并在此基础上对模型进行修剪。

已工作的示例,使用MASS::Boston数据集:

代码语言:javascript
复制
library(MASS)

# does 10-fold CV by default
Bos.tree <- rpart(medv ~ ., data=Boston, cp=0)

# look at the result of the CV
plotcp(Bos.tree)

图中显示,10倍交叉验证的误差从大约9个叶节点的树大小开始变平。虚线是曲线的最小值加上1标准误差,这是剪枝决策树的标准经验规则:您选择最小树的大小在最小的1 SE以内。

打印CP值可以更精确地查看如何选择树的大小:

代码语言:javascript
复制
printcp(Bos.tree)

           #CP nsplit rel error  xerror     xstd
#1  0.45274420      0   1.00000 1.00355 0.082973
#2  0.17117244      1   0.54726 0.61743 0.057053
#3  0.07165784      2   0.37608 0.43034 0.046596
#4  0.03616428      3   0.30443 0.34251 0.042502
#5  0.03336923      4   0.26826 0.32642 0.040456
#6  0.02661300      5   0.23489 0.32591 0.040940
#7  0.01585116      6   0.20828 0.29324 0.040908
#8  0.00824545      7   0.19243 0.28256 0.039576
#9  0.00726539      8   0.18418 0.27334 0.037122
#10 0.00693109      9   0.17692 0.27593 0.037326
#11 0.00612633     10   0.16999 0.27467 0.037310
#12 0.00480532     11   0.16386 0.26547 0.036897
# . . .

这表明CP值为0.00612对应于一棵有10个分裂(因此是11个叶)的树。这是您用来修剪树的cp的值。所以:

代码语言:javascript
复制
# prune with a value of cp slightly greater than 0.00612633
Bos.tree.cv <- prune(Bos.tree, cp=0.00613)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42826219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档