Curva ROC y AUC: qué son y cómo interpretarlas

La curva ROC evalúa un clasificador binario en todos sus umbrales posibles. En lugar de decir únicamente cuántos aciertos obtiene con el corte predeterminado, muestra el intercambio entre detectar positivos y generar falsas alarmas. El AUC resume esa curva en un número.
Son herramientas útiles para comparar modelos de machine learning, pero no reemplazan la matriz de confusión, el costo de los errores ni la elección de un umbral operativo. Esta guía explica cómo leerlas sin caer en interpretaciones automáticas.
Qué es la curva ROC
ROC significa Receiver Operating Characteristic. La curva coloca:
- en el eje vertical, la tasa de verdaderos positivos o sensibilidad;
- en el eje horizontal, la tasa de falsos positivos.
Sus fórmulas son:
TPR = VP / (VP + FN)
FPR = FP / (FP + VN)
Cuando bajas el umbral para clasificar más casos como positivos, normalmente aumenta la sensibilidad, pero también las falsas alarmas. Cada punto de la curva representa un umbral distinto.
Ejemplo de umbral
Un modelo asigna a cada transacción una probabilidad de fraude. Con umbral 0.50:
- si la probabilidad es 0.70, marca fraude;
- si es 0.30, marca operación legítima.
Si bajas el corte a 0.20, detectarás más fraudes, pero revisarás más operaciones legítimas. Si lo subes a 0.80, reducirás revisiones y dejarás pasar más fraudes.
La curva ROC no decide qué costo es aceptable; muestra las opciones.
Cómo interpretar la forma
- Diagonal: rendimiento similar al azar.
- Cerca de la esquina superior izquierda: alta sensibilidad con pocos falsos positivos.
- Debajo de la diagonal: el orden de las puntuaciones está invertido o el modelo es peor que el azar.
- Curvas que se cruzan: un modelo puede ser mejor en un rango de umbrales y peor en otro.
Comparar solo el AUC puede ocultar ese último caso. Examina la zona de falsos positivos que realmente tolera el negocio.
Qué es el AUC
AUC significa Area Under the Curve: área bajo la curva ROC. Varía normalmente entre 0 y 1:
- 0.5: ordenamiento equivalente al azar;
- mayor que 0.5: el modelo suele ordenar positivos por encima de negativos;
- 1.0: separación perfecta en los datos evaluados.
Una interpretación útil es probabilística: el AUC es la probabilidad de que un positivo elegido al azar reciba una puntuación mayor que un negativo elegido al azar.
No existe una tabla universal que convierta 0.7, 0.8 o 0.9 en “malo” o “excelente”. El valor aceptable depende del problema, la calidad de los datos y el costo de actuar.
Cómo crear una curva ROC en Python
import matplotlib.pyplot as plt
from sklearn.metrics import RocCurveDisplay, roc_auc_score
# y_test contiene 0/1 y prob contiene la probabilidad de la clase positiva
auc = roc_auc_score(y_test, prob)
print("ROC AUC:", round(auc, 3))
RocCurveDisplay.from_predictions(y_test, prob)
plt.plot([0, 1], [0, 1], linestyle="--", color="gray")
plt.show()
Usa probabilidades o puntuaciones continuas, no las clases finales de predict(). Una clase 0/1 solo produce un punto y pierde la información de todos los umbrales.
Cómo elegir el umbral correcto
El umbral predeterminado de 0.50 no tiene nada de mágico. Elige según la decisión:
Priorizar recall
En detección de fraude o enfermedad, un falso negativo puede ser muy costoso. Se baja el umbral para recuperar más positivos, aceptando más revisiones.
Priorizar precisión
Si una alerta dispara una acción cara o molesta, interesa que los positivos marcados sean confiables. Se sube el umbral.
Optimizar costo esperado
Asigna un costo a FP y FN y calcula el resultado por umbral:
Costo = FP × costo_FP + FN × costo_FN
El mínimo es más accionable que una regla genérica. También puedes imponer una restricción, como “FPR menor al 2 %”, y elegir el mejor recall dentro de ella.
ROC vs curva precision-recall
Con clases muy desbalanceadas, la tasa de falsos positivos puede parecer pequeña porque hay muchísimos negativos. La curva precision-recall concentra la atención en la clase positiva:
- Precision: de los casos marcados, cuántos eran positivos.
- Recall: de los positivos reales, cuántos detectaste.
| Situación | Curva más informativa |
|---|---|
| Clases relativamente equilibradas | ROC y PR |
| Positivos muy raros | Precision-recall |
| Comparar capacidad de ranking | ROC AUC |
| Evaluar calidad de alertas | PR y matriz de confusión |
Reportar ambas evita conclusiones demasiado optimistas.
Macro, micro y multiclase
Para más de dos clases, ROC se calcula con estrategias uno contra el resto o uno contra uno. Después se promedian los resultados:
- macro: cada clase pesa igual;
- weighted: cada clase pesa según su frecuencia;
- micro: agrega decisiones de todas las clases.
Explica siempre qué promedio usaste. Una media alta puede esconder una clase minoritaria mal resuelta.
Errores comunes al usar AUC
- Calcularlo con clases en vez de probabilidades.
- Elegir modelo solo por una diferencia mínima de AUC.
- Evaluar sobre entrenamiento.
- Ignorar intervalos de confianza o variabilidad entre particiones.
- Usar ROC como sustituto del umbral operativo.
- Suponer que AUC alto implica probabilidades calibradas.
- Comparar AUC de datasets o periodos distintos sin contexto.
- Ignorar la deriva: el rendimiento puede caer cuando cambia la población.
AUC no mide calibración
Un modelo puede ordenar bien los casos y, aun así, asignar probabilidades exageradas. Si predice 0.9 para eventos que ocurren el 60 % de las veces, discrimina quizá bien, pero está mal calibrado.
Cuando la probabilidad se usa para presupuesto, riesgo o priorización, añade:
- curva de calibración;
- Brier score;
- validación por periodo y segmento.
Flujo de evaluación recomendado
- Separa entrenamiento, validación y prueba sin fuga.
- Entrena el modelo y guarda probabilidades.
- Calcula ROC AUC y PR AUC.
- Revisa la curva en la zona operativa.
- Elige umbral por costos o capacidad.
- Presenta matriz de confusión en ese umbral.
- Comprueba calibración y segmentos.
- Monitorea métricas después del despliegue.
Este proceso también ayuda a detectar sobreajuste. La guía de MLOps y despliegue de modelos explica por qué conviene vigilar estas diferencias fuera del entrenamiento.
Preguntas frecuentes
¿Qué mide la curva ROC?
Mide la relación entre sensibilidad y tasa de falsos positivos a través de todos los umbrales de clasificación.
¿Qué significa un AUC de 0.5?
Que el modelo no ordena positivos y negativos mejor que una asignación aleatoria en los datos evaluados.
¿Un AUC más alto siempre es mejor?
Como capacidad global de ranking, sí; pero una diferencia pequeña puede no ser relevante y un modelo puede ser peor justo en el rango operativo.
¿Qué umbral debo usar?
El que equilibre el costo de falsos positivos y falsos negativos, las restricciones del negocio y la capacidad de atención.
¿Cuándo usar precision-recall en vez de ROC?
Cuando la clase positiva es rara o interesa especialmente la calidad de las alertas positivas.
¿AUC indica que las probabilidades están calibradas?
No. Evalúa ordenamiento, no si 0.8 significa realmente un 80 % de frecuencia.

Deja una respuesta