2012-03-12 12 views

Odpowiedz

47

Zakładając, że masz na myśli współczynnik błędu obliczeniowego na próbce użytej do dopasowania modelu, możesz użyć printcp(). Na przykład, korzystając z przykładu on-line,

> 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 

The Root node error służy do obliczania dwie miary predykcyjnej wydajności, przy rozważaniu wartości wyświetlane w kolumnie rel error i xerror iw zależności od parametru złożoności (pierwsza kolumna) :

  • 0,76471 x 0,20988 = 0,1604973 (16,0%) jest stopa błędów resubstitution (czyli stopa błędów oblicza się na próbce treningowej) - jest w przybliżeniu

    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%) jest walidacji krzyżowej stopa błędów (z użyciem 10-krotnie CV patrz xval w rpart.control(); ale zobacz także xpred.rpart() i plotcp(), które opierają się na tego rodzaju miary). Ta miara jest bardziej obiektywnym wskaźnikiem dokładności predykcyjnej.

Należy pamiętać, że jest to bardziej lub mniej w porozumieniu z dokładnością klasyfikacyjnej z 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 

gdzie Misclassification error rate jest obliczana z próby treningowej.

Powiązane problemy