R 如何修剪一棵树?

R 如何修剪一棵树?,r,machine-learning,decision-tree,rpart,R,Machine Learning,Decision Tree,Rpart,我正在使用R中的rpart进行分类。树模型通过以下方式进行训练: > tree <- rpart(activity ~ . , data=trainData) > pData1 <- predict(tree, testData, type="class") 我阅读了一篇关于通过交叉验证修剪树的文章: > ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"])

我正在使用R中的rpart进行分类。树模型通过以下方式进行训练:

> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")
我阅读了一篇关于通过交叉验证修剪树的文章:

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

我想知道我修剪过的树怎么了?如何在R中使用交叉验证修剪树模型?谢谢。

您使用了最小交叉验证错误树。另一种方法是使用最小的树,该树与最佳树(您正在选择的树)的标准误差在1以内。原因是,考虑到误差的CV估计,1个标准误差内最小的树在预测方面的表现与最佳(最低CV误差)树一样好,但它使用的“术语”更少

通过以下方式绘制未修剪树的成本复杂性与树大小:

plotcp(tree)
找到最小错误树左侧的树,该树的cp值位于最小错误树的错误条内

修剪不会影响树木的原因可能有很多。例如,最佳树可能是算法根据
?rpart.control
中指定的停止规则停止的树

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