我正在使用插入包用于树模型。我知道插入符号使用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?),并且树没有被修剪,但是非常复杂并且有很多终端节点。
如何获得不那么复杂的树?
答案 0 :(得分:3)
您需要在调用train
之前设置种子以获得可重现的结果。此外,如果您并行运行,请在seeds
中设置trainControl
选项。
至于“复杂的树木”......这是非常主观的。为什么你认为它们更简单?
train
和rpart
的结果之间的一个区别是,后者使用“一个SE”方法进行修剪,而train
修剪到具有最佳性能的深度。您也可以使用“一个SE”方法train
(参见包网站),但我总是发现它往往是保守的(这是原始点)。
最高