Co to jest „linia bazowa” w precyzyjnej krzywej przywołania

15

Próbuję zrozumieć krzywą przywołania precyzji, rozumiem, na czym polega precyzja i przywołanie, ale nie rozumiem wartości „podstawowej”. Czytałem ten link https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

i nie rozumiem części podstawowej, jak pokazano w „Krzywej precyzji-przywołania doskonałego klasyfikatora”, co to robi? i jak to obliczyć? Czy to tylko losowa linia bazowa, którą wybraliśmy? Na przykład mam dane z Twittera z atrybutami takimi jak retweet,status_countitp., A moja etykieta klasy to Favorited1, jeśli preferowana i 0, jeśli nie jest preferowana, i stosuję na niej naiwne bayes, a teraz chcę narysować krzywą przywołania dokładności, jak w tym przypadku powinienem ustawić linię bazową ?

hyeri
źródło

Odpowiedzi:

13

„Krzywa linii podstawowej” na wykresie krzywej PR jest linią poziomą o wysokości równej liczbie pozytywnych przykładów stosunku do całkowitej liczby danych treningowych , tj. odsetek pozytywnych przykładów w naszych danych ( ).N PPNPN

OK, dlaczego tak jest? Załóżmy, że mamy „klasyfikator śmieci” . zwraca losową prawdopodobieństwa do -tej przykład próbka się w klasie . Dla wygody powiedz . Bezpośrednie implikacje tego losowego przypisania klas są takie, że będzie miał (oczekiwaną) precyzję równą odsetkowi pozytywnych przykładów w naszych danych. To jest tylko naturalne; każda całkowicie losowa podpróbka naszych danych będzie miała poprawnie sklasyfikowane . Będzie to prawdą dla każdego progu prawdopodobieństwaC J p i iCJCJpii A p iU [ 0 , 1 ] C J E { PyiApiU[0,1]CJqCJq[0,1]qACJqpiU[0,1]q(100(E{PN}qmożemy wykorzystać jako granicę decyzji prawdopodobieństwa członkostwa w klasie zwrócone przez . ( oznacza wartość w gdzie wartości prawdopodobieństwa większe lub równe są sklasyfikowane w klasie ) Z drugiej strony wydajność przywołania jest (w oczekiwaniu) równa jeżeli . Na dowolnym progu wybieramy (w przybliżeniu) naszych całkowitych danych, które następnie będą zawierać (w przybliżeniu) całkowitej liczby instancji klasyCJq[0,1]qACJqpiU[0,1]q( 100 ( 1 - q ) ) % A x y P(100(1q))%(100(1q))%Aw próbce. Stąd linia pozioma, o której wspominaliśmy na początku! Dla każdej wartości przywołania ( wartości na wykresie PR) odpowiadająca jej wartość dokładności ( wartości na wykresie PR) jest równa .xyPN

Szybka uwaga dodatkowa: Próg ogólnie nie jest równy 1 minus oczekiwane wycofanie. Dzieje się tak w przypadku wspomnianego powyżej tylko z powodu losowego równomiernego rozkładu wyników ; dla innego rozkładu (np. ) ta przybliżona relacja tożsamości między a przywołaniem nie ma zastosowania; Zastosowano ponieważ jest najłatwiejszy do zrozumienia i wizualizacji mentalnej. Jednak dla innego losowego rozkładu w profil PR się nie zmieni. Tylko rozmieszczenie wartości PR dla danych wartości ulegnie zmianie.C J C J p iB ( 2 ,qCJCJq U [ 0 , 1 ] [ 0 , 1 ] C J qpiB(2,5)qU[0,1][0,1]CJq

Teraz odnośnie doskonały klasyfikatora , to znaczy jeden klasyfikator, który powraca prawdopodobieństwo do próbki instancji samopoczucia klasy jeśli jest rzeczywiście w klasie i dodatkowo zwraca prawdopodobieństwo jeśli nie jest członkiem klasy . Oznacza to, że dla każdego progu będziemy mieć dokładność (tj. W kategoriach graficznych otrzymamy linię zaczynającą się od precyzji ). Jedynym punktem, w którym nie otrzymujemy precyzji, jest . Dla 1 y i ACP1yiA AyiA 0 y i A q 100 % 100 % 100 % q = 0 q = 0 P.CP0yiAq100%100%100%q=0q=0, Dokładność spada proporcji pozytywne przykłady, w serwerze ( ), a (szalenie?), Że sklasyfikowanie nawet punkty o prawdopodobieństo klasy jako w klasie . Wykres PR ma tylko dwie możliwe wartości precyzji, i . 0AACP1PPN0AACP1PN

OK i trochę kodu R, aby zobaczyć to z pierwszej ręki na przykładzie, w którym wartości dodatnie odpowiadają naszej próbki. Zauważ, że robimy „soft-zadanie” w kategorii klasy w tym sensie, że wartość prawdopodobieństwo związane z każdym punktem ilościowo do naszej pewności, że ten punkt jest klasy .A40%A

  rm(list= ls())
  library(PRROC)
  N = 40000
  set.seed(444)
  propOfPos = 0.40
  trueLabels = rbinom(N,1,propOfPos)
  randomProbsB = rbeta(n = N, 2, 5) 
  randomProbsU = runif(n = N)  

  # Junk classifier with beta distribution random results
  pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1], 
                   scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE) 
  # Junk classifier with uniformly distribution random results
  pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1], 
                   scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE) 
  # Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
  pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos), 
                  scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)

  par(mfrow=c(1,3))
  plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr2, main = '"Perfect" classifier', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);  

wprowadź opis zdjęcia tutaj

gdzie czarne kółka i trójkąty oznaczają odpowiednio i na pierwszych dwóch wykresach. Od razu widzimy, że klasyfikatory „śmieci” szybko osiągają precyzję równą ; podobnie idealny klasyfikator ma dokładność we wszystkich zmiennych przywracania. Nic dziwnego, że AUCPR dla „śmieciowego” klasyfikatora jest równy odsetkowi pozytywnego przykładu w naszej próbce ( ), a AUCPR dla „doskonałego klasyfikatora” jest w przybliżeniu równy .q = 0,20 P.q=0.50q=0.20 10,401PN10.401

Realistycznie wykres PR idealnego klasyfikatora jest nieco bezużyteczny, ponieważ nie można nigdy odwołać (nigdy nie przewidujemy tylko klasy ujemnej); po prostu zaczynamy rysować linię od lewego górnego rogu zgodnie z konwencją. Ściśle mówiąc, powinno to po prostu pokazywać dwa punkty, ale byłby to okropny zakręt. :RE0

Dla przypomnienia, w CV jest już bardzo dobra odpowiedź dotycząca użyteczności krzywych PR: tutaj , tutaj i tutaj . Dokładne ich przeczytanie powinno zapewnić ogólne zrozumienie krzywych PR.

usεr11852
źródło
1
Dołączyłem do tej społeczności tylko po to, by móc to zagłosować. Jest to świetne wyjaśnienie koncepcji linii bazowej w precyzyjnych krzywych przywołania. Jako bioinformatyk uznałem to za niezwykle pomocne.
jimh
1
@jimh: Dziękuję, bardzo miło jest to słyszeć. Cieszę się, że post był pomocny.
usεr11852
Wiem, że nie jest to komentarz, który dostarcza użytecznych informacji, ale bardzo dziękuję za dokładne i otwierające oczy wyjaśnienie.
Ric S
0

Świetna odpowiedź powyżej. Oto mój intuicyjny sposób myślenia o tym. Wyobraź sobie, że masz kilka kul czerwonych = dodatnich i żółtych = ujemnych, i rzucasz je losowo do wiadra = dodatnia część. Następnie, jeśli masz taką samą liczbę czerwonych i żółtych kulek, obliczając PREC = tp / tp + fp = 100/100 + 100 z wiadra czerwony (dodatni) = żółty (ujemny), dlatego PREC = 0,5. Gdybym jednak miał 1000 czerwonych kulek i 100 żółtych kulek, wtedy w wiadrze losowo oczekiwałbym PREC = tp / tp + fp = 1000/1000 + 100 = 0,91, ponieważ jest to podstawowa szansa ułamka dodatniego, który jest również RP / RP + RN, gdzie RP = prawdziwy dodatni, a RN = prawdziwy ujemny.

Christopher John
źródło