2

我正在玩rpart。我正在使用一个有 5000 行的银行的游戏数据集,有 7 个 IV,并且该类有 2 个因素。

原始模型是(没有设置控制参数):

UB_rpart <- rpart(UB_tree, method="class", data=UBank_train)

然后我在 rpart.plot 中创建一棵树,没有问题。

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

Pruned_UB_rpart <-prune(UB_rpart,cp=.01, minsplit=10, minbucket=round(minsplit/3))

我绘制了修剪过的树,它看起来与第一棵树相同。我不断更改 minsplit(甚至高达 1000),以查看它何时更改。树永远不会改变。

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

那么为什么 minsplit 不修剪树。我没有正确使用它吗?

4

1 回答 1

1

在 Kyphosis Data 的帮助下找到以下修剪说明:

>printcp(rpart.kyphosis)  

在此处输入图像描述 printcp显示拟合 rpart 对象的 cp 表,并根据复杂性参数打印最佳修剪表。要确定这棵树是否合适,或者某些分支是否需要进行修剪,我们可以使用 cptable。cptable 提供了模型整体拟合的简要总结。该表从最小的树(0 分割)到最大的树(7 分割)打印。CPtable 总是列出分割数而不是节点数(即 1+分割数)。

有一条规则要求1 SE rule找到最佳分割数。根据这个规则取smallest Xerror (1.2941)并添加到它对应的standard error (0.2355)。相加得到1.5296. 我们需要找到分裂最少且小于这个数字的分裂。实际上,所有 4 个都适合这个范围。所以,我们取fewest (nsplit=0)and 对应CP value (0.176)并用 that to prune

>fit2 = prune(rpart.kyphosis,cp=0.176)
于 2014-01-28T05:05:08.903 回答