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?


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 ).


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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.