如何选择 rpart 中的节点数?

How can choose number of nods in rpart?

tree包中我们可以使用下面的代码来选择终端点数:

tree.model = tree(...)
tree.prune = prune.tree(tree.model, best = 20)

此代码 returns 具有 20 个终端点的新树。

rpart 包中可以使用以下代码:

rpart.model = rpart(...)
rpart.prune = prune.rpart(rpart.model, cp =?)

cp是成本复杂度参数。但我想要 prune.tree.

中类似的 best 参数

rpart 包没有与 tree 包的 best 类似的参数。树包的开发是为了涵盖 rpart 缺少的功能。

要选择合适的节点数,您可以调整rpart中的其他参数。例如

prune.control <- rpart.control(minsplit = 20, minbucket = round(minsplit/3), xval = 10)
rpart(formula, data, method, control = prune.control)

然后,评估交叉验证错误与 cp,以选择 cp 值。此外,您可以使用 caret 包自动调整 cp 值。例如

ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 5)

model <- train(x = train_data,
               y = labels,
               method = "rpart",
               trControl = ctrl)