Как я могу построить кривую ROC с помощью AUC?

Я пытаюсь классифицировать два разных случая. Поэтому я построил деревья решений, матрицу неточностей и рассчитал точность, чувствительность и специфичность. Я запускал свою программу 100 раз, поэтому у меня есть 100 значений точности, чувствительности и специфичности.

Сейчас я хочу построить кривую ROC с AUC. Я провел несколько исследований, и во всех этих примерах обсуждались вероятности, и я не знаю, что именно.

Так может ли кто-нибудь помочь мне построить это? Я не знаю, какую часть моего кода мне следует представить, поэтому, пожалуйста, не стесняйтесь спрашивать об этом.


person hpmurg    schedule 08.11.2018    source источник


Ответы (1)


Вы можете использовать такой пакет, как pROC, что может быть проще, чем создавать его самостоятельно. Вы используете функцию roc (), чтобы создать объект roc, а затем plot (), чтобы построить объект и создать кривую ROC.

Кроме того, похоже, что вы поступаете правильно. Кривая ROC рассчитывается на основе значений чувствительности и специфичности, взятых в разных точках разреза в диапазоне возможных вероятностей от вашей модели, то есть в точках разреза между 0 и 1. Вам не нужно создавать 100 наборов прогнозов модели, только одна модель будет хватит.

Попробуйте что-то вроде этого, где y - ваша переменная ответа, а p - вектор значений вероятности, выводимых вашей моделью:

plot(roc(y, p)), print.auc = TRUE)
person Cleland    schedule 08.11.2018
comment
Спасибо Cleland за ваш комментарий! Откуда я могу получить свои возможные вероятности? Например, как они рассчитываются? - person hpmurg; 08.11.2018
comment
Взгляните на функцию предсказать () для типа модели, которую вы построили. Обычно есть варианты для вывода оценки вероятности для каждого наблюдения. - person Cleland; 08.11.2018
comment
Хорошо, я более подробно рассмотрю свою функцию прогнозирования. Спасибо! - person hpmurg; 08.11.2018