Introducción

En esta sección, aprenderemos sobre la Curva ROC (Receiver Operating Characteristic) y el AUC (Area Under the Curve), dos herramientas fundamentales para evaluar el rendimiento de modelos de clasificación. Estas métricas nos ayudan a entender cómo de bien nuestro modelo puede distinguir entre clases positivas y negativas.

Conceptos Clave

Curva ROC

La Curva ROC es un gráfico que ilustra el rendimiento de un modelo de clasificación binaria a través de diferentes umbrales de decisión. Los dos ejes de la curva son:

  • Eje Y (Sensibilidad o Tasa de Verdaderos Positivos - TPR): Proporción de verdaderos positivos sobre el total de positivos reales.
  • Eje X (1 - Especificidad o Tasa de Falsos Positivos - FPR): Proporción de falsos positivos sobre el total de negativos reales.

AUC

El AUC (Area Under the Curve) es el área bajo la Curva ROC. Un AUC de 1 indica un modelo perfecto, mientras que un AUC de 0.5 sugiere un modelo que no es mejor que una clasificación aleatoria.

Ejemplo Práctico

Vamos a generar un ejemplo práctico utilizando Python y la biblioteca scikit-learn.

Paso 1: Importar Bibliotecas

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, roc_auc_score

Paso 2: Generar Datos de Ejemplo

# Generar un conjunto de datos de ejemplo
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

Paso 3: Entrenar el Modelo

# Entrenar un modelo de regresión logística
model = LogisticRegression()
model.fit(X_train, y_train)

Paso 4: Predecir Probabilidades

# Predecir las probabilidades de la clase positiva
y_probs = model.predict_proba(X_test)[:, 1]

Paso 5: Calcular la Curva ROC y el AUC

# Calcular la Curva ROC
fpr, tpr, thresholds = roc_curve(y_test, y_probs)

# Calcular el AUC
auc = roc_auc_score(y_test, y_probs)
print(f'AUC: {auc:.2f}')

Paso 6: Graficar la Curva ROC

# Graficar la Curva ROC
plt.figure()
plt.plot(fpr, tpr, color='blue', lw=2, label=f'ROC curve (AUC = {auc:.2f})')
plt.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Tasa de Falsos Positivos (FPR)')
plt.ylabel('Tasa de Verdaderos Positivos (TPR)')
plt.title('Curva ROC')
plt.legend(loc="lower right")
plt.show()

Ejercicio Práctico

Ejercicio 1: Evaluación de un Modelo de Clasificación

  1. Objetivo: Entrenar un modelo de clasificación utilizando un conjunto de datos de su elección y evaluar su rendimiento utilizando la Curva ROC y el AUC.
  2. Pasos:
    • Seleccione un conjunto de datos adecuado.
    • Divida los datos en conjuntos de entrenamiento y prueba.
    • Entrene un modelo de clasificación.
    • Calcule y grafique la Curva ROC.
    • Calcule el AUC y analice los resultados.

Solución del Ejercicio

# Importar bibliotecas necesarias
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_curve, roc_auc_score

# Cargar el conjunto de datos
data = load_breast_cancer()
X, y = data.data, data.target

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Entrenar un modelo de Random Forest
model = RandomForestClassifier()
model.fit(X_train, y_train)

# Predecir las probabilidades de la clase positiva
y_probs = model.predict_proba(X_test)[:, 1]

# Calcular la Curva ROC
fpr, tpr, thresholds = roc_curve(y_test, y_probs)

# Calcular el AUC
auc = roc_auc_score(y_test, y_probs)
print(f'AUC: {auc:.2f}')

# Graficar la Curva ROC
plt.figure()
plt.plot(fpr, tpr, color='blue', lw=2, label=f'ROC curve (AUC = {auc:.2f})')
plt.plot([0, 1], [0, 1], color='gray', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Tasa de Falsos Positivos (FPR)')
plt.ylabel('Tasa de Verdaderos Positivos (TPR)')
plt.title('Curva ROC')
plt.legend(loc="lower right")
plt.show()

Conclusión

En esta sección, hemos aprendido sobre la Curva ROC y el AUC, dos herramientas esenciales para evaluar el rendimiento de modelos de clasificación. La Curva ROC nos permite visualizar el trade-off entre la tasa de verdaderos positivos y la tasa de falsos positivos a diferentes umbrales, mientras que el AUC proporciona una medida cuantitativa del rendimiento del modelo. Con estos conocimientos, estamos mejor equipados para evaluar y mejorar nuestros modelos de clasificación.

Curso de Machine Learning

Módulo 1: Introducción al Machine Learning

Módulo 2: Fundamentos de Estadística y Probabilidad

Módulo 3: Preprocesamiento de Datos

Módulo 4: Algoritmos de Machine Learning Supervisado

Módulo 5: Algoritmos de Machine Learning No Supervisado

Módulo 6: Evaluación y Validación de Modelos

Módulo 7: Técnicas Avanzadas y Optimización

Módulo 8: Implementación y Despliegue de Modelos

Módulo 9: Proyectos Prácticos

Módulo 10: Recursos Adicionales

© Copyright 2024. Todos los derechos reservados