ejemplo - bosques aleatorios en r
¿Cómo calcular la tasa de error de un árbol de decisión? (1)
¿Alguien sabe cómo calcular la tasa de error para un árbol de decisión con R? Estoy usando la función rpart()
.
Suponiendo que se printcp()
tasa de error de cálculo en la muestra utilizada para adaptarse al modelo, puede usar printcp()
. Por ejemplo, usando el ejemplo en línea,
> 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
El Root node error
se utiliza para calcular dos medidas de rendimiento predictivo, al considerar los valores que se muestran en el rel error
y en la columna xerror
, y según el parámetro de complejidad (primera columna):
0.76471 x 0.20988 = 0.1604973 (16.0%) es la tasa de error de resubstitución (es decir, tasa de error calculada en la muestra de entrenamiento) - esto es aproximadamente
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%) es la tasa de error con validación cruzada (usando 10 veces CV, ver
xval
enrpart.control()
; pero vea tambiénxpred.rpart()
yplotcp()
que se basa en este tipo de medida). Esta medida es un indicador más objetivo de la precisión predictiva.
Tenga en cuenta que está más o menos de acuerdo con la precisión de clasificación del 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
donde Misclassification error rate
se calcula a partir de la muestra de entrenamiento.