Я пытаюсь найти единственный способ дать мне C AU для модели случайного леса как для обучающего, так и для тестового наборов без использования MLeval.
Вот хороший пример для RO C на данных обучения и вот хороший пример для RO C на данных тестирования . Первый пример для AU C для обучающих данных дает 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)
Но этот AU C для всех обучающих данных (т.е. сонара) равен 1.0, тогда как rfFit показывает 0.946, что тоже отличается! Итак, почему я получаю разные результаты и как правильно рассчитать AU C как для обучения, так и для тестирования?