随机森林的AUC-不同的方法,不同的答案?

时间:2020-05-07 06:52:14

标签: r random-forest r-caret roc auc

我正在尝试找到一种方法为我提供一个不使用MLeval的随机森林模型的AUC(用于训练集和测试集)。

这里是good example for ROC on training datahere's a good example for ROC on testing data。用于训练数据的AUC的第一个示例给出AUC = 0.944。

plot.roc(rfFit$pred$obs[selectedIndices],
         rfFit$pred$M[selectedIndices], print.auc=TRUE)
由于我不知道如何使第一个示例适应测试数据,因此将Sonar数据应用于第二个示例,并与第一个示例交叉验证答案

ctrl <- trainControl(method="cv", 
                     summaryFunction=twoClassSummary, 
                     classProbs=T,
                     savePredictions = T)
rfFit <- train(Class ~ ., data=Sonar, 
               method="rf", preProc=c("center", "scale"), 
               trControl=ctrl, metric="ROC")
print(rfFit)
...
  mtry  ROC        Sens       Spec     
   2    0.9459428  0.9280303  0.8044444

result.predicted.prob <- predict(rfFit, Sonar, type="prob") # Prediction

result.roc <- roc(Sonar$Class, result.predicted.prob$M)
plot(result.roc, print.thres="best", print.thres.best.method="closest.topleft", print.auc=TRUE)

 

但是整个训练数据(即声纳)的AUC是1.0,而rfFit显示的是0.946,这也是不同的!那么,为什么我会得到不同的结果?在训练和测试中计算AUC的正确方法是什么?

0 个答案:

没有答案