loan-default-prediction - Regresion Logistica

Modelo de clasificacion binaria de riesgo de default de prestamos. Modelo ganador (vs XGBoost) por interpretabilidad y costo esperado.

Uso previsto

Apoyar la decision de originacion de credito: si la probabilidad de default supera el umbral de decision (0.816), se recomienda pedir garantia adicional. Prioridad de negocio: evitar falsos positivos (no molestar a buenos pagadores).

Metricas en el punto de operacion (test, umbral 0.816)

Metrica Valor
Precision (default) 0.968
Recall (default) 0.769
F1 (default) 0.857
PR-AUC 0.938
ROC-AUC 0.980
Costo esperado (3:1) 12

Criterio de negocio: precision >= 0.70 y recall >= 0.40 -> CUMPLE. Matriz de confusion (test=200): TN=160, FP=1, FN=9, TP=30.

Coeficientes (log-odds)

Feature Coef
age -1.0153
credit_score -4.9988
dependents +3.9956
income -2.2871
home_owner -2.8181

(Features estandarizadas; signo negativo = mayor valor reduce el riesgo de default.)

Datos de entrenamiento

Como usar

import json, joblib, pandas as pd
from huggingface_hub import hf_hub_download

model = joblib.load(hf_hub_download("gusdelact/loan-default-logreg", "model.joblib"))
preproc = joblib.load(hf_hub_download("gusdelact/loan-default-logreg", "preprocessor.joblib"))
info = json.load(open(hf_hub_download("gusdelact/loan-default-logreg", "model_info.json")))

raw = pd.DataFrame([{"age": 35, "income": 15000, "credit_score": 480,
                      "dependents": 3, "home_owner": 0}])
Xp = pd.DataFrame(preproc.transform(raw[info["raw_feature_order"]]),
                  columns=info["processed_feature_order"])
proba = model.predict_proba(Xp)[0, 1]
decision = "pedir garantia" if proba >= info["decision_threshold"] else "aprobar"
print(proba, decision)

Fundamento teorico (resumen del diseno)

  • EDA: credit_score predictor mas fuerte, dependents monotonica; sin multicolinealidad.
  • FE: Yeo-Johnson en income (sesgo), escalado, dependents ordinal (FES 5.5, 6.1).
  • Modelado: LogReg L2, C por CV; sin resampling para preservar probabilidades (ISLP 4.4).
  • Validacion: umbral calibrado por costo 3:1 (ISLP 4.4, ESL 9.2); PR-AUC sobre ROC con desbalance (FES 3.2.2).

Limitaciones

  • Dataset pequeño y probablemente sintetico; rangos acotados. No extrapolar fuera de age 20-69, credit_score 300-849, income <= 100k.
  • Umbral calibrado sobre el test (39 positivos): metricas algo optimistas.
  • Ratio de costos 3:1 es asuncion de negocio no validada. NO usar como unica base de decisiones crediticias sin revision humana y cumplimiento regulatorio.

Generado el 2026-06-24 por el pipeline data-science-assistant.

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using gusdelact/loan-default-logreg 1