loan-default-logreg / README.md
gusdelact's picture
Modelo LogReg v0.1.0
04f3b32 verified
|
Raw
History Blame Contribute Delete
3.28 kB
---
license: apache-2.0
library_name: sklearn
pipeline_tag: tabular-classification
tags:
- logistic-regression
- credit-risk
- loan-default
- tabular
- binary-classification
---
# 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
- Fuente: [`gusdelact/loan_default_prediction`](https://huggingface.co/datasets/gusdelact/loan_default_prediction)
- Dataset curado: [`gusdelact/loan-default-curated`](https://huggingface.co/datasets/gusdelact/loan-default-curated)
- Train: 800 filas, 5 features. CV estratificado k=5, scoring=average_precision.
## Como usar
```python
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._