O que é "linha de base" na curva de recall de precisão

15

Estou tentando entender a curva de recall de precisão, entendo o que são precisão e recall, mas o que não entendo é o valor da "linha de base". Eu estava lendo este link https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

e eu não entendo a parte da linha de base, como mostrado em "Uma curva de precisão de recuperação de um classificador perfeito", o que faz? e como calculamos isso? É apenas uma linha de base aleatória que selecionamos? Por exemplo, eu tenho dados do twitter com atributos como retweet,status_countetc e meu rótulo de classe é Favorited1 se Favorito e 0 se não Favorito e eu aplico bayes ingênuos nele e agora quero desenhar uma curva de precisão de recuperação, como devo definir minha linha de base neste caso ?

hyeri
fonte

Respostas:

13

A "curva de linha de base" em um gráfico de curva PR é uma linha horizontal com altura igual ao número de exemplos positivos sobre o número total de dados de treinamento N , ou seja. a proporção de exemplos positivos em nossos dados ( PPN )PN

OK, por que esse é o caso? Vamos supor que temos um "classificador lixo" . C J retorna um aleatória probabilidade p i para o i -simo exemplo amostra de y i para a classe A . Por conveniência, diga p iCJCJpiiyiA . A implicação direta dessa atribuição de classe aleatória é que C J terá (esperado) de precisão igual à proporção de exemplos positivos em nossos dados. É apenas natural; qualquer subamostra totalmente aleatória de nossos dados terá EpiU[0,1]CJexemplos classificados corretamente. Isso vai ser verdade para qualquer probabilidade limiarqpodemos usar como uma fronteira de decisão para as probabilidades de associação de classe retornados porCJ. (qdenota um valor em[0,1]onde valores de probabilidade maiores ou iguais aqsão classificados na classeA.) Por outro lado, o desempenho de recuperação deCJé (na expectativa) igual aqseE{PN}qCJq[0,1]qACJq . Em qualquer limitepiU[0,1] escolheremos (aproximadamente) ( 100 ( 1 - q ) ) % de nossos dados totais que subsequentemente conterão (aproximadamente) ( 100 ( 1 - q ) ) % do número total de instâncias da classe A na amostra. Daí a linha horizontal que mencionamos no começo! Para cada valor de rechamada (valores x no gráfico PR), o valor de precisão correspondente (valores y no gráfico PR) é igual a Pq(100(1q))%(100(1q))%Axy .PN

Uma observação rápida: o limite geralmente não é igual a 1 menos a recuperação esperada. Isto acontece no caso de um C J mencionado acima só por causa da distribuição uniforme aleatória de C J resultados 's; para uma distribuição diferente (por exemplo, p iB ( 2 , 5 ) ) essa relação aproximada de identidade entre q , 1 ]qCJCJpiB(2,5)q e recall não se mantém; foi utilizado porque é o mais fácil de entender e visualizar mentalmente. Para uma distribuição aleatória diferente em [ 0U[0,1][0,1] o perfil PR de não irá mudar no entanto. Apenas a colocação dos valores PR para q valores determinados será alterada.CJq

Agora, em relação a um classificador perfeito , um classificador que retorna a probabilidade 1 para a instância de amostra e eu é da classe A se y i está realmente na classe A e adicionalmente C P retorna a probabilidade 0 se y i não for um membro da classe Um . Isso implica que, para qualquer limite q , teremos 100 % de precisão (ou seja, em termos de gráfico, obteremos uma linha começando com precisão de 100 % ). O único ponto em que não temos 100CP1yiAyiACP0yiAq100%100% precisão está em q = 0 . Para q = 0 , a precisão cai para a proporção de exemplos positivos em nossos dados ( P100%q=0q=0 ) como (insanamente?) Classificamos mesmo pontos com0probabilidade de ser de classeAcomo sendo de classeA. O gráfico PR deCPpossui apenas dois valores possíveis para sua precisão,1ePPN0AACP1 .PN

OK e algum código R para ver isso em primeira mão com um exemplo em que os valores positivos correspondem a da nossa amostra. Note que fazer um "soft-atribuição" da categoria de classe no sentido de que o valor da probabilidade associada a cada ponto quantifica a nossa confiança de que esse ponto é 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

onde os círculos e triângulos pretos indicam e q = 0,20 respectivamente nas duas primeiras parcelas. Vimos imediatamente que os classificadores "lixo" rapidamente atingem uma precisão igual a Pq=0.50q=0.20 ; da mesma forma, o classificador perfeito tem precisão1em todas as variáveis ​​de recall. Sem surpresa, a AUCPR para o classificador "lixo" é igual à proporção de exemplo positivo em nossa amostra (0,40) e a AUCPR para o "classificador perfeito" é aproximadamente igual a1.PN10.401

Realisticamente, o gráfico PR de um classificador perfeito é um pouco inútil, porque nunca se pode ter recall (nunca previmos apenas a classe negativa); nós apenas começamos a traçar a linha do canto superior esquerdo por uma questão de convenção. A rigor, deve mostrar apenas dois pontos, mas isso faria uma curva horrível. : D0

Para constar, já há uma resposta muito boa no CV em relação à utilidade das curvas de RP: aqui , aqui e aqui . Apenas a leitura cuidadosa deles deve oferecer uma boa compreensão geral das curvas de RP.

usεr11852 diz Reinstate Monic
fonte
1
Ingressou nesta comunidade para que eu pudesse aprovar isso. Essa é uma ótima explicação do conceito da linha de base nas curvas de recuperação de precisão. Como bioinformática, achei extremamente útil.
jimh
1
@ Jimh: Obrigado, é uma coisa muito agradável de ouvir isso. Fico feliz que o post foi útil.
usεr11852 diz Reinstate Monic
Sei que não é um comentário que traga informações úteis, mas gostaria de agradecer muito por sua explicação completa e reveladora.
Ric S,
0

Ótima resposta acima. Aqui está minha maneira intuitiva de pensar sobre isso. Imagine que você tem um monte de bolas vermelhas = positivas e amarelas = negativas e as joga aleatoriamente em um balde = fração positiva. Então, se você tiver o mesmo número de bolas vermelhas e amarelas, ao calcular PREC = tp / tp + fp = 100/100 + 100 do seu balde vermelho (positivo) = amarelo (negativo), portanto, PREC = 0,5. No entanto, se eu tivesse 1000 bolas vermelhas e 100 bolas amarelas, no balde esperaria aleatoriamente PREC = tp / tp + fp = 1000/1000 + 100 = 0,91 porque essa é a linha de base da chance na fração positiva que também é RP / RP + RN, onde RP = real positivo e RN = real negativo.

Christopher John
fonte