2017-10-07 3 views
0

Ich habe zwei Möglichkeiten benutzt, um die AUC des Trainingssatzes auf dem randomForest zu berechnen, aber ich bekomme sehr unterschiedliche Ergebnisse. Die beiden Wege sind wie folgt:Zwei verschiedene Möglichkeiten, um die AUC von Trainingssatz auf Randomforest zu berechnen, geben mir andere Ergebnisse?

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

Way 1 von AUC von Zugverband Berechnung:

`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 von AUC von Zugverband Berechnung:
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 gibt mir AUC um 1, aber Weg 2 gibt mir AUC um 0,65. Ich frage mich, warum diese beiden Ergebnisse so unterschiedlich sind. Könnte mir jemand dabei helfen? Schätze es wirklich. Für die Daten tut es mir leid, dass ich es hier nicht teilen darf. Dies ist das erste Mal, dass ich hier eine Frage stelle. Bitte vergib mir, wenn etwas unklar ist. Danke vielmals!

Antwort

0

Ich bin nicht sicher, welche Daten Sie verwenden. Es ist am besten, wenn Sie ein reproduzierbares Beispiel liefern, aber ich denke, dass ich eins zusammensetzen konnte

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

Vielen Dank! Aber mein Problem ist immer noch nicht gelöst worden. Könnten Sie versuchen, die AUC von Trainingsdaten auf die folgenden zwei Arten zu berechnen? 1. 'rf_p_train <- vorhersagen (rfmodel, type = "prob", newdata = train) [, 2]; rf_pr_train <- Vorhersage (rf_p_train, train $ Species); r_auc_train [i] <- Leistung (rf_pr_train, measure = "auc") @ y.values ​​[[1]] '2.' rf_p_train <- as.vector (rfmodel $ votes [, 2]); rf_pr_train <- Vorhersage (rf_p_train, train $ Species); r_auc_train [i] <- Leistung (rf_pr_train, measure = "auc") @ y.values ​​[[1]] ' Sie geben uns zwei verschiedene AUC und die erste ist höher als die zweite. – annadai

+0

Es tut mir leid, dass ich nicht weiß, wie man den Stack-Overflow benutzt und brauche wirklich Hilfe. Danke vielmals! – annadai

Verwandte Themen