Pregunta

Cuando se utiliza la función rpart de R, I puede caber fácilmente un modelo con ella. por ejemplo:

# Classification Tree with rpart
library(rpart)

# grow tree 
fit <- rpart(Kyphosis ~ Age + Number + Start,
     method="class", data=kyphosis)

printcp(fit) # display the results 
plotcp(fit) 
summary(fit) # detailed summary of splits

# plot tree 
plot(fit, uniform=TRUE, 
     main="Classification Tree for Kyphosis")
text(fit, use.n=TRUE, all=TRUE, cex=.8)

Mi pregunta es - ¿Cómo puedo medir la "importancia" de cada uno de mis tres variables explicativas (edad, número, de inicio) para el modelo?

Si esto fue un modelo de regresión, podría haber mirado a los valores de p de la "ANOVA" F-test (entre los modelos lm con y sin la variable). Pero lo que es la equivalencia de utilizar "ANOVA" en lm a un objeto rpart?

(espero que me las arreglé para hacer mi pregunta clara)

Gracias.

¿Fue útil?

Solución

Por supuesto anova sería imposible, como anova implica el cálculo de la variación total en la variable de respuesta y la partición en componentes informativos (SSA, SSE). No puedo ver cómo se puede calcular la suma de cuadrados para una variable categórica como la cifosis.

creo que lo que realmente está hablando de selección de atributos (o evaluación). Me gustaría utilizar la medida information gain por ejemplo. Creo que esto es lo que se utiliza para seleccionar el atributo de prueba a cada nodo en el árbol y el atributo con la ganancia de información más alta (o mayor reducción de la entropía) se elige como el atributo de prueba para el nodo actual. Este atributo reduce al mínimo la información necesaria para clasificar las muestras en las particiones resultantes.

No soy consciente de si existe un método de clasificación de atributos en función de su ganancia de información en R, pero sé que hay en WEKA y se nombra InfoGainAttributeEval Se evalúa el valor de un atributo midiendo la ganancia de información con respecto a la clase. Y si utiliza Ranker como el Search Method, los atributos se clasifican por sus evaluaciones individuales.

Editar Finalmente encontré una manera de hacer esto en I usando CORElearn Biblioteca

estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top