我正在使用大约54K记录和5个类(pop)的数据集,其中一个类是无效的。我正在使用插入包和以下内容来运行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
作为附加参数,但没有任何改进。
感谢您的任何帮助。
答案 0 :(得分:0)
尝试使用更小的cp=0.00001
或cp = -1
来运行模型。如果它仍然没有拆分该节点,那么这意味着拆分不会改善总体适应性。
您还可以尝试将拆分条件从默认基尼杂质更改为信息增益标准:parms = list(split = "information")
如果您强行拆分,最好快速检查一下:
比较原始模型和模型的训练与测试集的准确性与小cp
。
如果原始模型的训练与测试之间的差异要小得多,那么另一个模型可能会过度拟合数据。