我在过去几年里一直在学习R,并且正在尝试创建一个回归树,用于分析工作。我有一个大约750K记录的数据集,一个数字的目标变量,以及相应的权重向量。目标或权重中没有空值。当我运行rpart()时,我只得到一个根节点。所以我摆弄了控制参数并开发了一个有14个节点,深度为10的树。我真的很想得到一棵比这更简单,更小的树。如果我提高cp参数(我从默认值0.01下降到0.0001以获得非root用户结果),或者提高minbucket或minsplit参数,那么14节点树只会向下折叠到根。 难道我不能在14个节点之间获得一些东西吗?
我尝试使用tree()包,虽然我对该包中的参数操作不太熟悉,但我似乎遇到了同样的问题,导致了一个" singlenode&#34 ;树。
我在网上遇到的一切建议,至少在我看来,我应该能够在树上剪掉,直到我得到的东西是我想要的。虽然14节点的结果不是最强的"世界上的树,它看起来并不像过于严峻的#34;这样一来,它会因为这么小的调整而崩溃,试图收紧它。我已经包含了结果图片来说明结构。
答案 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,你看到这样的东西还是只有两条线?