Curva ROC y Umbral de Decisión

curva_roc_umbral
Índice
  1. ¿Qué es el umbral de decisión?
  2. ⚖️ ¿Por qué ajustar el umbral de decisión?
  3. 📈 ¿Qué es la Curva ROC?
  4. 📌 Área bajo la curva (AUC)
  5. 🔁 ¿Qué pasa si cambiamos el umbral?
  6. 📊 Ejemplo práctico
  7. 📉 ¿Cómo elegir el mejor umbral?
  8. 🧮 Cómo calcularlo en la práctica
  9. 🤯 ¿Y si hay más de dos clases?
  10. 📚 Ejemplo cotidiano: detección de fraude
  11. 🔗 Relación con otros conceptos clave
  12. ❓ Preguntas frecuentes (FAQ)
    1. 🔹 ¿Qué significa un AUC de 0.90?
    2. 🔹 ¿Se puede tener alta precisión y alto recall a la vez?
    3. 🔹 ¿ROC es mejor que Accuracy?
    4. 🔹 ¿El umbral se puede optimizar automáticamente?
    5. 🔹 ¿Hay alternativas a la curva ROC?
  13. 📢 Conclusión y próximos pasos

¿Qué es el umbral de decisión?

Cuando un modelo de clasificación genera una predicción, en realidad lo que devuelve internamente es una probabilidad.

Por ejemplo:

  • "Este email tiene un 87% de probabilidad de ser spam"
  • "Esta transacción tiene un 22% de probabilidad de ser fraudulenta"

Para traducir esa probabilidad en una decisión (sí o no), se necesita un umbral de decisión.

📌 Por defecto, muchas implementaciones lo fijan en 0.5. Es decir:

  • Si la probabilidad es ≥ 0.5 → clase positiva (ej. spam)
  • Si es < 0.5 → clase negativa (ej. no spam)

Pero este umbral se puede (y debe) ajustar en función del problema.


⚖️ ¿Por qué ajustar el umbral de decisión?

Porque no todos los errores pesan igual.

Por ejemplo:

  • En un sistema antispam, es mejor dejar pasar un poco de spam que perder un correo importante.
  • En medicina, es mejor detectar un posible cáncer con falsa alarma que no detectarlo a tiempo.

Ajustando el umbral podemos priorizar:

  • 🎯 Precisión → evitar falsos positivos
  • 📥 Recall → atrapar todos los casos posibles

Este trade-off entre precisión y recall se puede visualizar con la Curva ROC.


📈 ¿Qué es la Curva ROC?

La Curva ROC (Receiver Operating Characteristic) muestra gráficamente el comportamiento del modelo a diferentes umbrales.

En el eje X se representa:

  • Tasa de falsos positivos (FPR) = FP / (FP + TN)

En el eje Y:

  • Tasa de verdaderos positivos (TPR o recall) = TP / (TP + FN)

Cada punto de la curva representa un umbral distinto.

Cuanto más arriba a la izquierda esté la curva, mejor es el modelo.


📌 Área bajo la curva (AUC)

El AUC (Area Under the Curve) es una sola métrica que resume toda la curva:

  • AUC = 1 → modelo perfecto
  • AUC = 0.5 → modelo aleatorio (tan bueno como lanzar una moneda)

Cuanto más alto el AUC, mejor es el modelo para distinguir entre clases.


🔁 ¿Qué pasa si cambiamos el umbral?

Imagina un modelo que clasifica si un correo es spam.

  • Con umbral 0.5 → clasifica como spam si la probabilidad es mayor a 0.5
  • Con umbral 0.8 → solo marcará como spam si está muy seguro

Esto reduce falsos positivos (correos buenos marcados como spam), pero aumenta falsos negativos (deja pasar más spam).

Cambiar el umbral afecta directamente a:

  • ✔️ Precisión
  • 📥 Recall
  • ⚠️ Falsos positivos y negativos

Por eso es tan importante visualizarlo con la curva ROC.


📊 Ejemplo práctico

Supón que tienes un modelo que predice si una reseña es positiva:

Reseña Probabilidad de ser positiva
R1 0.95
R2 0.85
R3 0.60
R4 0.45
R5 0.25

Con umbral 0.5 → R1, R2, R3 son positivas; R4 y R5 negativas.
Con umbral 0.8 → Solo R1 y R2 son positivas. Se gana precisión, pero se pierde recall.


📉 ¿Cómo elegir el mejor umbral?

No hay uno universal. Algunas estrategias comunes:

  1. Maximizar F1 Score: buscar el umbral que mejor balancea precisión y recall.
  2. Minimizar pérdida: según el coste de los errores en cada caso.
  3. Punto más cercano a la esquina superior izquierda de la curva ROC.

Lo importante es alinear el umbral con los objetivos del negocio.


🧮 Cómo calcularlo en la práctica

Con librerías como scikit-learn puedes calcular todo esto fácilmente:

from sklearn.metrics import roc_curve, auc

# y_scores = probabilidades
# y_true = etiquetas reales
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
roc_auc = auc(fpr, tpr)

Luego puedes usar matplotlib para graficar la curva y encontrar el umbral óptimo:

import matplotlib.pyplot as plt

plt.plot(fpr, tpr, label=f'AUC = {roc_auc:.2f}')
plt.plot([0, 1], [0, 1], linestyle='--')
plt.xlabel('Tasa de falsos positivos')
plt.ylabel('Tasa de verdaderos positivos')
plt.title('Curva ROC')
plt.legend()
plt.show()

🤯 ¿Y si hay más de dos clases?

La ROC se usa principalmente en clasificación binaria.

Para problemas multiclase:

  • Se construyen curvas ROC uno contra el resto (OvR) por cada clase.
  • Se calcula el promedio del AUC.

Esto ayuda a evaluar modelos complejos, como los que clasifican imágenes en varias categorías.


📚 Ejemplo cotidiano: detección de fraude

En un sistema que detecta fraude bancario:

  • Con umbral bajo: detecta más fraudes, pero bloquea transacciones legítimas (falsos positivos).
  • Con umbral alto: evita molestar a usuarios, pero deja escapar fraudes reales (falsos negativos).

La elección depende de la tolerancia al riesgo del banco y del coste de equivocarse.

 

🔗 Relación con otros conceptos clave

  • Precisión y Recall: métricas fundamentales que varían según el umbral.
  • F1 Score: se utiliza para encontrar el equilibrio ideal entre precisión y recall.
  • Evaluación de modelos: la curva ROC complementa otras métricas de rendimiento.
  • Validación cruzada: permite probar diferentes umbrales con mayor robustez.
  • Overfitting y Underfitting: modelos sobreajustados pueden mostrar curvas ROC artificialmente altas.
  • Curva Precision-Recall: alternativa a la ROC en contextos de clases desbalanceadas.

❓ Preguntas frecuentes (FAQ)

🔹 ¿Qué significa un AUC de 0.90?

Que el modelo tiene un 90% de probabilidad de clasificar correctamente una instancia positiva aleatoria frente a una negativa.

🔹 ¿Se puede tener alta precisión y alto recall a la vez?

Sí, pero es raro. Normalmente hay que elegir entre uno u otro según el caso.

🔹 ¿ROC es mejor que Accuracy?

Sí, porque accuracy puede ser engañosa en problemas con clases desbalanceadas.

🔹 ¿El umbral se puede optimizar automáticamente?

Sí. Puedes usar validación cruzada o una función de pérdida personalizada.

🔹 ¿Hay alternativas a la curva ROC?

Sí, como la Curva Precision-Recall, que es más útil cuando hay muchas más instancias negativas que positivas.


📢 Conclusión y próximos pasos

La curva ROC y el umbral de decisión son herramientas fundamentales para entender el comportamiento real de un modelo de clasificación.

👉 Saber mover el umbral te permite personalizar la inteligencia artificial según el riesgo, el negocio y el contexto.

En el próximo post exploraremos cómo aplicar esto en producción y qué estrategias usar para ajustar el umbral de forma dinámica según el entorno real.

Si quieres conocer otros artículos parecidos a Curva ROC y Umbral de Decisión puedes visitar la categoría Wiki.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir