Obliczanie AUPR w R [zamknięte]

14

Łatwo jest znaleźć obszar obliczania pakietu pod ROC, ale czy istnieje pakiet, który oblicza obszar pod krzywą dokładnego przywołania?


źródło
ROCR , pROC - są naprawdę miłe!
Vladimir Chupakhin
Z pewnością są, ale AFAIK nie może obliczyć powierzchni pod krzywą dokładnego przywołania.

Odpowiedzi:

14

Od lipca 2016 r. Pakiet PRROC świetnie sprawdza się w obliczaniu zarówno ROC AUC, jak i PR AUC.

Zakładając, że masz już wektor prawdopodobieństwa (nazywany probs) obliczony dla twojego modelu, a prawdziwe etykiety klas znajdują się w ramce danych, ponieważ df$label(0 i 1) ten kod powinien działać:

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: Jedyne niepokojące jest to, że używasz go, scores.class0 = fggdy fgjest obliczany dla etykiety 1, a nie 0.

Oto przykładowe krzywe ROC i PR z obszarami pod nimi:

Krzywa ROC z AUC

Krzywa PR z AUC

Słupki po prawej to prawdopodobieństwo progowe, przy którym uzyskuje się punkt na krzywej.

Należy zauważyć, że dla losowego klasyfikatora AUC ROC będzie bliskie 0,5, niezależnie od nierównowagi klasy. Jednak AUC PR jest trudne (patrz Co to jest „linia bazowa” na krzywej przywołania dokładności ).

bieg
źródło
Pls odnoszą się do dokumentacji PRROC, do której link znajduje się w powyższej odpowiedzi.
arun
2

Trochę googling zwraca jeden pakiet bioc, qpgraph ( qpPrecisionRecall), a cran jeden, minet ( auc.pr). Jednak nie mam z nimi doświadczenia. Oba zostały opracowane do pracy z sieciami biologicznymi.

chl
źródło
Ta mineta wyglądała ładnie, ale musi mieć jakiś zewnętrzny adapter, aby odpowiednio wprowadzić dane ogólne :-(
2

Po uzyskaniu precyzyjnej krzywej przywołania qpPrecisionRecall, np .:

pr <- qpPrecisionRecall(measurements, goldstandard)

możesz obliczyć jego AUC, wykonując następujące czynności:

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

strona pomocy zawiera qpPrecisionRecallszczegółowe informacje o tym, czego oczekuje struktura danych w swoich argumentach.

robertc
źródło
1
Czy krzywa PR nie wymaga bardziej fantazyjnej integracji? Patrz: mnd.ly/oWQQw1
1

AUPRC()to funkcja w PerfMeaspakiecie, która jest znacznie lepsza niż pr.curve()funkcja w PRROCpakiecie, gdy dane są bardzo duże. pr.curve()jest koszmarem i trwa wiecznie, gdy masz wektory z milionami wpisów. PerfMeasw porównaniu zajmuje kilka sekund. PRROCjest napisane w R i PerfMeasjest napisane w C.

Jasoncolts
źródło