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

quelqu'un sait-il calculer le taux d'erreur pour un arbre de décision avec R? Je suis l'aide de la rpart() fonction.

32
demandé sur rcs 2012-03-12 15:29:49

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 xvalrpart.control(); mais voir aussi xpred.rpart() et plotcp() 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 

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

51
répondu chl 2012-03-12 12:43:48