【问题标题】:pruning tree with caret library returns complex trees使用插入符号库修剪树返回复杂树
【发布时间】:2015-07-29 13:41:13
【问题描述】:

我将 caret 包用于树模型。我知道插入符号使用 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?),树并没有真正修剪,而是非常复杂,并且有很多终端节点。

我怎样才能得到一个不太复杂的树?

【问题讨论】:

  • 提供可重现的示例和sessionInfo 的结果将有助于回答您的问题。
  • 你是图书馆的作者吗?我给你发了一封电子邮件。

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


【解决方案1】:

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

至于“复杂树”……这是相当主观的。为什么你期望它们更简单?

trainrpart 的结果之间的一个区别是后者使用“one SE”方法进行剪枝,而train 则剪枝到性能最佳的深度。您也可以对train 使用“one SE”方法(请参阅软件包网站),但我一直发现它往往是保守的(这是最初的观点)。

最大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 2012-07-20
    • 2012-02-09
    • 1970-01-01
    • 2019-05-22
    • 2014-05-22
    • 1970-01-01
    相关资源
    最近更新 更多