【发布时间】:2014-10-12 00:08:42
【问题描述】:
我正在使用一个包含大约 54K 记录和 5 个类(pop)的数据集,其中一个类无关紧要。我正在使用 caret 包和以下内容来运行 rpart:
model <- train(pop ~ pe + chl_small, method = "rpart", data = training)
我得到以下树:
n= 54259
node), split, n, loss, yval, (yprob)
* denotes terminal node
1) root 54259 38614 pico (0.0014 0.18 0.29 0.25 0.28)
2) pe< 5004 39537 23961 pico (0 0.22 0.39 2.5e-05 0.38)
4) chl_small< 32070.5 16948 2900 pico (0 0.00012 0.83 5.9e-05 0.17) *
5) chl_small>=32070.5 22589 10281 ultra (0 0.39 0.068 0 0.54) *
3) pe>=5004 14722 1113 synecho (0.0052 0.052 0.0047 0.92 0.013) *
很明显,节点5应该进一步拆分,但rpart没有这样做。我尝试使用cp = .001 到cp =.1 以及minbucket = 1000 作为附加参数,但没有任何改进。
感谢您对此的任何帮助。
【问题讨论】:
-
为什么说节点5必须拆分?如果节点内的类分布与预测变量无关,那么拆分它不会有任何好处。
-
另外,如果您想尽可能强制 rpart 拆分,请设置
cp = -1(或任何负数)。