Qu'est-ce que la «ligne de base» dans la courbe de rappel de précision

15

J'essaie de comprendre la courbe de rappel de précision, je comprends ce que sont la précision et le rappel, mais ce que je ne comprends pas, c'est la valeur "de base". Je lisais ce lien https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

et je ne comprends pas la partie de la ligne de base comme indiqué dans "Une courbe de précision-rappel d'un classificateur parfait" que fait-elle? et comment le calculons-nous? Est-ce juste une référence aléatoire que nous sélectionnons? Par exemple , j'ai données twitter avec des attributs comme retweet,status_countetc et mon étiquette de classe est Favorited1 si Favorited et 0 sinon Favorited et j'applique Bayes naïf et maintenant je veux tracer la courbe-rappel de précision, comment dois - je mettre ma ligne de base dans ce cas ?

hyeri
la source

Réponses:

13

La "courbe de base" dans un tracé de courbe PR est une ligne horizontale avec une hauteur égale au nombre d'exemples positifs P sur le nombre total de données d'entraînement N , c'est-à-dire. la proportion d'exemples positifs dans nos données ( PN ).

OK, pourquoi est-ce le cas? Supposons que nous avons un « classificateur junk » . C J renvoie une aléatoire probabilité p i de la i instance de l' échantillon -ième y i à être en classe A . Par commodité, disons p iU [ 0 , 1 ] . L'implication directe de cette affectation de classe aléatoire est que C J aura une précision (attendue) égale à la proportion d'exemples positifs dans nos données. Ce n'est que naturel; tout sous-échantillon totalement aléatoire de nos données aura ECJCJpiiyiApiU[0,1]CJexemples correctement classés. Ce sera vrai pour un seuil probabilitéqnous pourrions utiliser comme une limite de décision pour les probabilités d'appartenance àclasse retournées parCJ. (qdésigne une valeur dans[0,1]où les valeurs de probabilité supérieures ou égales àqsont classées dans la classeA.) Par contre, la performance de rappel deCJest (en attente) égale àqsipiU[0,1]. À n'importe quel seuil donnéE{PN}qCJq[0,1]qUNECJqpjeU[0,1] nous choisirons (environ) ( 100 ( 1 - q ) ) % de nos données totales qui contiendront par la suite (environ) ( 100 ( 1 - q ) ) % du nombre total d'instances de classe A dans l'échantillon. D'où la ligne horizontale que nous avons mentionnée au début! Pour chaque valeur de rappel (valeurs x dans le graphique PR), la valeur de précision correspondante (valeurs y dans le graphique PR) est égale à Pq(100(1-q))%(100(1-q))%UNEXy .PN

Petite note: le seuil n'est généralement pas égal à 1 moins le rappel attendu. Cela se produit dans le cas d'un C J mentionné ci-dessus uniquement en raison de la distribution uniforme aléatoire des résultats de C J ; pour une distribution différente (p. ex. p iB ( 2 , 5 ) ), cette relation d'identité approximative entre q et rappel ne tient pas; U [ 0 , 1 ] a été utilisé car il est le plus facile à comprendre et à visualiser mentalement. Pour une distribution aléatoire différente dans [ 0qCJCJpjeB(2,5)qU[0,1] le profil PR de C J ne changera pas cependant. Seul le placement des valeurs PR pour desvaleurs q données changera.[0,1]CJq

En ce qui concerne un classificateur parfait , on voudrait dire un classificateur qui renvoie la probabilité 1 pour échantillonner l'instance y i étant de classe A si y i est en effet dans la classe A et en plus C P renvoie la probabilité 0 si y i n'est pas membre de la classe A . Cela implique que pour tout seuil q, nous aurons une précision de 100 % (c'est-à-dire qu'en termes de graphique, nous obtenons une ligne commençant à une précision de 100 % ). Le seul point que nous n'obtenons pas 100CP1yiAyiACP0yiAq100%100% précision en % est à q = 0 . Pour q = 0 , la précision tombe à la proportion d'exemples positifs dans nos données ( P100%q=0q=0 ) comme (insensément?) Nous classonspoints même avec0probabilité d'être de classeAcomme étant en classeA. Le graphe PR deCPn'a que deux valeurs possibles pour sa précision,1etPPN0AACP1 .PN

OK et du code R pour voir cela de première main avec un exemple où les valeurs positives correspondent à de notre échantillon. Notez que nous faisons une « affectation douce » de la catégorie de classe dans le sens où la valeur de probabilité associée à chaque point quantifie à notre confiance que ce point est de classe A .40%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

où les cercles noirs et les triangles indiquent et q = 0,20 respectivement dans les deux premiers graphiques. On voit tout de suite que les classificateurs "junk" vont rapidement à une précision égale à Pq=0.50q=0.20 ; de même, le classificateur parfait a la précision1pour toutes les variables de rappel. Sans surprise, l'ASCPR pour le classificateur "indésirable" est égal à la proportion d'exemples positifs dans notre échantillon (0,40) et l'ASCPR pour le "classificateur parfait" est approximativement égal à1.PN10.401

De façon réaliste, le graphe PR d'un classifieur parfait est un peu inutile car on ne peut jamais avoir rappel (on ne prévoit jamais que la classe négative); nous commençons juste à tracer la ligne à partir du coin supérieur gauche par convention. À strictement parler, il ne devrait montrer que deux points, mais cela ferait une courbe horrible. :RÉ0

Pour mémoire, il y a déjà eu de très bonnes réponses en CV concernant l'utilité des courbes PR: ici , ici et ici . Le simple fait de les lire attentivement devrait offrir une bonne compréhension générale des courbes PR.

usεr11852
la source
1
J'ai rejoint cette communauté juste pour que je puisse voter contre. Il s'agit d'une excellente explication du concept de la ligne de base dans les courbes de rappel de précision. En tant que bioinformaticien, je l'ai trouvé extrêmement utile.
jimh
1
@jimh: Merci, c'est une très bonne chose d'entendre ça. Je suis content que le message ait été utile.
usεr11852
Je sais que ce n'est pas un commentaire qui apporte des informations utiles, mais je tiens à vous remercier beaucoup pour votre explication approfondie et révélatrice.
Ric S
0

Grande réponse ci-dessus. Voici ma façon intuitive d'y penser. Imaginez que vous avez un tas de boules rouge = positif et jaune = négatif, et vous les jetez au hasard dans un seau = fraction positive. Ensuite, si vous avez le même nombre de boules rouges et jaunes, lorsque vous calculez PREC = tp / tp + fp = 100/100 + 100 à partir de votre seau rouge (positif) = jaune (négatif), donc, PREC = 0,5. Cependant, si j'avais 1000 boules rouges et 100 boules jaunes, alors dans le seau, je m'attendrais au hasard à PREC = tp / tp + fp = 1000/1000 + 100 = 0,91 car c'est la base de chance dans la fraction positive qui est également RP / RP + RN, où RP = réel positif et RN = réel négatif.

Christopher John
la source