R получить AUC и построить несколько кривых ROC одновременно

Я пробовал 2 метода построить кривую ROC и получить AUC для каждой кривой ROC.

Метод 1. Первый метод прост, но я не знаю, как построить несколько кривых ROC вместе. Я просто использую roc.curve(hacide.test$cls, pred_rose[,2]), вывод покажет кривую ROC и даст мне AUC.

Метод 2. Теперь я могу построить несколько кривых ROC вместе, но не могу получить AUC одновременно. Вот так я строю вместе несколько кривых ROC:

library(ROCR)
pd1 <- prediction(pred_rose[,2], hacide.test$cls)
pf1 <- performance(pd1, "tpr","fpr")

pd2 <- prediction(pred_both[,2], hacide.test$cls)
pf2 <- performance(pd2, "tpr","fpr")

plot(pf1, colorize = TRUE)
plot(pf2, add = TRUE, colorize = TRUE)

Вот как я получаю AUC:

pf <- performance(pd3, "auc")
pf     # y.values is the AUC

Как видите, когда я использую этот второй метод, метод performance(), используемый для получения кривой ROC и AUC, отличается. Выходные данные pf1, pf2 здесь не имеют значений AUC.

Метод 1 проще, но знаете ли вы, как я могу использовать метод 1 для построения кривых ROC вместе, сохраняя при этом все значения AUC?


person Cherry Wu    schedule 15.05.2016    source источник


Ответы (1)


Вы можете сделать это с помощью пакета pROC. Используйте аргумент print.auc в вызове plot:

library(pROC)
roc_rose <- plot(roc(hacide.test$cls, pred_rose[,2]), print.auc = TRUE, col = "blue")

И для второй кривой ROC вам нужно изменить положение y AUC и использовать add график для двух кривых на одном графике:

roc_rose <- plot(roc(hacide.test$cls, pred_both[,2]), print.auc = TRUE, 
                 col = "green", print.auc.y = .4, add = TRUE)
person Calimo    schedule 16.05.2016
comment
Это потому, что мне не удалось изменить roc.curve на roc. Я отредактировал свой ответ, и теперь он должен работать. - person Calimo; 19.05.2016
comment
Потрясающий! Большое тебе спасибо! - person Cherry Wu; 20.05.2016