2013-03-10 2 views
10

私はツリーモデルがによって訓練されたR.でRPARTを使用して分類をやってる:このツリーモデルの精度があるRでツリーを剪定する方法は?

> 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でのクロスバリデーションを使用してツリーモデルをどのようにプルーニングできますか?ありがとう。

答えて

9

最小相互検証エラーツリーを使用しました。代わりに、最良のツリー(選択しているもの)の1標準誤差以内にある最小のツリーを使用することもできます。その理由は、誤差のCV推定値を考慮すると、1標準誤差内の最小の木は、最良の(最も低いCV誤差)木と同様に予測において良好な仕事をしているが、より少ない「項"

プロットを経由して国連 -pruned木のツリーサイズ対コスト複雑:

plotcp(tree) 

はのエラーバー内にあるCP値誤差が最小と1の左側のツリーを探します1つは最小誤差である。

プルーニングがフィッティングされたツリーに影響しない理由はたくさんあります。例えば、最良のツリーは、アルゴリズムが?rpart.controlで指定された停止規則に従って停止したツリーである可能性があります。

関連する問題