带插入库的修剪树返回复杂的树木

时间:2015-07-29 13:41:13

标签: r tree machine-learning r-caret rpart

我正在使用插入包用于树模型。我知道插入符号使用CV来找到修剪树的最佳调整参数。

这是我使用的代码:

id2 <- sample(1:nrow(data),2/3*nrow(data))
#learn
app <- data[id2,]
#test
test <- data[-id2,]

ctrl<-trainControl(method="cv", number=8,classProbs=TRUE, summaryFunction=twoClassSummary)
mod0 <- train(class~., data=app,method="rpart",trControl=ctrl,metric="ROC")
plot(mod0)
plot(mod0$finalModel,uniform=TRUE,margin=.1);text(mod0$finalModel,cex=0.8)

以下是我的数据:https://drive.google.com/open?id=1xrCXTLqKvGiGeo2X0Y1DvoSKvzbYFnyccLimceDIbZg

但每次运行代码时,我都会得到不同复杂程度的树(因为CV?),并且树没有被修剪,但是非常复杂并且有很多终端节点。

如何获得不那么复杂的树?

1 个答案:

答案 0 :(得分:3)

您需要在调用train之前设置种子以获得可重现的结果。此外,如果您并行运行,请在seeds中设置trainControl选项。

至于“复杂的树木”......这是非常主观的。为什么你认为它们更简单?

trainrpart的结果之间的一个区别是,后者使用“一个SE”方法进行修剪,而train修剪到具有最佳性能的深度。您也可以使用“一个SE”方法train(参见包网站),但我总是发现它往往是保守的(这是原始点)。

最高