Est-ce que quelqu'un sait comment calculer le taux d'erreur pour un arbre de décision avec R? J'utilise la fonction rpart()
.
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
Le Root node error
Est utilisé pour calculer deux mesures de performances prédictives, lorsque l'on considère les valeurs affichées dans les colonnes rel error
Et xerror
, et en fonction du paramètre de complexité (première colonne):
0,76471 x 0,20988 = 0,1604973 (16,0%) est le taux d'erreur de resubstitution (c'est-à-dire le taux d'erreur calculé sur l'échantillon d'apprentissage) - 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 à validation croisée (en utilisant un CV multiplié par 10, voir xval
dans rpart.control()
; mais voir aussi xpred.rpart()
et plotcp()
qui repose sur ce type de mesure). Cette mesure est un indicateur plus objectif de la précision prédictive.
Notez qu'il est plus ou moins en accord avec la précision de 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 d'apprentissage.