【问题标题】:rpart.control minsplit not changing treerpart.control minsplit 不改变树
【发布时间】:2014-02-19 01:41:23
【问题描述】:

我正在玩 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 不修剪树。是不是我用的不对?

【问题讨论】:

    标签: r decision-tree rpart


    【解决方案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) 和 对应CP value (0.176) 并将其用于prune

    >fit2 = prune(rpart.kyphosis,cp=0.176)
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 2012-02-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 2014-01-05
      相关资源
      最近更新 更多