web-dev-qa-db-fra.com

Comment calculer le taux d'erreur à partir d'un arbre de décision?

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().

31
teo6389

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 

Misclassification error rate est calculé à partir de l'échantillon d'apprentissage.

51
chl