Обчислення AUPR в R [закрито]


14

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


ROCR , pROC - справді приємні!
Володимир Чупахін

Вони, безумовно, є, але AFAIK не може обчислити площу під кривою точності відкликання.

Відповіді:


14

З липня 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 з AUC

Крива PR з AUC

Штрихи справа - порогові ймовірності, при яких отримується точка на кривій.

Зауважте, що для випадкового класифікатора ROC AUC буде близьким до 0,5 незалежно від дисбалансу класів. Однак AUC PR є складним (див. Що таке "базовий рівень" в кривій точності відкликання ).


Просимо звернутися до документації PRROC, зв'язаної у відповіді вище.
Аруна

2

Трохи googling повертає один пакет bioc, qpgraph ( qpPrecisionRecall), а cran - minet ( auc.pr). Я не маю досвіду з ними. Обидва були розроблені для роботи з біологічними мережами.


Цей мінет виглядав приємно, але йому потрібно мати зовнішній адаптер, щоб зробити відповідний вклад із загальних даних :-(

2

Після отримання кривої точності відкликання qpPrecisionRecall, наприклад:

pr <- qpPrecisionRecall(measurements, goldstandard)

ви можете розрахувати його AUC, зробивши це:

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

на сторінці довідки qpPrecisionRecallви знайдете детальну інформацію про те, що очікує структура даних у своїх аргументах.


1
Чи не вимагає PR-крива дещо фантазії? Дивіться: mnd.ly/oWQQw1

1

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.