La "curva de línea de base" en un gráfico de curva PR es una línea horizontal con una altura igual al número de ejemplos positivos sobre el número total de datos de entrenamiento , es decir. la proporción de ejemplos positivos en nuestros datos ( ).N PPNPN
Bien, ¿por qué es este el caso? Supongamos que tenemos un "clasificador de basura" . devuelve un azar probabilidad a la -ésima ejemplo muestra estar en clase . Por conveniencia, diga . La implicación directa de esta asignación de clase aleatoria es que tendrá una precisión (esperada) igual a la proporción de ejemplos positivos en nuestros datos. Es natural; cualquier submuestra totalmente aleatoria de nuestros datos tendrá ejemplos correctamente clasificados. Esto será cierto para cualquier umbral de probabilidadC J p i i y i A p i ∼ U [ 0 , 1 ] C J E { PCJCJpiiyiApi∼U[0,1]CJqCJq[0,1]qACJqpi∼U[0,1]q(100(1-q))%(100(1-q))%AE{PN}qpodríamos usarlo como límite de decisión para las probabilidades de pertenencia a la clase devueltas por . ( denota un valor en donde los valores de probabilidad mayores o iguales a se clasifican en la clase ). Por otro lado, el rendimiento de de es (en expectativa) igual a si . En cualquier umbral elegiremos (aproximadamente) de nuestros datos totales que posteriormente contendrán (aproximadamente) del número total de instancias de claseCJq[0,1]qACJqpi∼U[0,1]q(100(1−q))%(100(1−q))%Aen la muestra ¡De ahí la línea horizontal que mencionamos al principio! Para cada valor de recuperación ( valores en el gráfico PR), el valor de precisión correspondiente ( valores en el gráfico PR) es igual a .y PxyPN
Una nota al margen rápida: el umbral generalmente no es igual a 1 menos la recuperación esperada. Esto sucede en el caso de un mencionado anteriormente solo debido a la distribución aleatoria uniforme de los resultados de ; para una distribución diferente (p. ej. ) esta relación de identidad aproximada entre y recordar no se cumple; Se usó porque es el más fácil de entender y visualizar mentalmente. Sin embargo, para una distribución aleatoria diferente en el perfil PR de no cambiará. Solo cambiará la ubicación de los valores PR para los valores dados .C J C J p i ∼ B ( 2 , 5 ) q U [ 0 , 1 ] [ 0 , 1 ] C J qqCJCJpi∼B(2,5)qU[0,1][0,1]CJq
Ahora con respecto a un clasificador perfecto , uno significaría un clasificador que los rendimientos de probabilidad a la instancia muestra Ser de clase si es de hecho en la clase y, además, devuelve probabilidad si no es un miembro de la clase . Esto implica que para cualquier umbral tendremos una precisión del (es decir, en términos gráficos, obtenemos una línea que comienza con una precisión del ). El único punto en el que no obtenemos precisión es . Para 1 y i A y i A C P 0 y i A q 100 % 100 % 100 % q = 0 q = 0CP1yiAyiACP0yiAq100%100%100%q=0q=0, La precisión cae a la proporción de ejemplos positivos en nuestros datos ( ) como (locamente?) Clasificamos puntos incluso con probabilidad de ser de clase como en la clase . El gráfico PR de tiene solo dos valores posibles para su precisión, y . 0AACP1PPN0AACP1PN
OK y algo de código R para ver esto de primera mano con un ejemplo donde los valores positivos corresponden al de nuestra muestra. Tenga en cuenta que hacemos un "soft-cesión" de la categoría de clase en el sentido de que el valor de probabilidad asociada a cada uno cuantifica puntuales a nuestra confianza en que este punto es de clase .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);
donde los círculos y triángulos negros denotan y respectivamente en las dos primeras gráficas. Inmediatamente vemos que los clasificadores "basura" pasan rápidamente a una precisión igual a ; Del mismo modo, el clasificador perfecto tiene precisión en todas las variables de recuperación. Como era de esperar, el AUCPR para el clasificador "basura" es igual a la proporción de ejemplos positivos en nuestra muestra ( ) y el AUCPR para el "clasificador perfecto" es aproximadamente igual a .q=0.50q=0.20PN1≈0.401
Siendo realistas, el gráfico PR de un clasificador perfecto es un poco inútil porque uno no puede tener recordar nunca (nunca predecimos solo la clase negativa); comenzamos a trazar la línea desde la esquina superior izquierda como una convención. Estrictamente hablando, solo debería mostrar dos puntos, pero esto haría una curva horrible. :RE0
Para el registro, ya ha habido una muy buena respuesta en CV con respecto a la utilidad de las curvas PR: aquí , aquí y aquí . Solo leerlos detenidamente debería ofrecer una buena comprensión general sobre las curvas de relaciones públicas.