我正在尝试找到一种方法为我提供一个不使用MLeval的随机森林模型的AUC(用于训练集和测试集)。
这里是good example for ROC on training data和here'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)
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的正确方法是什么?