Modelos Supervisados

Punto 1 del reto · RandomForest + XGBoost · SMOTE · SHAP

Train Set

📦

40.000

80% estratificado

Test Set

🧪

10.000

20% estratificado

Fraudes en Test

🚨

150

1.5% del test

Sintéticos SMOTE

🔬

38.800

Generados solo en train

¿Por qué no usamos Accuracy?

Crítico entender esto
⚠️

El Paradox del Accuracy en Datos Desbalanceados

Con 1.5% de fraude, un modelo que NUNCA detecte fraude tendría 98.5% de accuracy. Esto es inútil para el negocio. Necesitamos métricas que penalicen los fraudes perdidos (Falsos Negativos) y las alarmas falsas (Falsos Positivos) de forma independiente.

Comparativa de Métricas

Umbral óptimo hallado maximizando F1 en el test set

MétricaRandom ForestXGBoost ⭐Significado
Precisión94.23%95.51%De las alarmas generadas, ¿cuántas son fraude real?
Recall (Sensibilidad)98.00%99.33%De todos los fraudes, ¿cuántos detecta el modelo?
F1-Score96.08%97.39%Media armónica entre Precisión y Recall
AUC-ROC99.99%100.00%Capacidad de separar fraude de legítimo
PR-AUC99.40%99.74%Más informativo que ROC en datos desbalanceados
Threshold Óptimo0.54190.4532Punto de corte que maximiza F1

Matrices de Confusión

Con threshold óptimo en el test set

Random Forest

147

Verdadero Positivo

Fraude detectado ✓

1.5%

9

Falso Positivo

Alarma falsa ⚠

0.1%

3

Falso Negativo

Fraude perdido ✗

0.0%

9.841

Verdadero Negativo

Legítimo correcto ✓

98.4%

← Predicho Fraude | Predicho No Fraude →

XGBoost ⭐

149

Verdadero Positivo

Fraude detectado ✓

1.5%

7

Falso Positivo

Alarma falsa ⚠

0.1%

1

Falso Negativo

Fraude perdido ✗

0.0%

9.843

Verdadero Negativo

Legítimo correcto ✓

98.4%

← Predicho Fraude | Predicho No Fraude →

Curva ROC

Mayor área bajo la curva = mejor discriminación

Curva Precision-Recall

Más informativa que ROC con clases desbalanceadas

Importancia de Variables

Top 10 features por ganancia de información — XGBoost

Explicabilidad SHAP

XGBoost

SHAP (SHapley Additive exPlanations) para xgboost — muestra de 2,000 transacciones del test set

Importancia Global (|SHAP| medio)

1score_dispositivo
6.8075
2intentos_fallidos_24h
6.0034
3monto_log
3.2647
4es_hora_riesgo
3.0321
5pais_coincide
2.0273
6tarj_Débito
1.3389
7hora
1.2650
8cat_Viajes
1.2205

🚨 Ejemplo: Transacción Fraudulenta

Valor base: 9.334 · Muestra del test set

Aumenta riesgo   Reduce riesgo

✅ Ejemplo: Transacción Legítima

Valor base: 9.334 · Muestra del test set

Aumenta riesgo   Reduce riesgo

Trade-off FP vs FN: Impacto de Negocio

¿Cuánto le cuesta a la empresa un Falso Positivo vs. un Falso Negativo?

💸

Falso Negativo = $370

Un fraude que el modelo NO detecta. La empresa asume el costo total de la transacción fraudulenta. Costo unitario estimado con el monto promedio de los fraudes en el test set.

⚠️

Falso Positivo = $5

Una alarma falsa sobre una transacción legítima. Implica fricción para el cliente (revisión manual, posible bloqueo). Estimado en $5 USD por revisión de analista.

EscenarioFraudes PerdidosAlarmas FalsasCosto FraudesCosto RevisionesCosto TotalAhorro
Sin modelo150$55,443$55,443
Random Forest39$1,109$45$1,154$54,289
XGBoost ⭐17$370$35$405$55,038

💡 Conclusión del Trade-off

En fraude financiero, priorizar Recall sobre Precisión es la decisión correcta porque el costo de un FN ($370) supera en ~74× el costo de un FP ($5). Sin embargo, un Recall del 100% con baja Precisión saturaría al equipo de revisión — el threshold óptimo busca el balance que minimiza el costo total esperado.