在折叠到root-only之前,回归树的有效修剪限制?

时间:2016-06-28 03:44:21

标签: r tree rpart

我在过去几年里一直在学习R,并且正在尝试创建一个回归树,用于分析工作。我有一个大约750K记录的数据集,一个数字的目标变量,以及相应的权重向量。目标或权重中没有空值。当我运行rpart()时,我只得到一个根节点。所以我摆弄了控制参数并开发了一个有14个节点,深度为10的树。我真的很想得到一棵比这更简单,更小的树。如果我提高cp参数(我从默认值0.01下降到0.0001以获得非root用户结果),或者提高minbucket或minsplit参数,那么14节点树只会向下折叠到根。 难道我不能在14个节点之间获得一些东西吗?

我尝试使用tree()包,虽然我对该包中的参数操作不太熟悉,但我似乎遇到了同样的问题,导致了一个" singlenode&#34 ;树。

我在网上遇到的一切建议,至少在我看来,我应该能够在树上剪掉,直到我得到的东西是我想要的。虽然14节点的结果不是最强的"世界上的树,它看起来并不像过于严峻的#34;这样一来,它会因为这么小的调整而崩溃,试图收紧它。我已经包含了结果图片来说明结构。

My 14-node tree

1 个答案:

答案 0 :(得分:0)

这只是一条评论 - 但我没有足够的代表才发表评论。

首先 - 如果你能发布一个可重复的例子会很棒 - 虽然我想这可能很难,因为你看到的行为将取决于你的数据。

其次,你是否尝试过观看" cptable"你的一部分。例如,如果您的树名为rpart_1,则可以通过键入rpart_1 $ cptable来查看cptable。这是一个cptable的例子:

       CP    nsplit rel error    xerror       xstd
1 0.17045881      0 1.0000000 1.0001723 0.01374676
2 0.05035021      1 0.8295412 0.8299854 0.01125953
3 0.01888694      2 0.7791910 0.7865432 0.01199921
4 0.01177287      4 0.7414171 0.7446313 0.01251485
5 0.01000000      5 0.7296442 0.7362431 0.01248352

没有详细说明,CP列会告诉您哪个cp值会修剪树以获得一定数量的节点。如果你看一下树的cptable,你看到这样的东西还是只有两条线?