Відповіді:
З липня 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.