Question

Lorsque vous utilisez la fonction rpart de R, je peux facilement adapter un modèle avec elle. par exemple:

# 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)

Ma question est - Comment puis-je mesurer la « importance » de chacun de mes trois variables explicatives (âge, nombre, Start) au modèle?

Si tel était un modèle de régression, je pourrais avoir l'air à des valeurs de p de la « ANOVA » F-test (entre modèles lm avec et sans la variable). Mais ce qui est l'équivalence de l'utilisation « ANOVA » sur lm à un objet rpart?

(je l'espère, je réussi à faire ma question claire)

Merci.

Était-ce utile?

La solution

Bien sûr ANOVA serait impossible, comme le calcul de la variance implique une variation totale de la variable de réponse et le partitionnement dans les composants d'information (SSA, SSE). Je ne vois pas comment on pourrait calculer la somme des carrés pour une variable comme cyphose.

Je pense que ce que vous parlez en fait est d'attribut de sélection (ou l'évaluation). J'utiliser la mesure de information gain par exemple. Je pense que c'est ce qui est utilisé pour sélectionner l'attribut de test à chaque noeud dans l'arbre et l'attribut avec le gain d'information le plus élevé (ou plus grande réduction d'entropie) est choisie comme l'attribut de test pour le noeud courant. Cet attribut minimise les informations nécessaires pour classer les échantillons dans les partitions résultantes.

Je ne sais pas s'il existe une méthode d'attributs classement en fonction de leur gain d'information en R, mais je sais qu'il ya dans WEKA et est nommé InfoGainAttributeEval Il évalue la valeur d'un attribut en mesurant le gain d'information par rapport à la classe. Et si vous utilisez Ranker comme Search Method, les attributs sont classés par leurs évaluations individuelles.

EDIT J'ai finalement trouvé un moyen de le faire en utilisant R CORElearn Library

estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top