2012-09-11 22 views
6

Utilizzo il pacchetto randomForest in piattaforma R per l'attività di classificazione.Curva ROC per classificazione da randomForest

rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k)) 

dove k è compreso tra 0,1 e 0,9.

pred <- predict(rf_object,test_data_matrix) 

Ho l'output dal classificatore di foresta casuale e l'ho confrontato con le etichette. Quindi, ho le misure di performance come accuratezza, MCC, sensibilità, specificità, ecc. Per 9 punti di cutoff.

Ora, voglio tracciare la curva ROC e ottenere l'area sotto la curva ROC per vedere quanto è buona la prestazione. La maggior parte dei pacchetti in R (come ROCR, pROC) richiede la previsione e le etichette, ma ho sensibilità (TPR) e specificità (1-FPR).

Qualcuno può suggerirmi se il metodo di interruzione è corretto o affidabile per produrre la curva ROC? Conosci qualche modo per ottenere la curva ROC e l'area sotto la curva usando TPR e FPR?

Ho anche provato a utilizzare il seguente comando per addestrare la foresta casuale. In questo modo le previsioni erano continue e accettabili per i pacchetti ROCR e pROC in R. Ma, non sono sicuro se questo è il modo corretto di fare. Qualcuno mi può suggerire su questo metodo?

rf_object <- randomForest(data_matrix, label_vector) 
pred <- predict(rf_object, test_data_matrix) 

Grazie per il vostro tempo leggendo il mio problema! Ho passato molto tempo a navigare per questo. Grazie per il tuo suggerimento/consiglio.

risposta

13

Perché non si generano le probabilità di classe? In questo modo, hai una classifica delle tue previsioni e puoi direttamente inserirla in qualsiasi pacchetto ROC.

m = randomForest(data_matrix, labels) 
predict(m,newdata_matrix,type='prob') 

Si noti che, per usare foresta casuale come uno strumento di classificazione, labels deve essere un vettore di fattore.

Problemi correlati