DEV Community

Cover image for Predicción de Riesgo Crediticio: Por qué elegí XGBoost para construir SmartCredit-ML
Juan Manuel Landa
Juan Manuel Landa

Posted on • Originally published at Medium

Predicción de Riesgo Crediticio: Por qué elegí XGBoost para construir SmartCredit-ML

Cualquiera que haya trabajado con datos financieros sabe que la evaluación manual de créditos es un dolor de cabeza. Es lenta, ineficiente y, lo peor de todo, está llena de sesgos humanos.

Hace poco decidí encarar este problema de frente y desarrollé SmartCredit-ML, un modelo predictivo pensado para automatizar esta toma de decisiones. Mi objetivo no era armar un “proyecto de laboratorio” perfecto, sino diseñar una arquitectura real, resistente y que una empresa pudiera poner en producción mañana mismo.

El Stack: Manteniéndolo simple y efectivo

A la hora de definir la arquitectura, esquivé la tentación de sobrecomplicar las cosas y fui directo a las herramientas que mejor rinden en entornos corporativos para datos tabulares:

  • Python: El lenguaje principal para orquestar todo el flujo.
  • Pandas & Scikit-Learn: Para hacer el trabajo sucio. El preprocesamiento ETL, el manejo de valores nulos y la transformación de variables se resolvieron acá.
  • XGBoost: El motor predictivo. ¿Por qué XGBoost y no una red neuronal compleja? Porque en el mundo real, los datos financieros tienen ruido, valores atípicos y distribuciones raras. XGBoost es un “tanque” lidiando con esto, es rápido y tiene mecanismos nativos brillantes para evitar el overfitting (sobreajuste).

El corazón del modelo (y el foco en el negocio)

A nivel código, el principal desafío no fue simplemente hacer que el modelo corra. En el negocio del riesgo crediticio, un falso positivo (aprobarle un crédito a alguien que no va a pagar) sale carísimo. Por eso, mi enfoque principal al ajustar los hiperparámetros fue maximizar el Recall.

Acá les comparto el fragmento donde configuro y entreno el modelo principal:

from xgboost import XGBClassifier
from sklearn.pipeline import Pipeline
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.impute import SimpleImputer

# 1. Definición exacta de las variables para producción
features_para_la_app = [
    'person_age', 'person_income', 'person_emp_length',
    'loan_amnt', 'loan_int_rate', 'loan_percent_income', 'loan_intent'
]

X = df[features_para_la_app]
y = df['loan_status']

# 2. Pipeline de Preprocesamiento y Modelo
model = Pipeline(steps=[
    ('preprocessor', ColumnTransformer(transformers=[
        ('num', Pipeline([('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler())]),
         X.select_dtypes(include=['int64', 'float64']).columns),
        ('cat', Pipeline([('onehot', OneHotEncoder(handle_unknown='ignore'))]),
         X.select_dtypes(include=['object']).columns)
    ])),
    ('classifier', XGBClassifier(
        n_estimators=100,
        learning_rate=0.1,
        max_depth=5,
        scale_pos_weight=4 # Clave para penalizar los falsos negativos en morosos
    ))
])

# 3. Entrenamiento del Pipeline completo
model.fit(X_train, y_train)
Enter fullscreen mode Exit fullscreen mode

El impacto real: Código que se traduce en rentabilidad
Al final del día, a las empresas no les importa cuántas líneas de código escribiste, sino qué problema de negocio les resolviste. Implementar un pipeline como el de SmartCredit-ML se traduce directamente en tres cosas:

Menos morosidad: El algoritmo detecta patrones de riesgo ocultos que el ojo humano suele pasar por alto.

Agilidad: Aprobaciones automáticas e instantáneas para los clientes de bajo riesgo.

Foco: El equipo de analistas deja de perder tiempo en tareas repetitivas y se enfoca solo en revisar los casos límite o complejos.

Si tu equipo está buscando optimizar su infraestructura de datos, o necesitan ayuda para implementar modelos predictivos y pipelines ETL, peguémosle una mirada.

Podés ver la documentación y el código completo de este proyecto en mi Portafolio Web o podemos agendar una llamada de consultoría técnica de 1 hora directamente desde mi perfil de GitHub Sponsors.

Top comments (0)