如何在R中修剪一棵树?
Posted
技术标签:
【中文标题】如何在R中修剪一棵树?【英文标题】:How to prune a tree in R? 【发布时间】:2013-02-25 10:31:34 【问题描述】:我正在使用 R 中的 rpart 进行分类。树模型由以下人员训练:
> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")
这个树模型的准确率是:
> sum(testData$activity==pData1)/length(pData1)
[1] 0.8094276
我阅读了tutorial 以通过交叉验证来修剪树:
> 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 中使用交叉验证来修剪树模型?谢谢。
【问题讨论】:
【参考方案1】:您已使用最小交叉验证错误树。另一种方法是使用在最佳树(您正在选择的树)的 1 个标准误差内的最小树。这样做的原因是,考虑到误差的 CV 估计,1 个标准误差内的最小树在预测方面的表现与最佳(最低 CV 误差)树一样好,但它用更少的“术语”。
通过以下方式绘制 un 修剪树的成本复杂度与树大小的关系:
plotcp(tree)
找到误差最小的那棵树的左边,它的cp值在误差最小的那棵树的误差范围内。
修剪不影响拟合树的原因可能有很多。例如,最好的树可能是算法根据?rpart.control
中指定的停止规则停止的树。
【讨论】:
以上是关于如何在R中修剪一棵树?的主要内容,如果未能解决你的问题,请参考以下文章