Qual è la "linea di base" nella curva di richiamo di precisione


15

Sto cercando di capire la curva di richiamo della precisione, capisco cosa sono la precisione e il richiamo, ma la cosa che non capisco è il valore "base". Stavo leggendo questo link https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

e non capisco la parte di base come mostrato in "Una curva di richiamo di precisione di un classificatore perfetto" che cosa fa? e come lo calcoliamo? È solo una linea di base casuale che selezioniamo? Ad esempio, ho i dati di Twitter con attributi come retweet,status_countetc e la mia etichetta di classe è Favorited1 se Favorita e 0 se non Favorita e vi applico baie ingenui e ora voglio disegnare una curva di richiamo di precisione, come devo impostare la mia linea di base in questo caso ?

Risposte:


13

La "curva di base" in un diagramma della curva PR è una linea orizzontale con altezza pari al numero di esempi positivi rispetto al numero totale di dati di allenamento N , vale a dire. la proporzione di esempi positivi nei nostri dati ( PPNPN ).

OK, perché è così? Supponiamo che abbiamo un "spazzatura classificatore" . C J restituisce un casuale probabilità p i al i -esimo campione esempio y i per essere in classe A . Per comodità, dire p iU [ 0 , 1 ] . L'implicazione diretta di questa assegnazione di classe casuale è che C J avrà una precisione (prevista) pari alla proporzione di esempi positivi nei nostri dati. È solo naturale; qualsiasi sottocampione totalmente casuale dei nostri dati avrà {CJCJpiiyiApiU[0,1]CJesempi correttamente classificati. Questo sarà vero per qualsiasi soglia di probabilitàqpotremmo usare come un confine di decisione per le probabilità di appartenenza alla classe restituiti daCJ. (qindica un valore in[0,1] incui i valori di probabilità maggiori o uguali aqsono classificati in classeA.) D'altra parte, la prestazione di richiamo diCJè (in attesa) uguale aqsepiU[0,1]qE{PN}qCJq[0,1]qACJqpiU[0,1] . A qualsiasi data sogliaq sceglieremo (circa) dei nostri dati totali che successivamente conterranno (approssimativamente) ( 100 ( 1 - q ) ) % del numero totale di istanze di classe A nel campione. Da qui la linea orizzontale che abbiamo menzionato all'inizio! Per ogni valore di richiamo (valori x nel grafico PR) il valore di precisione corrispondente (valori y nel grafico PR) è uguale a P(100(1q))%(100(1q))%AxyPN .

Una breve nota a margine: la soglia non è generalmente uguale a 1 meno il richiamo previsto. Ciò accade nel caso di un C J sopra menzionato solo a causa della distribuzione uniforme casuale dei risultati di C J ; per una diversa distribuzione (es. p iB ( 2 , 5 ) ) questa relazione di identità approssimativa tra q e richiamo non regge; U [ 0 , 1 ] è stato usato perché è il più facile da capire e visualizzare mentalmente. Per una diversa distribuzione casuale in [ 0qCJCJpiB(2,5)qU[0,1] il profilo PR di C J non cambierà comunque. Solo il posizionamento dei valori PR per determinativalori q cambierà.[0,1]CJq

Ora per quanto riguarda un classificatore perfetto , si vorrebbe dire un classificatore che restituisce probabilità 1 all'istanza del campione y io sono di classe A se y i è effettivamente in classe A e inoltre C P restituisce probabilità 0 se y i non è un membro di classe A . Ciò implica che per qualsiasi soglia q avremo una 100 %CP1yiAyiACP0yiAq100% precisione del (cioè in termini di grafico otteniamo una linea che inizia con una precisione del ). L'unico punto non ne otteniamo 100100%100%la precisione è . Per q = 0 , la precisione scende alla proporzione di esempi positivi nei nostri dati ( Pq=0q=0 ) come (follemente?) Si classificano punti anche con0probabilità di essere di classeAcome essere in classeA. Il grafico PR diCPha solo due possibili valori per la sua precisione,1ePPN0AACP1PN .

OK e un po 'di codice R per vederlo in prima persona con un esempio in cui i valori positivi corrispondono al del nostro campione. Si noti che eseguiamo un "soft-assegnato" della categoria di classe, nel senso che il valore di probabilità associato a ciascun punto quantifica alla nostra fiducia che questo punto è di classe 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);  

enter image description here

dove i cerchi neri e i triangoli indicano rispettivamente e q = 0,20 nei primi due grafici. Vediamo immediatamente che i classificatori "junk" vanno rapidamente a una precisione pari a Pq=0.50q=0.20PN10.401

Realisticamente il grafico PR di un classificatore perfetto è un po 'inutile perché non si può avere 0

Per la cronaca, ci sono già state delle ottime risposte in CV riguardo all'utilità delle curve PR: qui , qui e qui . Basta leggerli attentamente per offrire una buona comprensione generale delle curve PR.


1
Mi sono unito a questa community solo per poter votare questo. Questa è una grande spiegazione del concetto di base nelle curve di richiamo di precisione. Come bioinformatico l'ho trovato estremamente utile.
jimh

1
@jimh: Grazie, è una cosa molto bella sentirlo. Sono contento che il post sia stato utile.
usεr11852 dice Reinstate Monic il

So che non è un commento che fornisce informazioni utili, ma vorrei ringraziarti così tanto per la tua spiegazione approfondita e rivelatrice.
Ric S

0

Ottima risposta sopra. Ecco il mio modo intuitivo di pensarci. Immagina di avere un mucchio di palline rosse = positivo e giallo = negativo, e le butti casualmente in un secchio = frazione positiva. Quindi se hai lo stesso numero di palline rosse e gialle, quando calcoli PREC = tp / tp + fp = 100/100 + 100 dal tuo secchio rosso (positivo) = giallo (negativo), quindi, PREC = 0,5. Tuttavia, se avessi 1000 palline rosse e 100 palline gialle, nel secchio mi aspetterei casualmente PREC = tp / tp + fp = 1000/1000 + 100 = 0.91 perché questa è la base di probabilità nella frazione positiva che è anche RP / RP + RN, dove RP = reale positivo e RN = reale negativo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.