2017-10-07 5 views
0

私はrandomForestでトレーニングセットのAUCを計算するのに2つの方法を使用しましたが、私は非常に異なる結果を得ます。次のように二つの方法があります:列車セットのAUCを計算するランダムフォレストでトレーニングセットのAUCを計算する2つの異なる方法は私に異なる結果をもたらしますか?

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

ウェイ1:

`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]] ` 

列車セットのAUCを計算する道2:
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]]

ウェイ1私を与えますAUCは約1であるが、方法2はAUC約0.65を与える。なぜ私はこれらの2つの結果がそんなに異なるのだろうと思っています。誰も私にこれを手伝ってもらえますか?心から感謝する。データに関しては、私がここでそれを共有することは許されていないことを申し訳ありません。私がここで質問するのは初めてです。不明な点があれば、私を許してください。どうもありがとう!

答えて

0

どのデータを使用しているのかわかりません。再現可能な例を提供するのが一番ですが、一緒に作れたと思います。

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

ありがとうございます!しかし、私の問題はまだ解決されていません。次の2つの方法でトレーニングデータのAUCを計算できますか? 'rf_p_train < - predict(rfmodel、type = "prob"、newdata = train)[、2]; rf_pr_train < - 予測(rf_p_train、train $ Species); r_auc_train [i] < - パフォーマンス(rf_pr_train、測定= "auc")@ y.values [[1]] '2.' rf_p_train < - as.vector(rfmodel $ votes [、2]); rf_pr_train < - 予測(rf_p_train、train $ Species); r_auc_train [i] < - パフォーマンス(rf_pr_train、measure = "auc")@ y.values [[1]] ' これらは、2つの異なるAUCを与え、第1のものは第2のものよりも高い。 – annadai

+0

私はスタックオーバーフローを使用する方法に慣れていないことにご迷惑をおかけしており、実際にはこれに助けが必要です。どうもありがとう! – annadai

関連する問題