Как вручную рассчитать AUC из РПЦ? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть набор данных, который выглядит следующим образом:

ID    Class    Predicted Probabilities
1       1              0.592
2       1              0.624
3       0              0.544
4       0              0.194
5       0              0.328
6       1              0.504
.       .              .
.       .              .

Мне было поручено рассчитать AUC вручную ... но не уверен, как!

Я знаю, как рассчитатьTPR и FPR для создания кривой ROC.Как я смогу использовать данные для расчета AUC?Никакие библиотеки как scikit-learn разрешены.Я искал везде, но не могу найти правильный ответ.Спасибо всем!

1 Ответ

0 голосов
/ 13 декабря 2018

Вам нужно будет рассчитать истинные положительные и ложноположительные показатели, используя ваш прогнозируемый и истинный класс, при этом изменяя пороговое значение вашего класса (T), т. Е. Пороговое значение, которое вы используете, чтобы предсказать, попадет ли наблюдение в класс 0 или 1.

Вам понадобится набор данных с заголовком, который выглядит следующим образом ...

ID, прогнозируемая вероятность, прогнозируемый класс, истинный класс, порог, флаг истинного позитива, флаг ложного позитива

(подробности см. https://en.wikipedia.org/wiki/Receiver_operating_characteristic).Если вы посмотрите на страницу Wiki, то заметите, что они даже обеспечивают быструю и простую дискретную оценку в пределах «Площадь под кривой».

AUC означает «площадь под кривой», поэтому вам, вероятно, придется выполнитькакая-то числовая интеграция.В этом контексте TPR будет вашим Y, а FPR вашим X при каждом значении T.

Вы можете попробовать использовать что-то вроде трапециевидного правила (https://en.wikipedia.org/wiki/Trapezoidal_rule), если вы хотите, чтобы оно было простым.

Вы можете использовать numpy.trapz (см .: https://docs.scipy.org/doc/numpy/reference/generated/numpy.trapz.html), если вы не хотите реализовывать это самостоятельно, но также нетрудно создать его с нуля (см .: Трапециевидное правило в Python ).

Вы должны быть в состоянии написать функции для них в Python, используя довольно легко только математику и numpy. На самом деле, вам вообще могут не понадобиться какие-либо библиотеки.

...