ROC-AUC de 0,97, precisión del 9 %: la matemática de la tasa base

Trabaja con un detector con un 1 % de positivos, convierte los umbrales en puntos ROC y de precisión-recall, y elige un punto operativo para un presupuesto de revisión de 30 alertas.

Comparte este artículo

Aquí tenemos un detector con un ROC-AUC de 0.97080.9708. En un conjunto de prueba de 1.000 filas con 10 positivos, su umbral de recall del 90 % envía 99 alertas. Nueve son verdaderas. Noventa son falsas.

Ambas afirmaciones describen la misma clasificación por puntuación. La primera premia hasta qué punto los ejemplos positivos tienden a quedar por encima de los negativos en todos los umbrales. La segunda describe la cola que las personas deben revisar realmente en un umbral concreto. Cuando los positivos son poco frecuentes, pueden ser historias operativas radicalmente distintas.

Esta lección construye la diferencia a partir de un ejemplo sintético completo. Convertirás los recuentos de los umbrales en coordenadas ROC y de precisión-recall, calcularás el ROC-AUC y la precisión media, mostrarás cómo la prevalencia modifica la precisión sin mover el punto ROC y seleccionarás un umbral que encaje con un presupuesto de revisión de 30 alertas.

Un umbral crea 99 alertas

Imagina un modelo que asigna una puntuación entre 00 y 11 a cada fila. El conjunto contiene 10 positivos y 990 negativos, así que la prevalencia es

π=101000=0.01.\pi=\frac{10}{1000}=0.01.

Con el umbral 0.550.55, cada puntuación igual o superior a 0.550.55 se convierte en una alerta. La matriz de confusión resultante es:

Matriz de confusión con umbral 0.55 para 1.000 ejemplos

PredicciónRealmente positivoRealmente negativoTotal
AlertaTP = 9FP = 9099
Sin alertaFN = 1TN = 900901
Total109901.000

El umbral detecta nueve de los diez positivos. Suena bien hasta que se cuenta la cola de revisión: 90 de sus 99 alertas son falsos positivos. El modelo no se ha contradicho. El recall y la precisión responden a preguntas distintas.

recall=TPTP+FN=910=0.90,\operatorname{recall} =\frac{TP}{TP+FN} =\frac{9}{10} =0.90, precision=TPTP+FP=9990.0909.\operatorname{precision} =\frac{TP}{TP+FP} =\frac{9}{99} \approx0.0909.

El recall pregunta: «De todos los positivos reales, ¿qué proporción capturó el sistema de alertas?». La precisión pregunta: «De todas las alertas, ¿qué proporción era positiva?». En este punto operativo, las respuestas son 90%90\% y 9.1%9.1\%.

La matriz de confusión proporciona ambos sistemas de coordenadas

Una curva ROC representa la tasa de verdaderos positivos, que es el recall, frente a la tasa de falsos positivos:

TPR=TPTP+FN.\operatorname{TPR}=\frac{TP}{TP+FN}. FPR=FPFP+TN.\operatorname{FPR}=\frac{FP}{FP+TN}.

Una curva de precisión-recall representa la precisión frente al recall. Para el umbral 0.550.55, la misma matriz de confusión da

FPR=909900.0909\operatorname{FPR}=\frac{90}{990}\approx0.0909

y TPR=9/10=0.90\operatorname{TPR}=9/10=0.90. Por tanto, su coordenada ROC es (0.0909,0.90)(0.0909,0.90). Desde la perspectiva de precisión-recall,

precision=9990.0909.\operatorname{precision}=\frac{9}{99}\approx0.0909.

Junto con el recall 0.900.90, esto se convierte en la coordenada de precisión-recall (0.90,0.0909)(0.90,0.0909).

Ahora recorre seis umbrales sobre las mismas puntuaciones ordenadas. Los recuentos son acumulativos: bajar el umbral añade ejemplos positivos y negativos al conjunto de alertas.

Recorrido de umbrales para 1.000 ejemplos con 10 positivos y 990 negativos

UmbralTPFPAlertasRecallFPRPrecisión
0000.00.0

1.000*

0.954150.40.00100.800
0.75820280.80.02020.286
0.55990990.90.09090.091
0.35102903001.00.29290.033
0.10109901.0001.01.00.010

^* Sin predicciones positivas, la precisión no está definida. El valor 1 es el punto de partida convencional utilizado para dibujar esta curva; no demuestra que el clasificador sea útil.

La documentación de la curva de precisión-recall de scikit-learn utiliza las mismas definiciones e incluye los extremos para una curva completa. Sus umbrales son los valores de puntuación distintos; un dataset real suele proporcionar muchos más puntos que este ejemplo compacto.

Vistas ROC y precisión-recall del mismo barrido de umbralesDos gráficos representan seis puntos operativos de un clasificador sintético sobre mil ejemplos con diez positivos. El umbral 0,75 aparece destacado con una tasa de falsos positivos del 2 por ciento y un recall del 80 por ciento en el gráfico ROC, y con una precisión del 29 por ciento y un recall del 80 por ciento en el gráfico de precisión-recall.Un barrido de umbrales, dos sistemas de coordenadas1000 ejemplos · 10 positivos · 990 negativosEspacio ROCRecall frente a tasa de falsos positivosumbral 0,75FPR 2,0% · recall 80%00.20.40.60.81.000.20.40.60.81.0Tasa de falsos positivosRecall (tasa de verdaderos positivos)Espacio precisión-recallSolo puntos operativos; sin interpolación linealReferencia de prevalencia del 1%umbral 0,75recall 80% · precisión 29%00.20.40.60.81.000.20.40.60.81.0RecallPrecisión

El punto naranja es el umbral 0.75 en ambos paneles. Las coordenadas cambian, mientras que la matriz de confusión subyacente sigue teniendo 8 verdaderos positivos, 20 falsos positivos, 2 falsos negativos y 970 verdaderos negativos.

ROC comprime 90 falsas alarmas en un 9,1 %

Con el umbral 0.550.55, el denominador de FPR contiene los 990 negativos. Noventa falsos positivos se convierten en un FPR de solo 9.1%9.1\%. La precisión, en cambio, coloca esos mismos 90 falsos positivos junto a los nueve verdaderos positivos que verán los revisores. Eso produce una precisión del 9.1%9.1\%.

Este es el efecto de la tasa base expresado con aritmética. Una pequeña fracción de una clase negativa muy grande puede superar a la mayoría de una clase positiva diminuta. El punto ROC es válido y no contiene ni la pureza de las alertas ni el tamaño de la cola.

El ROC-AUC resume toda la curva ROC, no un único umbral. Aplicar la regla del trapecio a los seis puntos da

ROC-AUC=0.9708.\operatorname{ROC\text{-}AUC}=0.9708.

scikit-learn define el ROC-AUC como el área bajo la curva ROC calculada a partir de las puntuaciones de predicción. Para un clasificador binario, también puede leerse como la probabilidad de que un positivo elegido al azar reciba una puntuación mayor que un negativo elegido al azar, con el tratamiento habitual de los empates. Esa interpretación del orden no especifica el umbral, el número de alertas ni el coste de revisión.

El análisis de ICML 2006 de Jesse Davis y Mark Goadrich muestra por qué esta distinción se agudiza con el desequilibrio de clases. Las curvas ROC y de precisión-recall están conectadas matemáticamente para un dataset fijo, pero el gran denominador negativo puede hacer que los gráficos ROC parezcan visualmente optimistas. También muestran que la interpolación lineal en el espacio de precisión-recall suele ser incorrecta; la curva entre los puntos operativos observados no es un segmento decorativo.

Para este recorrido discreto, la precisión media sin interpolar es

AP=n(RnRn1)Pn=0.4467.\operatorname{AP} =\sum_n(R_n-R_{n-1})P_n =0.4467.

Está muy por encima de la precisión del 1%1\% de un ordenamiento sin información con esta prevalencia. La AP sigue resumiendo el ordenamiento; la decisión de dotación de personal necesita un punto operativo. La documentación de precisión media de scikit-learn utiliza la suma ponderada por recall anterior y advierte que la interpolación trapezoidal puede ser optimista.

La prevalencia modifica la precisión sin mover el punto ROC

Escribe la prevalencia como π=Pr(Y=1)\pi=\Pr(Y=1). Si un punto operativo tiene una tasa de verdaderos positivos tt y una tasa de falsos positivos ff, entonces en una población grande:

  • la proporción esperada de alertas positivas es tπt\pi;
  • la proporción esperada de falsas alertas es f(1π)f(1-\pi).

La precisión se obtiene dividiendo la proporción de alertas positivas entre todas las alertas:

precision=tπtπ+f(1π).\operatorname{precision} =\frac{t\pi}{t\pi+f(1-\pi)}.

Usa el umbral 0.750.75, donde t=0.80t=0.80 y f=20/9900.0202f=20/990\approx0.0202. Mantener constantes esas tasas condicionales da:

Precisión esperada con TPR fija del 80 % y FPR del 2,02 % en tres niveles de prevalencia

PrevalenciaPrecisión esperada
0,1%3,8%
1%28,6%
10%81,5%

La coordenada ROC se mantiene cerca de (0.0202,0.80)(0.0202,0.80) en las tres filas porque la TPR está condicionada a los positivos y la FPR a los negativos. La coordenada de precisión cambia drásticamente porque su denominador mezcla alertas verdaderas y falsas.

Este cálculo supone que TPR y FPR se transfieren sin cambios a la nueva población. La transferencia debe probarse: los cambios en las distribuciones de puntuaciones, las etiquetas o la calidad de los datos pueden mover ambas tasas. Estima el punto operativo con datos que representen el uso previsto y mantén separada la selección del umbral de la muestra intacta utilizada para el informe final de rendimiento. La misma disciplina poblacional importa al calibrar las probabilidades predichas.

Treinta plazas de revisión eligen un umbral

Supón que el equipo puede revisar como máximo 30 alertas por cada 1.000 filas y exige al menos un 75%75\% de recall. La regla de decisión queda explícita:

TP+FP30.TP+FP\le30.

El requisito de recall es

TPTP+FN0.75.\frac{TP}{TP+FN}\ge0.75.

El umbral 0.950.95 encaja en la cola con cinco alertas, pero su recall del 40%40\% no cumple el requisito. El umbral 0.750.75 crea 28 alertas y alcanza un recall del 80%80\%, así que cumple. El umbral 0.550.55 alcanza un recall del 90%90\%, pero crea 99 alertas, más de tres veces la capacidad disponible.

Por tanto, el punto operativo seleccionado es 0.750.75 para estas filas y estas restricciones. Su precisión es 8/28=28.6%8/28=28.6\%: un revisor debería esperar unas 20 falsas alertas entre las 28, no la tranquilidad que sugiere citar únicamente un ROC-AUC de 0.97080.9708.

La capacidad también puede escribirse como una tolerancia de falsos positivos. Una vez fijado el número mínimo de verdaderos positivos, un presupuesto BB permite como máximo

FPmax=BTP.FP_{\max}=B-TP.

Con B=30B=30 y ocho verdaderos positivos, la tolerancia es de 22 falsos positivos. El umbral 0.750.75 produce 20. Esta traducción conecta las métricas del modelo con la restricción real de recursos, en lugar de asignar una importancia universal a una sola curva.

Reproduce el recorrido y el filtro de presupuesto

El siguiente programa de NumPy calcula ambas curvas, el ROC-AUC, la precisión media sin interpolar y el umbral elegible. Los arrays contienen recuentos acumulados en cada umbral descendente.

import numpy as np

thresholds = np.array([np.inf, 0.95, 0.75, 0.55, 0.35, 0.10])
tp = np.array([0, 4, 8, 9, 10, 10])
fp = np.array([0, 1, 20, 90, 290, 990])
positives, negatives = 10, 990

recall = tp / positives
fpr = fp / negatives
precision = np.divide(
    tp,
    tp + fp,
    out=np.ones_like(tp, dtype=float),
    where=(tp + fp) > 0,
)

roc_auc = np.trapezoid(recall, fpr)
average_precision = np.sum(np.diff(recall) * precision[1:])

budget = 30
recall_floor = 0.75
alerts = tp + fp
eligible = (alerts <= budget) & (recall >= recall_floor)

print(f"ROC-AUC: {roc_auc:.6f}")
print(f"average precision: {average_precision:.6f}")
print("eligible thresholds:", thresholds[eligible])

La salida es:

ROC-AUC: 0.970808
average precision: 0.446710
eligible thresholds: [0.75]

Si cumplen varios umbrales, elige según un objetivo secundario declarado—como el recall más alto dentro del presupuesto o el coste esperado más bajo—y no según el punto que haga que un gráfico parezca mejor. Si las puntuaciones tienen empates, todas las filas del umbral se mueven juntas; puede ser imposible alcanzar exactamente un objetivo de capacidad.

Cuando ningún umbral encaja

Reduce el mismo presupuesto a 25 alertas y exige un recall del 80%80\%. El umbral 0.750.75 captura ocho positivos, pero crea 28 alertas. El umbral más alto encaja en la cola, pero captura solo cuatro positivos. Ninguna fila del recorrido satisface ambas restricciones.

Ese resultado es accionable. Mover el umbral no puede crear un punto operativo que falta. El equipo debe mejorar el ordenamiento, añadir un filtro de segunda etapa, aumentar la capacidad de revisión o aceptar un requisito de recall distinto. En un sistema real, los falsos positivos y falsos negativos también pueden tener costes desiguales, así que una función de costes o un análisis de decisiones puede sustituir al simple límite de la cola.

El principio de medición más amplio es actual además de matemático. NIST AI 800-3 subraya que los evaluadores deben elegir una cantidad de rendimiento y un método de incertidumbre que encajen con el objetivo y los datos; no existe una fórmula única para cada evaluación. Aquí la cantidad relevante no es «AUC» en abstracto, sino el recall, la precisión y el volumen de alertas en un umbral para una prevalencia determinada y un presupuesto real de revisión.

Fuentes

  1. The Relationship Between Precision-Recall and ROC Curves
  2. scikit-learn precision-recall curve documentation
  3. scikit-learn ROC AUC documentation
  4. scikit-learn average precision documentation
  5. NIST AI 800-3 expands the AI evaluation toolbox