5 votos

Estimar los predictores "significativos" para un valor en un modelo CART (rpart)

Cuando se construye un modelo CART (específicamente un árbol de clasificación) utilizando rpart (en R), a veces es obvio que hay variables (X) que son significativas para predecir algunas de las variables de resultado (y) - mientras que otros predictores son relevantes sólo para otras y.

¿Cómo se puede estimar qué variable explicativa se "utiliza" para cada uno de los valores predichos en la variable de resultado?

Este es un código de ejemplo en el que x2 es la única variable importante para predecir "b" (uno de los resultados de y). No hay ninguna variable de predicción para "c", y x1 es un predictor para "a", suponiendo que x2 lo permite.

¿Cómo se puede extraer esta situación del modelo ajustado?

N <- 200
set.seed(5123)
x1 <- runif(N)
x2 <- runif(N)
x3 <- runif(N)
y <- sample(letters[1:3], N, T)
y[x1 <.5] <- "a"
y[x2 <.1] <- "b"

fit <- rpart(y ~ x1+x2)
fit2 <- prune(fit, cp= 0.07)
plot(fit2)
text(fit2, use.n=TRUE)

Gracias.

1voto

Henrik Paul Puntos 22787

Tal,

Lo que entiendo, basándome en este artículo, es que no se pueden obtener las variables individuales relacionadas con cada clase por separado cuando la clase es un factor. Sin embargo, utilizando rpart.control, usted es capaz de identificar las variables que son importantes en cada nodo.

http://cran.r-project.org/web/packages/caret/vignettes/caretVarImp.pdf

Partición recursiva: La reducción de la función de pérdida (por ejemplo, el error cuadrático medio) atribuida a cada variable en cada partición se tabula y se devuelve la suma. Además, como puede haber variables candidatas que sean importantes pero que no se utilicen en una división, las principales variables competidoras también se tabulan en cada división. Esto puede activarse mediante la opción argumento maxcompete en rpart.control . Este método no proporciona actualmente medidas de importancia específicas de la clase cuando la respuesta es un factor.

0voto

mins Puntos 477

Creo que la respuesta está en el modelo CART. En el ejemplo que has proporcionado, algunos de los valores en y son completamente aleatorios, y has asignado algunos valores según algunos criterios en x1 y x2. No creo que puedas encontrar una ÚNICA variable para predecir un determinado valor en y.

He replicado tus datos y los he convertido en un marco de datos, luego los he filtrado por $x_1\geq.5$ . Puedes ver que los datos no siguen tus suposiciones, es decir, $x_1 <.5$ $\Rightarrow$ $a$ $\&$ $x_2<.1$ $\Rightarrow$ $b$ .

enter image description here

A partir de sus datos, no debe haber ningún predictor que pueda vincularse con seguridad a un resultado determinado. CART le indica los criterios de clasificación para cada uno de los valores de y. La importancia de la varianza mencionada por "user2238" le indica, fuera del modelo ( $y\tilde{} x_1+x_2$ ), que es más importante. Espero que esto ayude. Y los comentarios también son bienvenidos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X