Update README.md
Browse files
README.md
CHANGED
|
@@ -8,6 +8,9 @@ tags:
|
|
| 8 |
- risk-assessment
|
| 9 |
- tabular-classification
|
| 10 |
- bank-marketing
|
|
|
|
|
|
|
|
|
|
| 11 |
license: apache-2.0
|
| 12 |
metrics:
|
| 13 |
- roc_auc
|
|
@@ -22,37 +25,55 @@ metrics:
|
|
| 22 |
| :--- | :--- |
|
| 23 |
| **Autor** | Izan Moya Romero |
|
| 24 |
| **Tipo de Modelo** | Clasificación Binaria Supervisada (Riesgo de Impago) |
|
| 25 |
-
| **Algoritmo** |
|
| 26 |
| **Dataset Original** | [Home Credit Default Risk](https://www.kaggle.com/c/home-credit-default-risk) |
|
| 27 |
| **Entorno** | Banca / Fintech / Análisis de Riesgos |
|
| 28 |
-
| **Input** | Datos tabulares (Ingresos, Edad, Historial, Ratios Financieros) |
|
| 29 |
| **Output** | Probabilidad de Default (0 - 1) |
|
| 30 |
-
| **Estado** |
|
| 31 |
|
| 32 |
## 📖 Descripción del Proyecto
|
| 33 |
-
Este modelo es
|
| 34 |
|
| 35 |
-
El objetivo es desarrollar una herramienta de soporte a la decisión para entidades bancarias que permita estimar la probabilidad de
|
| 36 |
|
| 37 |
## ⚙️ Metodología y Pipeline
|
| 38 |
-
El flujo de trabajo sigue los estándares de la industria
|
| 39 |
-
|
| 40 |
-
1. **Ingeniería de Datos:**
|
| 41 |
-
* Tratamiento de *Thin Files* (clientes con poco historial) mediante imputación semántica (Flag + Mediana).
|
| 42 |
-
* Corrección de anomalías de dominio (ej. errores en antigüedad laboral).
|
| 43 |
-
* Codificación híbrida: `LabelEncoding` para binarias y `One-Hot Encoding` para categóricas complejas.
|
| 44 |
-
2. **Feature Engineering:**
|
| 45 |
-
* Creación de ratios financieros clave (Ratio Deuda/Ingresos, Capacidad de Anualidad).
|
| 46 |
-
3. **Manejo de Desbalanceo:**
|
| 47 |
-
* Aplicación de técnicas de sobremuestreo sintético (**SMOTE**) para mejorar la detección de la clase minoritaria (Morosos).
|
| 48 |
-
|
| 49 |
-
## 📊 Métricas Preliminares
|
| 50 |
-
*Se actualizará tras el entrenamiento final.*
|
| 51 |
-
* **Target:** 1 (Impago) / 0 (Pago)
|
| 52 |
-
* **AUC-ROC Esperado:** > 0.75
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
|
|
|
|
|
|
| 56 |
|
| 57 |
-
|
| 58 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
- risk-assessment
|
| 9 |
- tabular-classification
|
| 10 |
- bank-marketing
|
| 11 |
+
- lightgbm
|
| 12 |
+
- explainable-ai
|
| 13 |
+
- shap
|
| 14 |
license: apache-2.0
|
| 15 |
metrics:
|
| 16 |
- roc_auc
|
|
|
|
| 25 |
| :--- | :--- |
|
| 26 |
| **Autor** | Izan Moya Romero |
|
| 27 |
| **Tipo de Modelo** | Clasificación Binaria Supervisada (Riesgo de Impago) |
|
| 28 |
+
| **Algoritmo Final** | LightGBM (Gradient Boosting) con Ponderación de Clases |
|
| 29 |
| **Dataset Original** | [Home Credit Default Risk](https://www.kaggle.com/c/home-credit-default-risk) |
|
| 30 |
| **Entorno** | Banca / Fintech / Análisis de Riesgos |
|
| 31 |
+
| **Input** | Datos tabulares (Ingresos, Edad, Historial, Ratios Financieros de Negocio) |
|
| 32 |
| **Output** | Probabilidad de Default (0 - 1) |
|
| 33 |
+
| **Estado** | ✅ Completado (Modelo Entrenado, Evaluado y Explicable) |
|
| 34 |
|
| 35 |
## 📖 Descripción del Proyecto
|
| 36 |
+
Este modelo es el resultado del Trabajo de Fin de Máster (TFM) en **Big Data e Inteligencia Artificial**.
|
| 37 |
|
| 38 |
+
El objetivo principal es desarrollar una herramienta de soporte a la decisión para entidades bancarias que permita estimar la probabilidad de impago (Default) de un préstamo. A diferencia de las soluciones de "caja negra" habituales en competiciones (basadas en *ensembling* masivo de múltiples tablas), este proyecto adopta un enfoque *Lean* y regulatorio: maximizar el poder predictivo utilizando una única tabla de datos enriquecida mediante lógica financiera, garantizando una **explicabilidad total (XAI)** compatible con las normativas bancarias europeas (Basilea III/IV).
|
| 39 |
|
| 40 |
## ⚙️ Metodología y Pipeline
|
| 41 |
+
El flujo de trabajo sigue los más estrictos estándares de la industria de riesgos:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
+
1. **Ingeniería de Datos y Limpieza:**
|
| 44 |
+
* Tratamiento de valores nulos (Missing Not At Random) mediante imputación semántica (Flagging + Mediana) y creación de la categoría explícita `Unknown` para variables categóricas, evitando sesgos.
|
| 45 |
+
* Eliminación de variables con alta multicolinealidad (correlación Pearson > 0.98).
|
| 46 |
+
* Codificación híbrida: `LabelEncoding` (binarias) y `One-Hot Encoding` (nominales).
|
| 47 |
|
| 48 |
+
2. **Feature Engineering (Lógica de Negocio):**
|
| 49 |
+
* **Ratios de Capacidad de Pago:** Creación de proxies financieros como *Debt-to-Income* (`PAYMENT_RATE`) y duraciones estimadas (`CREDIT_TERM`).
|
| 50 |
+
* **Estrés de Liquidez:** Proxy de *Loan-to-Value* evaluando la sobre-financiación solicitada frente al valor real del bien (`CREDIT_GOODS_DIFF`).
|
| 51 |
+
* **Consenso de Mercado:** Agregaciones estadísticas combinando las puntuaciones de los burós de crédito externos (`EXT_SOURCE`).
|
| 52 |
+
|
| 53 |
+
3. **Benchmark de Modelos y Estrategia de Validación:**
|
| 54 |
+
* Se implementó un *Split* estratificado (70/10/20) para evitar el *Data Leakage* y el coste computacional prohibitivo de un K-Fold en un dataset >300k registros.
|
| 55 |
+
* Se evaluaron múltiples familias de algoritmos: **Random Forest** (Bagging con SMOTE), **LinearSVC** (Geométrico), **MLPClassifier** (Redes Neuronales) y **LightGBM** (Boosting).
|
| 56 |
+
* **Selección:** El sobremuestreo sintético (SMOTE) fue superado por el balanceo de pesos interno (`is_unbalance=True`). El ganador absoluto fue LightGBM.
|
| 57 |
+
|
| 58 |
+
## 📊 Resultados y Métricas del Modelo Final (LightGBM)
|
| 59 |
+
El modelo logra un equilibrio óptimo entre capacidad predictiva general y sensibilidad para detectar clientes tóxicos.
|
| 60 |
+
|
| 61 |
+
* **ROC-AUC Score:** **0.756** *(Superando el 0.72 del baseline original)*
|
| 62 |
+
* **Recall (Clase 1 - Fraude):** **68%** *(Detecta a casi 7 de cada 10 malos pagadores)*
|
| 63 |
+
* **Accuracy Global:** 70%
|
| 64 |
+
|
| 65 |
+
*(Opcional: Reemplaza este texto por la imagen de tu matriz de confusión subida a tu repo)*
|
| 66 |
+
``
|
| 67 |
+
|
| 68 |
+
## 🧠 Explicabilidad del Modelo (XAI con SHAP)
|
| 69 |
+
Para que el modelo sea auditable por los analistas de riesgos, se ha integrado **SHAP (SHapley Additive exPlanations)**. El análisis confirma que el modelo ha aprendido lógicas de negocio coherentes:
|
| 70 |
+
|
| 71 |
+
1. **Reputación Externa (`EXT_SOURCE_MEAN`):** Es el factor más determinante. Una mala puntuación en los burós externos dispara el riesgo de forma drástica.
|
| 72 |
+
2. **Plazo del Crédito (`CREDIT_TERM`):** Préstamos estructurados a muy largo plazo acumulan mayor incertidumbre y, por ende, mayor riesgo asignado.
|
| 73 |
+
3. **Sobre-financiación (`CREDIT_GOODS_DIFF`):** El modelo penaliza severamente a los clientes que solicitan un crédito por un importe muy superior al valor del bien a adquirir, interpretándolo como una necesidad urgente y no declarada de liquidez.
|
| 74 |
+
|
| 75 |
+
*(Opcional: Reemplaza este texto por la imagen de tu gráfico SHAP summary plot)*
|
| 76 |
+
``
|
| 77 |
+
|
| 78 |
+
## ⚠️ Limitaciones y Descargo de Responsabilidad
|
| 79 |
+
Este modelo ha sido entrenado con datos históricos anonimizados (*Home Credit Default Risk*) con fines exclusivamente académicos y de demostración técnica. No debe integrarse en sistemas de toma de decisión de concesión de crédito real sin superar auditorías exhaustivas de sesgos (*Fairness*), calibración de probabilidades y cumplimiento normativo local.
|