AUC-ROC vs. AUC-PR: ¿Cuál elegir para datos desbalanceados?
Introducción
Cuando entrenamos un modelo de clasificación binaria, una de las métricas más usadas para evaluar su rendimiento es el AUC-ROC (Area Under the ROC Curve), que resume el comportamiento del modelo en todos los puntos de corte de probabilidad posibles. Un solo número que permite comparar modelos sin tener que elegir un threshold arbitrario.
El problema aparece cuando nos enfrentamos a clases desbalanceadas, es decir, cuando la clase que nos interesa predecir (clase positiva) es muy minoritaria respecto a la otra. Esto es más común de lo que parece: modelos de churn donde solo el 5% de los usuarios se retiran, diagnóstico de una enfermedad poco frecuente donde los casos positivos son el 8%, o clasificación de transacciones fraudulentas donde menos del 2% son maliciosas. En todos estos casos, el AUC-ROC tiende a ser optimista y puede sugerir un rendimiento adecuado incluso cuando el modelo falla en la predicción de la clase minoritaria.
Las alternativas clave que se centran en el rendimiento de la clase minoritaria son el AUC-PR (Area Under the Precision-Recall Curve), que ofrece un resumen independiente del umbral similar al AUC-ROC, y el F1 Score, una métrica de punto fijo esencial para la toma de decisiones en producción.
Conceptos fundamentales
La matriz de confusión
Cuando un clasificador binario hace predicciones, cada predicción cae en una de cuatro categorías según cómo se cruza con la realidad:
.png?width=858&height=483&name=ix%20Figuras%20blog%20general%20(4).png)
Figura 1. Representación gráfica de una matriz de confusión
La nomenclatura que usamos a lo largo de este artículo es la siguiente:
- TP (True Positive – Verdadero Positivo)
- TN (True Negative – Verdadero Negativo)
- FP (False Positive – Falso Positivo)
- FN (False Negative – Falso Negativo)
De aquí derivan las métricas:
Recall: La relación entre los verdaderos positivos y todos los positivos reales que existían y se calcula de la siguiente manera
Recall (TPR) = TP / (TP + FN)
Precisión: La relación entre los verdaderos positivos y todas las predicciones positivas que el modelo realizó y se calcula de la siguiente manera
Precisión = TP / (TP + FP)
FPR: También llamada tasa de falsos positivos (FPR) por sus siglas en inglés, indica qué proporción de la clase negativa el modelo clasificó incorrectamente como positiva y se calcula de la siguiente manera
FPR = FP / (FP + TN)
Estas métricas son la base para el cálculo de las métricas de evaluación del rendimiento del modelo que exploraremos a continuación, como el AUC-ROC, AUC-PR y F1-Score.
AUC-ROC
La curva ROC traza Recall contra FPR a medida que se barre el umbral del modelo, y el AUC-ROC es el área bajo esa curva.
Recall = TP/(TP+FN) FPR = FP / (FP + TN)
El problema que se presenta cuando hay datos desbalanceados está en el cálculo de la tasa de falsos positivos (FPR). El denominador, FP + TN, está dominado por TN cuando los negativos son muchos. Si un modelo confunde 100 negativos como positivos pero hay 50.000 negativos en total, el FPR sube apenas 0.2%. La curva ROC se pega al borde superior izquierdo y el AUC queda cerca de 1, aunque esos 100 falsos positivos en producción sean un problema real.
Dado que para el cálculo del FPR se utiliza TN, la abundancia de la clase mayoritaria 'diluye' el impacto de los errores del modelo.
AUC-PR
La curva PR enfrenta Precisión contra Recall a distintos umbrales.
Precisión = TP/(TP+FP) Recall = TP/(TP+FN)
La diferencia clave: ni Precision ni Recall usan TN. Que el dataset tenga un millón de negativos correctamente clasificados no contribuye al cálculo. Lo único que cuenta es la calidad de las predicciones positivas y cuántos positivos el modelo logra detectar.
F1 Score
El F1 es la media armónica entre precisión y recall:
F1 = 2 · (Precisión × Recall) / (Precisión + Recall) = 2·TP / (2·TP + FP + FN)
A diferencia de AUC-ROC y AUC-PR, F1 Score se calcula a un umbral fijo: una vez que se elige el punto de corte, se evalúan Precision y Recall en ese punto y se combinan en un solo número. Por defecto se usa 0.5, pero en datos desbalanceados ese corte casi nunca es el adecuado.
En la práctica, en datos desbalanceados conviene reportar el F1 Score óptimo (barriendo todos los umbrales) y no el F1 Score al umbral por defecto 0.5, que casi siempre subestima al modelo.
Dataset Sintético
Con el fin de ilustrar la diferencia en las curvas para un dataset desbalanceado, generamos un conjunto de datos sintético e implementemos un par de modelos como se muestra a continuación. Para la generación del conjunto de datos y la implementación de los modelos, empleamos las siguientes librerías en python:

Generamos este Dataset Sintético (30.300 muestras, 1% de positivos, ratio 100:1) buscando acentuar las diferencias entre AUC-ROC y AUC-PR para que el ejemplo sea más ilustrativo.

Dos modelos
Ahora, pasamos al entrenamiento de modelos: una regresión Logística vs. un Gradient Boosting. La capacidad del GBM para capturar interacciones entre features será la clave de la diferencia en el rendimiento.

Curvas lado a lado
Visualizando la curva PR y ROC


Las dos curvas ROC se ven prácticamente iguales pegadas al borde superior izquierdo. Si solo tuvieras ese gráfico, no habría motivo para preferir un modelo sobre el otro.
La curva PR muestra una divergencia clara. El Gradient Boosting domina ampliamente el rendimiento, mientras que la Regresión Logística presenta una caída rápida al intentar capturar una fracción decente de los positivos.
Elegir un umbral
AUC-ROC y AUC-PR no dependen de un umbral fijo. Pero al desplegar el modelo hay que elegir uno, y 0.5 raramente es el adecuado en datos desbalanceados.
Para Gradient Boosting, en nuestro ejemplo, este es Precision, Recall y F1 al barrer todos los umbrales:



Umbral 0.50 (default)
Precision=0.771 Recall=0.411 F1=0.536
TN= 8989 FP= 11 FN= 53 TP= 37
Umbral 0.14 (F1 óptimo)
Precision=0.579 Recall=0.689 F1=0.629
TN= 8955 FP= 45 FN= 28 TP= 62
El umbral que maximiza F1 está bastante por debajo de 0.5. Al bajar este corte, el modelo clasifica más casos como positivos, incrementando el recall a expensas de una ligera disminución de la precisión, lo que resulta en un F1 Score optimizado. Cuál umbral elegir en producción depende del costo relativo de FP y FN para el negocio.
¿Cuándo usar cada una?
La elección de la métrica depende del problema específico. No obstante, la siguiente regla práctica se deriva del análisis:
- AUC-ROC: es ideal cuando las clases están balanceadas o el desbalance es leve. Es la métrica estándar, fácil de interpretar y ampliamente aceptada. Se recomienda su uso cuando los verdaderos negativos (TN) no son tan abundantes como para distorsionar el FPR.
- AUC-PR: se debe utilizar cuando el desbalance es severo (superior a 10:1). Es una métrica más rigurosa, ya que no se ve influenciada por la clase mayoritaria. Si se trabaja con detección de fraude, abandono (churn) extremo o enfermedades raras, esta debe ser la métrica principal.
- F1 Score: es útil cuando se requiere tomar una decisión concreta sobre el umbral. Mientras que AUC-ROC y AUC-PR resumen el modelo en todos los puntos de corte, en producción es necesario elegir uno. El F1 en el umbral óptimo es el valor que suele reportarse al negocio.
Conclusión
En resumen, mientras que el AUC-ROC ofrece una visión general del rendimiento del modelo, en el contexto de datos severamente desbalanceados, el AUC-PR y el F1 Score se erigen como métricas superiores al no verse diluidas por la abundancia de la clase mayoritaria. La elección final siempre debe estar guiada por el contexto del negocio y los costos relativos de los falsos positivos y falsos negativos.