Rを使用して決定木のエラー率を計算する方法を知っている人はいますか? rpart()
関数を使用しています。
モデルの適合に使用されるサンプルのエラー率を計算することを意味すると仮定すると、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
は、rel error
列とxerror
列に表示される値を考慮し、複雑度パラメーター(最初の列)に応じて、予測パフォーマンスの2つの測定値を計算するために使用されます。
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を使用、rpart.control()
のxval
を参照、ただし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
はトレーニングサンプルから計算されます。