Domanda

Quando si utilizza la funzione di rpart R, posso facilmente adattare un modello con esso. per esempio:

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

La mia domanda è - Come posso misurare "l'importanza" di ciascuno dei miei tre variabili esplicative (età, numero, di avvio) per il modello?

Se questo fosse un modello di regressione, avrei potuto guardato p-value dal "ANOVA" F-test (tra i modelli lm con e senza la variabile). Ma ciò che è l'equivalenza di utilizzare "ANOVA" su lm ad un oggetto rpart?

(spero sono riuscito a fare la mia domanda chiara)

Grazie.

È stato utile?

Soluzione

Naturalmente anova sarebbe impossibile, come anova comporta calcolando la variazione totale nella variabile di risposta e il partizionamento in componenti informativi (SSA, SSE). Non riesco a vedere come si possa calcolare la somma dei quadrati per una variabile categoriale come cifosi.

Credo che quello che in realtà parlando è Selezione Attributo (o valutazione). Vorrei utilizzare la misura information gain per esempio. Credo che questo è quello che viene utilizzato per selezionare l'attributo di prova a ciascun nodo dell'albero e l'attributo con il più alto guadagno informazione (o maggiore riduzione entropia) viene scelta come attributo test per il nodo corrente. Questo attributo riduce al minimo le informazioni necessarie per classificare i campioni nelle partizioni risultanti.

Non sono a conoscenza se v'è un metodo di attributi classifica in base al loro guadagno informazioni in R, ma so che c'è in WEKA e prende il nome InfoGainAttributeEval Si valuta il valore di un attributo misurando il guadagno di informazioni rispetto alla classe. E se si utilizza Ranker come il Search Method, gli attributi sono classificate per le loro valutazioni individuali.

Modifica Ho finalmente trovato un modo per fare questo in R utilizzando CORElearn Biblioteca

estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top