Aplicaciones de redes neuronales a datos tabulares
Introducción
El análisis del riesgo crediticio es esencial para que las instituciones financieras gestionen de manera efectiva su exposición al incumplimiento. Anticipar la probabilidad de que un individuo no cumpla con sus obligaciones financieras permite tomar decisiones más precisas en la concesión de créditos y diseñar estrategias de mitigación de riesgo. En este trabajo, se busca desarrollar un modelo predictivo basado en redes neuronales artificiales que estime la probabilidad de incumplimiento, utilizando como variable objetivo "loan_status" del Credit Risk Dataset disponible en Kaggle. Además de optimizar la arquitectura del modelo, se pretende representar sus resultados mediante una scorecard interpretable, que facilite la comprensión del riesgo asociado a distintos perfiles crediticios.
El proyecto también incluye un análisis exhaustivo de las variables que más influyen en el nivel de riesgo de una persona, aportando transparencia y valor explicativo al modelo. Como complemento, se desarrollará una aplicación web interactiva que permitirá a los usuarios conocer su scorecard personalizado y visualizar cómo su perfil se compara con el resto de la población. Este enfoque integral combina el uso de técnicas avanzadas de machine learning, análisis interpretativo y herramientas de visualización, con el objetivo de ofrecer una solución robusta y accesible para la evaluación del riesgo crediticio.
Descripción del problema
El crédito al consumo y los préstamos personales conllevan riesgos inherentes asociados a la probabilidad de que un cliente incurra en incumplimiento de sus obligaciones de pago. La predicción temprana de este riesgo es fundamental para que las entidades financieras puedan tomar decisiones informadas sobre la concesión de crédito, ajustar sus políticas de riesgo, y diseñar estrategias personalizadas de mitigación (Hand & Henley, 1997; Lessmann et al., 2015).
En este contexto, los avances recientes en técnicas de aprendizaje automático y, en particular, en redes neuronales artificiales (ANN), ofrecen nuevas oportunidades para mejorar la capacidad predictiva de los modelos tradicionales de riesgo de crédito. A través de arquitecturas profundas, estos modelos pueden capturar relaciones no lineales y complejas entre las características del cliente y su probabilidad de default (Lessmann et al., 2015).
El objetivo de este proyecto es múltiple:
Metodología
La primera etapa del proyecto consiste en el análisis descriptivo de los datos. Se empleará un dataset compuesto por registros históricos de préstamos, que incluirá variables demográficas, socioeconómicas y crediticias de los solicitantes disponible en (Credit Risk Analysis, 2021). La variable objetivo será loan_status, de la que se generará una nueva variable (loan_status_binary) que toma el valor de 0 para casos sin incumplimiento y 1 para casos con incumplimiento. Como variables predictoras se considerarán variables financieras, de comportamiento y demográficas, tales como los ingresos anuales, el saldo en tarjetas de crédito, el número de cuentas abiertas y el ratio de utilización del crédito, entre otras.
Durante el preprocesamiento, se imputarán los valores faltantes utilizando técnicas apropiadas para cada tipo de variable. Posteriormente, se aplicará la normalización o estandarización de las variables numéricas, con el fin de garantizar la homogeneidad de las escalas. Las variables categóricas se codificarán mediantela técnica One-Hot Encoding. Finalmente, el dataset se dividirá en tres subconjuntos: entrenamiento, validación y prueba, para garantizar una adecuada evaluación del modelo.
En la fase de modelado, se construyeron y evaluaron dos arquitecturas de redes neuronales artificiales (ANN) implementadas en PyTorch. El primer modelo, denominado CreditRiskNN, consistió en una red secuencial compuesta por una capa de entrada seguida de dos capas ocultas de 64 y 32 neuronas respectivamente, con activaciones ReLU y regularización mediante Dropout (0.3 y 0.2). La capa de salida empleó una función de activación Sigmoid para producir probabilidades de incumplimiento. Este modelo fue entrenado utilizando el optimizador Adam y evaluado con métricas estándar del campo de la predicción de riesgo crediticio.
El segundo modelo, denominado CreditRiskNNV2, fue diseñado con una arquitectura más profunda y robusta. Incluyó capas de 128, 64 y 32 neuronas, intercaladas con capas de Batch Normalization que permiten acelerar el entrenamiento y mejorar la estabilidad del modelo. Además, se aplicó una estrategia de Dropout progresivo (0.4, 0.3 y 0.2) para reforzar la regularización y prevenir el sobreajuste. Al igual que en el modelo anterior, la capa de salida utilizó una activación Sigmoid y el entrenamiento se realizó con el optimizador Adam. La evaluación de ambos modelos se llevó a cabo mediante métricas como AUC-ROC, Accuracy, F1-Score y matriz de confusión, permitiendo comparar su capacidad para distinguir entre clientes cumplidos e incumplidos.
Posteriormente, se desarrolló una scorecard que transforma las probabilidades de incumplimiento generadas por los modelos en un score interpretable, en un rango comprendido entre 300 y 850 puntos.
Finalmente, los resultados del proyecto fueron integrados en una aplicación web interactiva desarrollada con Streamlit. La aplicación permite a los usuarios ingresar sus datos personales y financieros, visualizar su score crediticio estimado y comparar su perfil frente a la población general. Esta herramienta fue desplegada en la nube, lo que facilita su accesibilidad y potencial aplicación en entornos reales.
Análisis descriptivo
En la Tabla 1 se presentan algunos de los datos contenidos en la base de datos que se utilizará para el desarrollo del modelo predictivo. Este conjunto de datos, obtenido del Credit Risk Dataset de Kaggle, proporciona información detallada sobre diversos atributos demográficos, financieros y crediticios de los individuos. La variable objetivo del análisis es "loan_status", que indica si un individuo ha incumplido o no con el pago de sus obligaciones financieras. Esta variable se utilizará como etiqueta durante el proceso de entrenamiento y validación del modelo de redes neuronales artificiales.
Run to view results
Descripción de variables del dataset
Preprocesamiento
Primero, se define un diccionario llamado status_map, que asigna valores numéricos a las distintas categorías de la variable loan_status. Las categorías que representan créditos pagados en su totalidad se codifican como 0 (cumplidos), mientras que aquellas que indican morosidad o incumplimiento se codifican como 1 (incumplidos). A partir de este mapeo, se crea una nueva columna llamada loan_status_binary que contiene la versión codificada de la variable objetivo.
Luego, se eliminan del dataset aquellas observaciones que no tienen un valor definido en loan_status_binary (es decir, registros que no fueron mapeados o que tienen valores faltantes en loan_status). Esto garantiza que el modelo solo se entrene con ejemplos claramente etiquetados, evitando la introducción de ruido o ambigüedad.
A continuación, se imprime un resumen inicial del dataset procesado:
Run to view results
Run to view results
En la Figura 1 se presenta la distribución de la variable objetivo:
Run to view results
En esta sección se realiza una limpieza de columnas del dataset con el fin de eliminar aquellas que aportan poco valor al modelo o que podrían introducir problemas como overfitting o fugas de información.
Run to view results
Run to view results
Luego, se preparan las variables categóricas para que el dataset sea adecuado para el entrenamiento de un modelo de machine learning. Primero, se identificaron las columnas categóricas y se seleccionaron solo aquellas conocidas por tener influencia en el riesgo crediticio y pocas categorías (para evitar alta dimensionalidad tras la codificación). Luego, se imputaron los valores faltantes de estas variables con su moda, garantizando que no haya valores nulos. Posteriormente, se eliminaron las variables categóricas no seleccionadas para reducir el ruido y simplificar el modelo. Finalmente, se aplicó One Hot Encoding a las variables seleccionadas, convirtiéndolas en variables binarias que los algoritmos de machine learning pueden procesar, resultando en un dataset completamente numérico listo para el entrenamiento.
Run to view results
Análisis de datos
Luego de ejecutar las reducciones anteriores parte del dataset se muestra en la Tabla 2.
Run to view results
Run to view results
Run to view results
Run to view results
De manera similar, en la Figura 4, donde se relaciona el ingreso anual, la vivienda del solicitante y el cumplimiento, se observa que tanto el promedio como los valores intercuartílicos de las distribuciones correspondientes a los clientes cumplidos son superiores a los de los clientes incumplidos. Además, se destaca que los ingresos más elevados se concentran en personas con viviendas bajo hipoteca.
Run to view results
También, en la Figura 5 se relacionó el propósito del crédito, el valor del préstamo y el estado de cumplimiento, donde se puede notar que los préstamos más altos corresponden en promedio a motivos relacionados con vivienda, consolidación de deudas y pequeños negocios. Adicionalmente, se puede notar que en general los clientes que solicitan créditos mayores son más propensos a incumplirlos.
Run to view results
Por otra parte se analizó qué motivos son los más frecuentes dentro de los deudores cumplidos e incumplidos, y se pudo notar que el motivo más frecuente en grenaral para solicitar un préstamo es la consolidación de deudas que se usa para unificar deudas existentes, y le sigue en menor medida deudas por adquisición de tarjetas de crédito.
Run to view results
En la Figura 7 se hizo un análisis demográfico de las solicitudes de préstamo, donde se encontró que el estado de California (CA) es el que significativamente más deudores tiene, le sigue el estado de Nueva York, Texas y Florida.
Run to view results
Por otra parte, se puede notar en la Figura 8 un análisis demográfico de incumplimiento, en el que se puede notar que el estado con mayor incumplimiento de deudas es Misisipi (MS), que aunque es uno de los estados con menos deudores, el porcentaje de deudores incumplidos es el más alto. Por otra parte, los estados con menor porcentaje de deudores incumplidos son Dakota del Norte (ND) y Idaho (ID).
Run to view results
También se analizaron los tipos de solicitud de crédito (individual o conjunta), y se puede notar de acuerdo a la Figura 9 que este dataset no tiene información para el tipo de solicitud en conjunto.
Run to view results
Por último, en la Figura 10 se presentan las distribuciones de todas las variables numéricas del dataset.
Run to view results
Creación del modelo
Luego, se preparan las variables predictoras y la variable objetivo para el entrenamiento de un modelo. Primero, se separa la variable objetivo (loan_status_binary), que indica el estado del préstamo (por ejemplo, pagado o incumplido), del resto de las variables predictoras. Luego, se normalizan las variables predictoras usando StandardScaler, lo cual garantiza que todas tengan media 0 y desviación estándar 1, mejorando así la estabilidad y eficiencia del entrenamiento del modelo. A continuación, se divide el dataset en un conjunto de entrenamiento (80 %) y otro de prueba (20 %) mediante train_test_split, estratificando según la variable objetivo para preservar su distribución en ambos conjuntos. Esto permite evaluar el rendimiento del modelo de manera representativa.
Run to view results
Run to view results
Run to view results
Por otra parte el segundo modelo CreditRiskNNV2 tiene una arquitectura compuesta por una red secuencial que incluye cuatro capas densas: una primera capa de 128 neuronas, seguida de capas de 64, 32 y finalmente una capa de salida con una única neurona. Cada una de las primeras tres capas densas utiliza funciones de activación ReLU, combinadas con capas de normalización por lotes (Batch Normalization) y técnicas de regularización mediante Dropout progresivo (con tasas de 0.4, 0.3 y 0.2, respectivamente), con el fin de mejorar la estabilidad del entrenamiento y reducir el riesgo de sobreajuste. La capa de salida emplea una activación Sigmoid para producir una probabilidad de incumplimiento en el rango [0, 1]. Este modelo busca capturar relaciones complejas y no lineales entre las características del cliente y su propensión al incumplimiento, proporcionando así una herramienta robusta para la evaluación del riesgo crediticio.
Run to view results
Modelos de baja complejidad:
Se evaluaron dos modelos de baja complejidad: Regresión Logística y Árboles de Decisión, como punto de comparación frente a un modelo más complejo como lo es un modelo basado en redes neuronales artificiales. Ambos modelos (LogisticRegression y DecisionTreeClassifier) fueron entrenados usando el mismo conjunto de datos que utilizó el modelo basado en redes neuronales, X_train, y_train para llegar a una comparación equitativa entre ellos.
Se utilizaron tres métricas fundamentales para dicha comparación, las cuales son:
Comparación de modelos
Se obtuvieron los siguientes resultados para cada modelo:
Run to view results
Run to view results
Run to view results
Análisis comparativo:
Analizando los tres modelos en conjunto, para este caso y lo mayoría de ellos se puede concluir que:
ROC-AUC:
Accuracy:
F1-Score:
Conclusiones:
Se tiene en cuenta que los valores de las métricas pueden cambiar según la iteración, estas conclusiones se dan para la mayoría de los casos.
Las redes neuronales superan a modelos clásicos como la regresión logística y los árboles de decisión en datasets grandes y con muchas variables debido a su capacidad para capturar relaciones complejas y no lineales entre las características. Mientras que la regresión logística asume relaciones lineales y los árboles de decisión tienden a sobreajustarse o volverse inestables con muchas dimensiones, las redes neuronales escalean mejor con el volumen de datos y pueden aprender representaciones jerárquicas de los datos (por ejemplo, combinaciones de atributos de forma automática). Además, a medida que aumenta la cantidad de características, las redes neuronales pueden aprovechar su arquitectura profunda para reducir la necesidad de ingeniería manual de variables, siendo más eficientes en la generalización cuando se ajustan correctamente.
“Deep learning algorithms perform well when the amount of data is large, and they are particularly powerful at automatically discovering useful features from raw data” Goodfellow, Bengio, & Courville (2016, p. 5)