Расчет AUPR в R [закрыто]

14

Легко найти область вычисления пакета в ROC, но есть ли пакет, который вычисляет площадь под кривой точного возврата?


источник
ROCR , PROC - действительно приятно!
Владимир Чупахин
Они, конечно, есть, но AFAIK также не может рассчитать площадь под кривой точного возврата.

Ответы:

13

По состоянию на июль 2016 года пакет PRROC отлично работает для вычислений как ROC AUC, так и PR AUC.

Предполагая, что у вас уже есть вектор вероятностей (называемый probs), вычисленный с вашей моделью, и истинные метки классов находятся в вашем фрейме данных какdf$label (0 и 1), этот код должен работать:

install.packages("PRROC")

require(PRROC)
fg <- probs[df$label == 1]
bg <- probs[df$label == 0]

# ROC Curve    
roc <- roc.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(roc)

# PR Curve
pr <- pr.curve(scores.class0 = fg, scores.class1 = bg, curve = T)
plot(pr)

PS: единственное, что сбивает с толку, вы используете scores.class0 = fg когда fgвычисляется для метки 1, а не 0.

Вот примеры кривых ROC и PR с областями под ними:

ROC Curve с AUC

Кривая PR с AUC

Столбцы справа - это пороговые вероятности, при которых получается точка на кривой.

Обратите внимание, что для случайного классификатора ROC AUC будет близок к 0,5 независимо от дисбаланса класса. Однако PR AUC сложен (см. « Что такое« базовый уровень »в кривой точного отзыва ).

Арун
источник
Просьба обратиться к документации PRROC, указанной в ответе выше.
Арун
2

Немного поиска в Google возвращает один пакет bioc, qpgraph ( qpPrecisionRecall), и один кран, minet ( auc.pr). У меня нет опыта с ними, хотя. Оба были разработаны, чтобы иметь дело с биологическими сетями.

хл
источник
Этот минет выглядел хорошо, но для него необходим какой-то внешний адаптер, чтобы сделать соответствующий ввод из общих данных :-(
2

Как только вы получите точную кривую отзыва qpPrecisionRecall, например:

pr <- qpPrecisionRecall(measurements, goldstandard)

Вы можете рассчитать его AUC, выполнив это:

f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value

Страница справки qpPrecisionRecallдает вам подробную информацию о том, что структура данных ожидает в своих аргументах.

robertc
источник
1
Разве PR-кривая не требует более сложной интеграции? См .: mnd.ly/oWQQw1
1

AUPRC()это функция в PerfMeasпакете, которая намного лучше, чем pr.curve()функция в PRROCпакете, когда данные очень большие. pr.curve()это кошмар, и он занимает вечность, когда у вас есть векторы с миллионами записей. PerfMeasзанимает секунды в сравнении. PRROCнаписано на R и PerfMeasнаписано на C.

jasoncolts
источник