如何修剪中的R一棵树?(How to prune a tree in R?)

2019-07-21 06:18发布

我正在使用软件rpart在R树模型是由受过训练的分类:

> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")

此树模型的精度是:

> sum(testData$activity==pData1)/length(pData1)
[1] 0.8094276

我读了教程修剪通过交叉验证树:

> ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"])
> pData2 <- predict(ptree, testData, type="class")

对于修剪树的准确率仍然是相同的:

> sum(testData$activity==pData2)/length(pData2)
[1] 0.8094276

我想知道有什么错我修剪的树? 我怎么能修剪使用交叉验证R中的树模型? 谢谢。

Answer 1:

你已经使用的最小交叉验证误差树。 另一种方法是使用不到最好的树(您选择的)的1个标准误差最小的树。 这样做的原因是,由于错误的CV估计,在1个标准误差最小的树做的一样好,在预测为最佳(最低CV误差)树工作,但它是用较少的“条款做”。

画出成本复杂VS树大小通过联合国 -pruned树:

plotcp(tree)

查找树到一个误差最小,其CP的价值在于一个以最小的错误的错误吧内的左侧。

可能有很多原因,修剪不影响拟合树。 例如最好的树可能是其中之一,其中的算法根据在规定的停止规则停止?rpart.control



文章来源: How to prune a tree in R?