32

Rを使用して決定木のエラー率を計算する方法を知っている人はいますか?関数を使用していrpart()ます。

4

1 に答える 1

58

モデルの適合に使用されたサンプルのエラー率の計算を意味すると仮定すると、を使用できますprintcp()。たとえば、オンラインの例を使用すると、

> library(rpart)
> fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
> printcp(fit)

Classification tree:
rpart(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)

Variables actually used in tree construction:
[1] Age   Start

Root node error: 17/81 = 0.20988

n= 81 

        CP nsplit rel error  xerror    xstd
1 0.176471      0   1.00000 1.00000 0.21559
2 0.019608      1   0.82353 0.82353 0.20018
3 0.010000      4   0.76471 0.82353 0.20018

は、および列に表示される値を考慮し、複雑さのパラメーター(最初の列)に応じて、Root node error予測パフォーマンスの2つの測定値を計算するために使用されます。rel errorxerror

  • 0.76471 x 0.20988 = 0.1604973(16.0%)は、再代入エラー率(つまり、トレーニングサンプルで計算されたエラー率)です-これはおおよそです

    class.pred <- table(predict(fit, type="class"), kyphosis$Kyphosis)
    1-sum(diag(class.pred))/sum(class.pred)
    
  • 0.82353 x 0.20988 = 0.1728425(17.2%)は、交差検定されたエラー率です(10倍のCVを使用、 ;を参照xvalしてください。ただし、この種の測定に依存しています)。この測定値は、予測精度のより客観的な指標です。rpart.control()xpred.rpart()plotcp()

以下からの分類精度と多かれ少なかれ一致していることに注意してくださいtree

> library(tree)
> summary(tree(Kyphosis ~ Age + Number + Start, data=kyphosis))

Classification tree:
tree(formula = Kyphosis ~ Age + Number + Start, data = kyphosis)
Number of terminal nodes:  10 
Residual mean deviance:  0.5809 = 41.24 / 71 
Misclassification error rate: 0.1235 = 10 / 81 

ここで、Misclassification error rateはトレーニングサンプルから計算されます。

于 2012-03-12T12:35:57.580 に答える