Contenido del curso

- Manejo de datos desbalanceados en clasificación (fraude y spam)

⚖️ Manejo de datos desbalanceados en clasificación (fraude y spam)

Odisea Algorítmica · De la Regresión al Aprendizaje Profundo — En muchos problemas reales las clases no están equilibradas: en fraude bancario, menos del 1% de las transacciones son fraudulentas; en spam, los mensajes no deseados son una minoría. Ignorar este desbalance lleva a modelos engañosamente precisos pero inútiles. Aquí abordamos las técnicas más efectivas para entrenar modelos robustos, interpretables y justos.

🧠 La paradoja de la exactitud (accuracy)

Si el 99.5% de las transacciones son legítimas, un clasificador que siempre prediga “no fraude” tendrá un 99.5% de exactitud. Sin embargo, no detectará ni un solo fraude. Necesitamos métricas y métodos que pongan el foco en la clase minoritaria. El desbalance extremo (ej. 1:1000) exige técnicas especiales de remuestreo y ponderación.

📌 Concepto clave: En clasificación desbalanceada, la sensibilidad (recall) y la curva Precision-Recall son mucho más informativas que la exactitud. El F1-score y el área bajo la curva PR se convierten en brújulas del modelo.

🔧 Técnicas de remuestreo: equilibrio artificial

  • Random Under-sampling: elimina observaciones aleatorias de la clase mayoritaria hasta igualar frecuencias. Riesgo: pérdida de información relevante y posible sesgo. Útil si el dataset es enorme.
  • SMOTE (Synthetic Minority Over-sampling TEchnique): genera nuevos ejemplos sintéticos de la clase minoritaria interpolando entre vecinos cercanos. Reduce sobreajuste respecto a duplicar muestras. Variantes como SMOTE-NC para variables categóricas.
  • Combinaciones híbridas: SMOTE + Edited Nearest Neighbors (ENN) o Tomek Links para limpiar bordes ambiguos. Mejoran la separabilidad.
# Ejemplo con imbalanced-learn (Python)
from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)
sm = SMOTE(random_state=42, k_neighbors=5)
X_res, y_res = sm.fit_resample(X_train, y_train)

⚙️ Ponderaciones de clase: peso justo en la función de costo

En lugar de modificar los datos, asignamos un mayor coste a los errores sobre la clase minoritaria. La mayoría de algoritmos (Random Forest, SVM, regresión logística, xgboost) permiten definir class_weight o scale_pos_weight.

  • Random Forest: class_weight='balanced' ajusta pesos inversamente proporcionales a frecuencias. También puede ser un diccionario personalizado.
  • SVM: class_weight='balanced' penaliza más los errores de la clase minoritaria, moviendo el hiperplano.
  • XGBoost / LightGBM: parámetro scale_pos_weight = (n_negativos / n_positivos). Muy efectivo en gradiente boosting.
# Random Forest con ponderación automática
from sklearn.ensemble import RandomForestClassifier

modelo = RandomForestClassifier(
    n_estimators=100,
    class_weight='balanced',
    random_state=42
)
modelo.fit(X_train, y_train)

📊 Métricas alternativas: curva PR, sensibilidad y especificidad

En datos desbalanceados la curva Precision-Recall (PR) es más reveladora que la ROC (pues la tasa de falsos positivos puede ser engañosa). La sensibilidad (recall de la clase positiva) y la especificidad (recall de la clase negativa) deben evaluarse conjuntamente. La media armónica F1 y el coeficiente de correlación de Matthews (MCC) son robustos.

Métrica Fórmula / interpretación Relevancia en desbalance
Sensibilidad (Recall) TP / (TP + FN) Queremos maximizar la detección de fraudes
Especificidad TN / (TN + FP) Evitar demasiadas falsas alarmas
Precisión TP / (TP + FP) Importante cuando el coste de falso positivo es alto
F1-score 2 × (precisión × recall) / (precisión + recall) Equilibrio entre precisión y recall
MCC Coeficiente entre -1 y 1 Robusto incluso con desbalance extremo
Área bajo curva PR Integral de precisión vs recall Refleja el rendimiento en la clase minoritaria

🧪 Caso práctico: detección de fraude con datos reales sintéticos

Utilizamos un dataset de transacciones con tarjeta de crédito (desbalance ~0.17% de fraudes). Aplicamos tres estrategias: (a) modelo base sin ajuste, (b) SMOTE + Random Forest con ponderación, y (c) submuestreo aleatorio. Comparamos sensibilidad, precisión y F1 en la clase minoritaria, y observamos el sesgo en interpretabilidad.

# Comparación de resultados (valores ilustrativos)
# Modelo base: Recall=0.35, Precisión=0.85, F1=0.49
# SMOTE + class_weight: Recall=0.79, Precisión=0.72, F1=0.75
# Submuestreo: Recall=0.81, Precisión=0.58, F1=0.68

Observación: SMOTE combinado con ponderación mejora el F1 global y mantiene una precisión aceptable. El submuestreo aumenta el recall pero reduce la precisión (más falsos positivos). En negocio de fraude, el coste de un falso positivo puede ser una revisión manual, mientras que un falso negativo es una pérdida económica.

📈 Impacto en el sesgo-varianza e interpretabilidad

  • Sesgo-varianza: Técnicas de sobremuestreo (SMOTE) pueden incrementar la varianza si se generan ejemplos muy cercanos a la frontera. La ponderación de clases no modifica la distribución, pero puede aumentar el sesgo al forzar la separación. Balance: usar validación cruzada estratificada y monitorear curvas de aprendizaje.
  • Interpretabilidad: En modelos lineales o árboles de decisión, las ponderaciones de clase no alteran la lógica del modelo (los coeficientes o umbrales se ajustan). Con SMOTE, los datos sintéticos pueden crear regiones artificiales que dificultan entender el límite de decisión real. Se recomienda inspeccionar las muestras generadas y usar herramientas como SHAP o PDP con cuidado.

💡 Recomendación profesional: Siempre evalúa el modelo en el dominio original (sin remuestreo en test). Combina SMOTE + class_weight ligero si el desbalance es extremo. Documenta las transformaciones para mantener la trazabilidad. Nunca optimices métricas sin comprender el coste de los errores en el negocio.

📌 Resumen ejecutivo

  • El desbalance de clases requiere técnicas de remuestreo (SMOTE, Under-sampling) o ponderación (class_weight).
  • Las métricas adecuadas son sensibilidad, especificidad, F1, curva PR y MCC.
  • SMOTE incrementa la varianza y puede afectar la interpretabilidad, mientras que las ponderaciones mantienen la distribución original.
  • Para fraude y spam, prioriza el recall de la clase positiva (detección) pero controla la tasa de falsos positivos según el contexto.

Odisea Algorítmica — lección diseñada con enfoque didáctico y aplicado. Siguiente tema: Aprendizaje profundo para secuencias temporales.

Abordaje del problema de clases desbalanceadas, común en detección de fraude y filtrado de spam. Técnicas: remuestreo (SMOTE, Random Under-sampling), uso de ponderaciones de clase en algoritmos (Random Forest class_weight, SVM class_weight), y métricas alternativas (curva PR, sensibilidad vs especificidad). Se aplica a un dataset de fraude y se compara el impacto en el sesgo-varianza y la interpretabilidad.
Calificación
0 0

No hay comentarios por ahora.