2017-10-07 7 views
0

J'ai utilisé deux méthodes pour calculer l'AUC de l'entraînement réglé sur le randomForest mais j'ai des résultats très différents. Les deux voies sont les suivantes:Deux méthodes différentes pour calculer l'ASC de l'entraînement sur une forêt aléatoire me donnent des résultats différents?

rfmodel <- randomForest(y~., data=train, importance=TRUE, ntree=1000) 

Way 1 de calcul AUC du jeu de train:

`rf_p_train <- predict(rfmodel, type="prob",newdata = train)[,'yes'] 
rf_pr_train <- prediction(rf_p_train, train$y) 
r_auc_train[i] <- performance(rf_pr_train, measure = "auc")@y.values[[1]] ` 

Way 2 de calcul AUC du jeu de train:
rf_p_train <- as.vector(rfmodel$votes[,2]) rf_pr_train <- prediction(rf_p_train, train$y) r_auc_train[i] <- performance(rf_pr_train, measure = "auc")@y.values[[1]]

Way 1 me donne AUC autour de 1 mais la voie 2 me donne AUC autour de 0,65. Je me demande pourquoi ces deux résultats diffèrent tellement. Quelqu'un pourrait-il m'aider avec ça? J'apprécie beaucoup. Pour les données, je suis désolé que je ne suis pas autorisé à le partager ici. C'est la première fois que je pose une question ici. S'il vous plaît pardonnez-moi s'il y a quelque chose de flou. Merci beaucoup!

Répondre

0

Je ne suis pas sûr des données que vous utilisez. Il est préférable que vous fournissiez un exemple reproductible mais je pense que j'ai été capable d'en assembler un ensemble

library(randomForest) 
#install.packages("ModelMetrics") 
library(ModelMetrics) 

# prep training to binary outcome 
train <- iris[iris$Species %in% c('virginica', 'versicolor'),] 
train$Species <- droplevels(train$Species) 

# build model 
rfmodel <- randomForest(Species~., data=train, importance=TRUE, ntree=2) 

# generate predictions 
preds <- predict(rfmodel, type="prob",newdata = train)[,2] 

# Calculate AUC 
auc(train$Species, preds) 

# Calculate LogLoss 
logLoss(train$Species, preds) 
+0

Merci! Mais mon problème n'a toujours pas été résolu. Pourriez-vous essayer de calculer l'ASC des données d'entraînement de deux façons? 1. 'rf_p_train <- predict (rfmodel, type = "prob", newdata = train) [, 2]; rf_pr_train <- prédiction (rf_p_train, train $ Espèces); r_auc_train [i] <- performance (rf_pr_train, mesure = "auc") @ y.values ​​[[1]] '2.' rf_p_train <- as.vector (rfmodel $ votes [, 2]); rf_pr_train <- prédiction (rf_p_train, train $ Espèces); r_auc_train [i] <- performance (rf_pr_train, measure = "auc") @ y.values ​​[[1]] ' Elles nous donneront deux AUC différentes et la première est plus haute que la seconde. – annadai

+0

Je suis désolé de ne pas savoir comment utiliser le débordement de pile et j'ai vraiment besoin d'aide à ce sujet. Merci beaucoup! – annadai