Comment calculer le taux d'erreur à partir d'un arbre de décision?
1 réponses
en supposant que vous voulez dire le taux d'erreur de calcul sur l'échantillon utilisé pour ajuster le modèle, vous pouvez utiliser printcp()
. Par exemple, en utilisant l'exemple en ligne,
> 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
est utilisé pour calculer deux mesures de la performance prédictive, lorsque l'on considère les valeurs affichées dans le rel error
et xerror
colonne, et en fonction du paramètre complexité (première colonne):
0,76471 x 0,20988 = 0,1604973 (16,0%) est le erreur de resubstitution taux (i.e., taux d'erreur calculé sur l'échantillon de formation) -- c'est à peu près
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%) est le taux d'erreur contre-validé (en utilisant 10 fois le CV, voir
xval
rpart.control()
; mais voir aussixpred.rpart()
etplotcp()
qui s'appuie sur ce type de mesure). Cette mesure est un indicateur plus objectif de l'exactitude de prévision.
Notez qu'il est plus ou moins en accord avec précision de la classification de 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
où Misclassification error rate
est calculé à partir de l'échantillon de formation.