zfz*_*zfz 12 r machine-learning decision-tree rpart
我在R中使用rpart进行分类.树模型通过以下方式进行训练:
> tree <- rpart(activity ~ . , data=trainData)
> pData1 <- predict(tree, testData, type="class")
Run Code Online (Sandbox Code Playgroud)
此树模型的准确性为:
> sum(testData$activity==pData1)/length(pData1)
[1] 0.8094276
Run Code Online (Sandbox Code Playgroud)
我阅读了一个教程,通过交叉验证来修剪树:
> ptree <- prune(tree,cp=tree$cptable[which.min(tree$cptable[,"xerror"]),"CP"])
> pData2 <- predict(ptree, testData, type="class")
Run Code Online (Sandbox Code Playgroud)
修剪树的准确率仍然相同:
> sum(testData$activity==pData2)/length(pData2)
[1] 0.8094276
Run Code Online (Sandbox Code Playgroud)
我想知道修剪过的树有什么问题?如何在R中使用交叉验证来修剪树模型?谢谢.
Rei*_*son 14
您已使用最小交叉验证的错误树.另一种方法是使用最佳树(您选择的树)的1个标准误差范围内的最小树.这样做的原因是,给定错误的CV估计值,1个标准误差中的最小树在预测中的效果与最佳(最低CV误差)树一样好,但它使用较少的"术语" ".
通过以下方式绘制未经过修复的树的成本复杂度与树大小:
plotcp(tree)
Run Code Online (Sandbox Code Playgroud)
找到具有最小错误的树的左侧的树,其cp值位于具有最小错误的错误条中.
修剪不会影响拟合树的原因可能有很多.例如,最佳树可以是算法根据中指定的停止规则停止的树?rpart.control.
| 归档时间: |
|
| 查看次数: |
15987 次 |
| 最近记录: |