Відповіді:
З липня 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 буде близьким до 0,5 незалежно від дисбалансу класів. Однак AUC PR є складним (див. Що таке "базовий рівень" в кривій точності відкликання ).
Після отримання кривої точності відкликання qpPrecisionRecall, наприклад:
pr <- qpPrecisionRecall(measurements, goldstandard)
ви можете розрахувати його AUC, зробивши це:
f <- approxfun(pr[, 1:2])
auc <- integrate(f, 0, 1)$value
на сторінці довідки qpPrecisionRecallви знайдете детальну інформацію про те, що очікує структура даних у своїх аргументах.
AUPRC()це функція в PerfMeasпакеті, яка набагато краще, ніж pr.curve()функція в PRROCпакеті, коли дані дуже великі.
pr.curve()- це кошмар і вічно закінчується, коли у вас є вектори з мільйонами записів. PerfMeasзаймає секунди в порівнянні PRROCнаписано на R і PerfMeasнаписано на C.