¿Cómo se calculan los valores de CP (Complejidad de costos) en RPART (o árboles de decisión en general)

9

Por lo que entiendo, el argumento cp de la rpartfunción ayuda a podar previamente el árbol de la misma manera que los argumentos minplit o minbucket. Lo que no entiendo es cómo se calculan los valores de CP. Por ejemplo

df<-data.frame(x=c(1,2,3,3,3,4), y=as.factor(c(TRUE, TRUE, FALSE, TRUE, FALSE, FALSE)), method="class")
mytree<-rpart(y ~ x, data = df, minbucket = 1, minsplit=1)

Árbol resultante ...

mytree
n= 6 

node), split, n, loss, yval, (yprob)
      * denotes terminal node

1) root 6 3 FALSE (0.5000000 0.5000000)  
  2) x>=2.5 4 1 FALSE (0.7500000 0.2500000) *
  3) x< 2.5 2 0 TRUE (0.0000000 1.0000000) *

Resumen...

summary(mytree)

Call:
rpart(formula = y ~ x, data = df, minbucket = 1, minsplit = 1)
  n= 6 

         CP nsplit rel error    xerror      xstd
1 0.6666667      0 1.0000000 2.0000000 0.0000000
2 0.0100000      1 0.3333333 0.6666667 0.3849002

¿De dónde vienen los .666 y .01?

Ben
fuente
Por favor revise mis respuestas en este post
Haitao Du
Esa es la disminución del error rel al siguiente nivel de árbol. Quizás haya otra explicación, pero en mi opinión, prefiero la simple
cloudcomputes el

Respuestas:

2

Estaba buscando lo mismo desde hace muchos días y llegué a saber una cosa que el cálculo del valor de cp se realiza por paquete. Por defecto, si no especifica el valor "CP", rpart tomará su valor 0.01. El valor de Cp es el costo de agregar un nodo al árbol.

Nikhil
fuente
Supongo que viene de la página 24 del siguiente cran.r-project.org/web/packages/rpart/vignettes/longintro.pdf
user1700890
2

El parámetro de complejidad (cp) en rpart es la mejora mínima en el modelo necesario en cada nodo. Se basa en la complejidad de costos del modelo definido como ingrese la descripción de la imagen aquí

Para el árbol dado, sume la clasificación errónea en cada nodo terminal. Luego, multiplique el número de divisiones por un período de penalización (lambda) y agréguelo a la clasificación errónea total. La lambda se determina mediante validación cruzada y no se informa en R.

Para los modelos de regresión (ver la siguiente sección), el cp escalado tiene una interpretación muy directa: si alguna división no aumenta el R2 general del modelo por al menos cp (donde R2 es la definición usual de modelos lineales), entonces esa división se decrementa a ser, a priori, no vale la pena perseguir. Vea el documento de introducción para rpart

Akshay Kadidal
fuente
Fuente de mi primer comentario: learnbymarketing.com/tutorials/rpart-decision-trees-in-r
Akshay Kadidal