首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rpart.control最小拆分不更改树

rpart.control最小拆分不更改树
EN

Stack Overflow用户
提问于 2014-01-28 07:38:55
回答 1查看 2.7K关注 0票数 2

我在玩rpart。我使用的是一家银行的play数据集,有5000行,有7个IV,类有2个因子。

原始模型为(未设置控制参数):

代码语言:javascript
复制
UB_rpart <- rpart(UB_tree, method="class", data=UBank_train)

然后,我在rpart.plot中创建了一个树,没有任何问题。

然后,我尝试通过添加一些控制参数来修剪树:

代码语言:javascript
复制
Pruned_UB_rpart <-prune(UB_rpart,cp=.01, minsplit=10, minbucket=round(minsplit/3))

我绘制了修剪后的树,它看起来与第一棵树完全相同。我一直在修改minsplit (甚至高达1000),看看它什么时候会改变。这棵树永远不会改变。

但是,当我将cp更改为.05时,树就会发生变化。

那么为什么minsplit不修剪这棵树呢?我是不是用错了?

EN

回答 1

Stack Overflow用户

发布于 2014-01-28 13:05:09

在Kyphosis数据的帮助下,可以找到以下关于剪枝的解释:

代码语言:javascript
复制
>printcp(rpart.kyphosis)  

printcp显示拟合的rpart对象的cp表,并基于复杂性参数打印最优剪枝的表。要确定树是否合适,或者是否需要对某些分支进行修剪,我们可以使用cptable。cptable提供了模型的总体拟合的简要摘要。从最小的树(0个拆分)到最大的一个(7个拆分)打印表格。CPtable始终列出拆分数量,而不是节点数(这是1+the拆分数量)。

有一个名为1 SE rule的规则,用于查找最佳拆分数量。根据此规则,获取smallest Xerror (1.2941)并向其添加相应的standard error (0.2355)。将其相加得到1.5296。我们需要找到拆分最少且小于这个数字的拆分。实际上,所有4个都在这个范围内。因此,我们获取fewest (nsplit=0)和相应的CP value (0.176),并将其用于prune

代码语言:javascript
复制
>fit2 = prune(rpart.kyphosis,cp=0.176)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21394054

复制
相关文章

相似问题

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