CD_43 Original + Derivados

CD_43: Loan Prediction

Conjunto de datos financiero para la automatización de decisiones hipotecarias (Clasificación Binaria). Integra perfiles sociodemográficos e historial crediticio con datos previamente imputados.

📈 Eficacia Predictiva Detallada

Comparación detallada de las métricas de clasificación para los modelos entrenados con el conjunto de datos original y el conjunto sintético generado.

📊 Conjunto Original

Clase Precisión Recall F1-Score Soporte
Clase 0 0.35 0.34 0.35 38
Clase 1 0.71 0.72 0.71 85
Accuracy 0.60
Macro Avg 0.53 0.53 0.53 123
Weighted Avg 0.60 0.60 0.60 123
AUC-ROC: 0.53
F1-Score (weighted): 0.60
Accuracy: 0.60
➡️ Mejora
⬆ +0.30 AUC ⬆ +0.17 F1 ⬆ +0.17 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.65 0.58 0.61 38
Clase 1 0.82 ⬆ +0.11 0.86 ⬆ +0.14 0.84 ⬆ +0.13 85
Accuracy 0.77 ⬆ +0.17
Macro Avg 0.73 ⬆ +0.20 0.72 ⬆ +0.19 0.73 ⬆ +0.20 123
Weighted Avg 0.77 ⬆ +0.17 0.77 ⬆ +0.17 0.77 ⬆ +0.17 123
AUC-ROC: 0.83 ⬆ +0.30
F1-Score (weighted): 0.77 ⬆ +0.17
Accuracy: 0.77 ⬆ +0.17

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.71
Sintético: 0.82
⬆ +0.11
📈
Recall
Original: 0.72
Sintético: 0.86
⬆ +0.14
⚖️
F1-Score
Original: 0.71
Sintético: 0.84
⬆ +0.13

📚 Fuente Original del Conjunto

Loan Prediction (Home Loan Approval) Dataset

v1.0
Datos de solicitudes de préstamos hipotecarios
Disponible en repositorios públicos

📄 Resumen (Abstract)

El conjunto de datos de Predicción de Préstamos (Loan Prediction - Home Loan Approval) está diseñado para automatizar el proceso de elegibilidad de préstamos en tiempo real, basado en los detalles del cliente proporcionados al completar un formulario en línea. El objetivo es predecir si el préstamo será aprobado (Loan_Status = 'Y') o no. Este dataset es ampliamente utilizado en la comunidad de ciencia de datos para problemas de clasificación binaria, permitiendo a las instituciones financieras automatizar la toma de decisiones en la evaluación de solicitudes de crédito hipotecario.

🏦 Contexto del Dominio

Una compañía de seguros quiere automatizar el proceso de elegibilidad de préstamos (en tiempo real) basado en detalles del cliente proporcionados al completar un formulario online. El objetivo es predecir si el préstamo será aprobado o no, permitiendo:

  • Automatizar la evaluación de solicitudes de préstamos hipotecarios
  • Reducir tiempos de respuesta y mejorar la experiencia del cliente
  • Optimizar recursos humanos dedicados a la evaluación manual
  • Mantener consistencia en las decisiones de aprobación

📊 Análisis de Variables y Problemas Detectados

📋 Variables del Dataset
Variable Tipo Descripción Notas / Problemas
A. Identificador (A excluir del modelo)
Loan_ID ID Identificador único de la solicitud de préstamo ⚠️ Debe eliminarse. No aporta valor predictivo y generaría overfitting memorístico en modelos generativos.
B. Variables Categóricas
Gender Categórica Género del solicitante Male / Female. ⚠️ Valores perdidos
Married Categórica Estado civil del solicitante Yes / No
Education Categórica Nivel educativo Graduate / Not Graduate
Self_Employed Categórica Indica si el solicitante es autónomo Yes / No
Property_Area Categórica Área de la propiedad Urban / Semiurban / Rural
C. Variables Numéricas
ApplicantIncome Numérica Ingreso del solicitante principal Puede tener outliers
CoapplicantIncome Numérica Ingreso del co-solicitante Puede ser 0 si no hay co-solicitante
LoanAmount Numérica Monto del préstamo solicitado En miles. ⚠️ Valores perdidos
Loan_Amount_Term Numérica Plazo del préstamo En meses (ej. 360). ⚠️ Valores perdidos
Credit_History Binaria Historial crediticio del solicitante 1.0 = Cumplió, 0.0 = No cumplió. ⚠️ Valores perdidos. Semánticamente categórica binaria.
D. Variable Especial
Dependents Categórica / Ordinal Número de dependientes Valores: 0, 1, 2, 3+. Transformación: 3+ → 3 para tratarlo como numérica ordinal.
E. Variable Objetivo
Loan_Status Binaria (Target) Estado de aprobación del préstamo Y = Aprobado, N = Rechazado
Mapeo: N → 0, Y → 1
⚠️ Problemas Detectados y Estrategias de Limpieza
1. Valores Perdidos (Missing Values)

Variables afectadas:

  • Gender - Valores perdidos
  • LoanAmount - Valores perdidos
  • Loan_Amount_Term - Valores perdidos
  • Credit_History - Valores perdidos

Estrategia: Antes de generar datos sintéticos, debemos tener un dataset completo.

  • Variables Categóricas (Gender): Imputación por Moda
  • Variables Numéricas (LoanAmount, Loan_Amount_Term): Imputación por Mediana (robusto ante outliers)
  • Credit_History: Imputación por Moda (1.0 en la mayoría de los casos)
2. Variable Especial - Dependents

Contiene valores: 0, 1, 2, 3+

  • Transformación: Convertir 3+ → 3 para tratarla como numérica ordinal
3. Mapeo de la Variable Objetivo

El target Loan_Status ya es binario (Y/N).

  • Mapeo: N (Rechazado) → 0, Y (Aprobado) → 1
  • Nota: En riesgo crediticio a veces se prefiere predecir el "1" como el evento negativo (default), pero en este contexto de "Aprobación", lo natural es 1 = Aprobado.

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Aprobación de préstamo)
  • Dimensión: Multivariante
  • Tipo de características: Mixtas (Categóricas, Numéricas, Binarias)
  • Valores faltantes: Sí (Gender, LoanAmount, Loan_Amount_Term, Credit_History)
  • Área de aplicación: Finanzas, Banca, Evaluación de Crédito Hipotecario
  • Target: Loan_Status (Y = 1, N = 0)

⚖️ Ética y Privacidad

El conjunto de datos contiene información demográfica (género, estado civil, nivel educativo) y financiera (ingresos, monto del préstamo) que podría considerarse sensible. Los datos han sido anonimizados y no contienen información personal identificable como nombres, direcciones o números de identificación. La variable Loan_ID es un identificador sin relación con información personal. Restricción de confidencialidad: El uso de los datos está restringido a fines académicos y de investigación. La publicación de resultados debe limitarse a métricas de evaluación, resultados agregados y metodología del modelo, sin divulgación de información que permita la reidentificación de individuos.

📋 Notas de Uso

Este conjunto de datos es ideal para problemas de clasificación binaria en el sector financiero. Se recomienda:

  • Excluir Loan_ID del modelado por ser un identificador sin valor predictivo
  • Manejar valores perdidos:
    • Gender: Imputación por moda (categórica)
    • LoanAmount: Imputación por mediana (robusto ante outliers)
    • Loan_Amount_Term: Imputación por mediana
    • Credit_History: Imputación por moda (1.0 en la mayoría de los casos)
  • Transformar Dependents: 3+ → 3 para tratarlo como numérica ordinal
  • Codificar variables categóricas:
    • Binarias (Gender, Married, Education, Self_Employed): Label Encoding (Yes/No → 1/0, Male/Female → 1/0)
    • Property_Area: One-Hot Encoding (Urban, Semiurban, Rural)
  • Credit_History es semánticamente categórica binaria aunque se presente como numérica (1.0/0.0)
  • Estandarizar/normalizar variables numéricas (ApplicantIncome, CoapplicantIncome, LoanAmount, Loan_Amount_Term)
  • La variable objetivo Loan_Status debe mapearse como: Y → 1, N → 0
  • Utilizar validación cruzada estratificada para evaluar el rendimiento del modelo
  • El dataset puede tener desbalanceo en la variable objetivo (generalmente más aprobaciones que rechazos)

💡 Importancia en la Industria Financiera

La automatización de la elegibilidad de préstamos es una de las aplicaciones más importantes del aprendizaje automático en el sector financiero. Este dataset permite:

  • Reducir tiempos de procesamiento de solicitudes de préstamos hipotecarios
  • Minimizar errores humanos en la evaluación de elegibilidad
  • Mejorar la experiencia del cliente con respuestas rápidas y consistentes
  • Optimizar recursos al automatizar tareas repetitivas de evaluación
  • Mantener consistencia en las decisiones de aprobación, reduciendo sesgos

Este dataset es ampliamente utilizado en cursos de ciencia de datos y machine learning para enseñar conceptos de preprocesamiento de datos, clasificación binaria y evaluación de modelos en un contexto financiero realista.

📖 Cómo citar la fuente original

Loan Prediction Dataset. Kaggle. https://www.kaggle.com/datasets/altruistdelhite04/loan-prediction

📚 Referencias Adicionales

  • Kaggle - Loan Prediction Dataset. https://www.kaggle.com/datasets/altruistdelhite04/loan-prediction
  • Thomas, L. C., Edelman, D. B., & Crook, J. N. (2002). Credit Scoring and Its Applications. SIAM.
  • Hand, D. J., & Henley, W. E. (1997). Statistical classification methods in consumer credit scoring: a review. Journal of the Royal Statistical Society: Series A, 160(3), 523-541.

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Loan Prediction Dataset)

  • Limpieza inicial y eliminación de variables no predictivas:
    • Eliminación de la columna Loan_ID (identificador único de préstamo) por no aportar valor predictivo y para evitar sobreajuste.
    • Reducción de la dimensionalidad del dataset para mejorar la eficiencia del modelo.
  • Tratamiento de valores faltantes:
    • Variables categóricas: Imputación con moda (valor más frecuente) para Gender, Married, Self_Employed, Credit_History.
    • Variables numéricas: Imputación con mediana para LoanAmount, Loan_Amount_Term, ApplicantIncome, CoapplicantIncome — estrategia robusta frente a outliers financieros.
    • Dependents: Transformación de '3+' a '3' y conversión a entero, con imputación de nulos con la moda (0).
    • Garantía de integridad total del conjunto de datos para modelado directo.
  • Codificación de la variable objetivo:
    • Transformación de Loan_Status de texto a binaria: 'N'0 (No Aprobado - Rechazado), 'Y'1 (Aprobado).
    • Documentación del objetivo: predicción de aprobación de préstamos hipotecarios.
  • Codificación de variables categóricas:
    • Variables binarias: Gender (Male→1, Female→0), Married (Yes→1, No→0), Education (Graduate→1, Not Graduate→0), Self_Employed (Yes→1, No→0).
    • Variable nominal con orden lógico: Property_Area (Rural→0, Semiurban→1, Urban→2) preservando jerarquía de urbanización.
    • Dependents: Preservación como ordinal (0, 1, 2, 3) donde 3 representa "3 o más".
  • Estandarización y optimización de tipos de datos:
    • Conversión forzada de variables a tipo entero (int): Credit_History, Loan_Amount_Term, ApplicantIncome, CoapplicantIncome, LoanAmount, Dependents.
    • Eliminación de decimales espurios para optimizar memoria y mejorar legibilidad.
  • Generación de documentación completa:
    • Creación del archivo leyenda_loan_prediction.txt con semántica completa de la variable objetivo y todas las variables predictoras.
    • Documentación de variables binarias (Gender, Married, Education, Self_Employed) con sus mapeos 0/1.
    • Documentación de variable nominal (Property_Area) con su jerarquía (Rural→0, Semiurban→1, Urban→2).
    • Descripción de variables numéricas y sus unidades (ingresos, monto del préstamo en miles, plazo en meses, historial crediticio).
    • Contextualización del dataset: predicción de aprobación de préstamos hipotecarios.
    • Estadísticas finales: total de instancias y ratio de aprobación/rechazo.
  • Preservación de la estructura y calidad de datos:
    • Mantenimiento de las 614 instancias (solicitudes de préstamo) originales sin eliminación de filas.
    • Dataset final con 11 variables predictoras (mixtas: binarias, nominales y numéricas) y 1 variable objetivo binaria.
    • Guardado en formato CSV con separador punto y coma (;) para compatibilidad internacional.

📊 Resultado: Dataset de 614 solicitudes de préstamo con 11 variables predictoras (demográficas, financieras, laborales y de propiedad) y 1 variable objetivo binaria (Loan_Status). Desbalance moderado (~68% aprobados / ~32% rechazados) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de evaluación crediticia y aprobación de préstamos hipotecarios, donde factores como el historial crediticio, ingresos y propiedad son determinantes.

🏦 Fuente: Loan Prediction Dataset (Data Science Community) - Datos de solicitudes de préstamos hipotecarios.

👤 Variables demográficas: Gender (1=Masculino, 0=Femenino), Married (1=Casado, 0=Soltero), Dependents (0-3), Education (1=Graduado, 0=No graduado), Self_Employed (1=Autónomo, 0=No).

💰 Variables financieras: ApplicantIncome (ingresos del solicitante), CoapplicantIncome (ingresos del co-solicitante), LoanAmount (monto en miles), Loan_Amount_Term (plazo en meses), Credit_History (1=Historial cumplido, 0=Incumplimiento previo).

📁 Leyenda disponible: Archivo leyenda_loan_prediction.txt con mapeo completo de variables binarias, nominales (Property_Area) y descripción de variables numéricas.

🎯 Variable objetivo: Loan_Status (1 = Préstamo aprobado, 0 = Préstamo rechazado).

🧹 Limpieza aplicada: Eliminación de ID (Loan_ID), imputación con moda/mediana, transformación de Dependents ('3+'→3), codificación de categóricas, estandarización de tipos a int.

📋 Diccionario de Datos Detallado

Variable Descripción del Préstamo Tipo Rango / Categorías Unidad ¿Objetivo?
Property_Area Zona geográfica de la propiedad Categórico 0: Rural, 1: Semiurban, 2: Urban N/A No
Dependents Número de personas a cargo (dependientes) Numérico 0 - 3 personas No
ApplicantIncome Ingresos anuales del solicitante principal Numérico 416 - 81,000 moneda No
CoapplicantIncome Ingresos anuales del co-solicitante Numérico 0 - 41,667 moneda No
LoanAmount Monto solicitado del préstamo Numérico 9 - 700 miles No
Loan_Amount_Term Plazo de devolución del préstamo Numérico 36 - 480 meses No
Gender Género del solicitante Binario 0: Femenino, 1: Masculino N/A No
Married Estado civil del solicitante Binario 0: No casado, 1: Casado N/A No
Education Nivel educativo del solicitante Binario 0: No graduado, 1: Graduado N/A No
Self_Employed Indicador de trabajador autónomo Binario 0: No, 1: Sí N/A No
Credit_History Historial crediticio (cumplimiento previo) Binario 0: Sin historial/Incumplió, 1: Cumplió pagos N/A No
Loan_Status Estado de aprobación del préstamo (objetivo) Binario 0: Rechazado, 1: Aprobado N/A
12 Variables totales
5 Numéricas
1 Categóricas
6 Binarias
Objetivo: Aprobación (Loan_Status)
Datos ausentes: 0%

📈 Distribución de la variable objetivo en el conjunto original

📖 Leyenda de Variables Categóricas

Esta sección detalla los códigos y significados de las variables categóricas y binarias presentes en el conjunto de datos de Predicción de Préstamos (Loan Prediction). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados de aprobación crediticia.

Property_Area Categórica
Código Significado Interpretación
0Rural (Zona rural)Menor valor de propiedad
1Semiurban (Zona semi-urbana)Valor de propiedad medio
2Urban (Zona urbana)Mayor valor de propiedad
🏙️

Importancia: Propiedades en zonas urbanas suelen tener mayor valor, lo que puede influir en la aprobación del préstamo.

Loan_Status 🎯 Objetivo
Código Significado
0 Rechazado - Préstamo no aprobado (~31%)
1 Aprobado - Préstamo aprobado (~69%)
🎯

Variable Objetivo: El modelo debe predecir la aprobación del préstamo basado en el perfil del solicitante.

Variables Binarias Binario

Formato común: 0 = No / Ausencia, 1 = Sí / Presencia

Gender Género (0: Femenino, 1: Masculino)
Married Estado civil (0: No casado, 1: Casado)
Education Nivel educativo (0: No graduado, 1: Graduado)
Self_Employed Trabajador autónomo (0: No, 1: Sí)
Credit_History Historial crediticio (0: Sin historial/Incumplió, 1: Cumplió)
Loan_Status 🎯 Variable Objetivo: Aprobación (0: Rechazado, 1: Aprobado)
ℹ️

Nota: Todas las variables binarias están codificadas como 0 = No y 1 = Sí.

📊
Variables categóricas: 1
  • Property_Area (3 zonas: Rural, Semiurban, Urban)
🎯
Variables binarias: 6
  • Gender, Married, Education, Self_Employed, Credit_History
  • 🎯 Loan_Status (Objetivo - Aprobación)
📈
Variables numéricas: 5
  • Dependents (Personas a cargo)
  • ApplicantIncome (Ingresos del solicitante)
  • CoapplicantIncome (Ingresos del co-solicitante)
  • LoanAmount (Monto del préstamo)
  • Loan_Amount_Term (Plazo en meses)
⚠️
Recomendaciones de Aprobación:
  • Factor más importante: Credit_History = 1 (historial cumplido) es casi requisito para aprobación
  • Ingresos: Mayor ApplicantIncome y CoapplicantIncome aumentan probabilidad de aprobación
  • Monto del préstamo: LoanAmount alto puede reducir probabilidad de aprobación
  • Plazo: Plazos más largos (Loan_Amount_Term > 360) pueden ser más riesgosos
  • Dependientes: Mayor número de dependientes puede reducir capacidad de pago
  • Educación: Graduados (Education = 1) suelen tener mayor aprobación
  • Propiedad: Zonas urbanas (Property_Area = 2) tienen mayor valor de garantía

🔬 Metodología de Generación (Reproducibilidad Científica)

📐 Método Principal

SMOTE RSB* Adaptado

Versión: 2.0

DOI: 10.1007/s42979-026-04896-8

📏 Reglas de restricción

  • ApplicantIncome < 2500 → LoanAmount ≤ 150 (Ingresos bajos → préstamo limitado)
  • Education == 0 (Graduado) → ApplicantIncome < 10000
  • Loan_Status == 1 → Credit_History = 1 (Préstamo aprobado → historial crediticio positivo)
  • Loan_Amount_Term < 60 → Loan_Amount_Term = 360 (Plazo inválido → corregir a 360 meses)
  • Property_Area == 0 (Rural) → LoanAmount < 300
  • ApplicantIncome == 0 → CoapplicantIncome > 3000 (Sin ingreso → co-solicitante con ingreso alto)
  • Credit_History == 0 → Loan_Status = 0 (Sin historial crediticio → préstamo denegado)

⚙️ Hiperparámetros SMOTE RSB* Adaptado

Valor escala0.03
Probabilidad Base0.1

🔄 Hiperparámetros CTGAN

epochs500
batch_size50
generator_lr0.0002
discriminator_lr0.0002
pac10
generator_dim(128, 128)
discriminator_dim(128, 128)
embedding_dim128
l2scale1e-05

📊 Hiperparámetros TVAE

epochs 400
batch_size 50
embedding_dim 64
compress_dims (64, 64)
decompress_dims (64, 64)
l2scale 1e-5
loss_factor 2

🔐 Reproducibilidad

Random Seed42
Python3.12.12

Librerías utilizadas:

  • pandas: 2.3.3
  • numpy: 2.4.4
  • scikit-learn: 1.7.2
  • imbalanced-learn: 0.14.0
  • ctgan: 0.11.1
  • torch: 2.9.0
  • sdv: 1.28.0
  • scipy: 1.16.3
  • matplotlib: 3.10.9
📝

Para reproducir exactamente este conjunto de datos, ejecute el script de generación con la semilla aleatoria 42. Los resultados pueden variar ligeramente según la versión de las librerías.

📊 Conjuntos de Datos Derivados

El conjunto original ha sido sometido a un proceso de balanceo de clases y generación sintética para mejorar la representación de clases minoritarias. Nota: se ha empleado un conjunto de validación para evaluar el índice de fidelidad. Se han generado tres familias de conjuntos:

  • 📊 Balanceados: Conjuntos creados mediante técnicas de sobremuestreo
  • 🔮 Sintéticos Puros: Conjuntos generados completamente con modelos generativos
  • ✨ Aumentados: Combinación del conjunto original + datos sintéticos

El mejor conjunto de cada etapa fue seleccionado mediante el índice TabDSFidelity.

📊 Conjuntos Balanceados 8 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
Random Oversampling 1 506 0.707 0.748 0.756 8.581 0.093 0.932 0.013 0.978 50.886 0 506 0.551 🏆
Smote 1 506 0.710 0.726 0.732 6.384 0.189 0.929 0.026 0.959 50.246 0.010 369 0.500
Borderline SMOTE 1 506 0.716 0.717 0.724 6.114 0.188 0.912 0.025 0.960 50.287 0.009 369 0.504
ADASYN 1.045 495 0.712 0.719 0.724 6.151 0.181 0.945 0.023 0.967 48.714 0.008 369 0.498
SMOTE RSB* Adaptado 1.100 483 0.731 0.693 0.691 5.434 0.172 0.990 0.010 0.982 47.634 0.007 368 0.496
SMOTE RSB* Adaptado + Reglas 1.100 483 0.696 0.696 0.699 3.974 0.171 0.992 0.010 0.980 47.612 0.008 369 0.498
OOF PSO para Balanceo 1 506 0.722 0.739 0.756 5.375 0.235 0.061 0.089 0.741 56.237 0.038 368 0.479
OOF PSO para Balanceo + Reglas 1 506 0.693 0.715 0.732 2.189 0.231 0.001 0.081 0.716 56.539 0.047 362 0.485
Mejor seleccionado: Random Oversampling (TabDSFidelity: 8.581, AUC: 0.707, F1: 0.748, MIA: 0.551). Nota: Ratio <= 1.5 = Conjunto Balanceado.

🔮 Conjuntos Sintéticos Puros 10 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
SMOTE RSB* + Ruido Gaussiano 1.776 7065 0.681 0.665 0.691 7.024 0.365 0.509 0.002 0.980 64.108 0.016 14 0.527
SMOTE RSB* + Ruido Gaussiano + Reglas 1.776 7065 0.704 0.735 0.756 8.341 0.365 0.509 0.002 0.979 171.982 0.014 22 0.490 🏆
CTGAN 1.336 9996 0.585 0.543 0.528 2.902 0.333 0.022 0.034 0.940 204.312 0.047 0 0.496
CTGAN + Reglas del Dominio 1.336 9996 0.642 0.600 0.585 4.350 0.333 0.022 0.027 0.944 334.176 0.043 0 0.583
TVAE 1.100 10000 0.654 0.551 0.537 3.662 0.430 0.202 0.034 0.940 269.529 0.012 0 0.524
TVAE + Reglas del Dominio 1.100 10000 0.653 0.583 0.569 4.177 0.430 0.203 0.034 0.940 135.805 0.012 0 0.531
OOF PSO para Aumento 1 10000 0.776 0.766 0.797 5.667 0.621 0.000 0.267 0.682 174.272 0.141 0 0.428
OOF PSO para Aumento + Reglas 1 10000 0.814 0.766 0.797 6.139 0.589 0.000 0.267 0.691 303.584 0.137 0 0.462
SMOTE RSB* Refinado 1.266 7881 0.673 0.670 0.675 6.767 0.376 0.481 0.009 0.978 64.424 0.017 8 0.521
SMOTE RSB* Refinado + Reglas 1.266 7881 0.691 0.703 0.707 7.464 0.376 0.481 0.008 0.979 180.404 0.016 17 0.526
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio (TabDSFidelity: 8.341, AUC: 0.704, F1: 0.735, MIA: 0.490). Nota: Ratio <= 1.5 = Conjunto Balanceado.

✨ Conjuntos Aumentados 10 conjuntos

Algoritmo Ratio N° Ejemplos AUC-ROC F1 Accuracy TabDSFidelity Jensen-Shannon Kolmogorov-Smirnov Kullback-Leibler Correlación Tiempo Total (s) Dist. Promedio Copias Exactas Ataque MIA Mejor
SMOTE RSB* + Ruido Gaussiano 1.706 7571 0.648 0.685 0.724 7.853 0.348 0.511 0.003 0.981 117.988 0.014 176 0.537
SMOTE RSB* + Ruido Gaussiano + Reglas 1.706 7571 0.698 0.735 0.756 9.750 0.348 0.511 0.002 0.980 227.335 0.013 184 0.483 🏆
CTGAN 1.317 10502 0.599 0.576 0.561 2.914 0.317 0.030 0.032 0.942 270.189 0.045 105 0.531
CTGAN + Reglas del Dominio 1.317 10502 0.647 0.600 0.585 4.383 0.317 0.030 0.026 0.945 399.698 0.040 105 0.513
TVAE 1.095 10506 0.661 0.584 0.569 4.322 0.407 0.225 0.031 0.944 335.728 0.012 104 0.531
TVAE + Reglas del Dominio 1.095 10506 0.640 0.584 0.569 3.926 0.407 0.226 0.031 0.945 202.870 0.012 104 0.542
OOF PSO para Aumento 1 10506 0.657 0.721 0.740 4.763 0.577 0.000 0.241 0.695 239.208 0.135 104 0.523
OOF PSO para Aumento + Reglas 1 10506 0.687 0.728 0.748 5.617 0.552 0.000 0.241 0.704 367.732 0.132 104 0.508
SMOTE RSB* Refinado 1.248 8387 0.646 0.636 0.650 6.329 0.360 0.487 0.009 0.978 123.269 0.016 140 0.537
SMOTE RSB* Refinado + Reglas 1.248 8387 0.705 0.686 0.691 8.487 0.360 0.487 0.008 0.979 238.153 0.014 148 0.523
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio (TabDSFidelity: 9.750, AUC: 0.698, F1: 0.735, MIA: 0.483). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_43
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
Random Oversampling
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio
⭐ Mejor Aumentado
SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio
Conjunto Sintético Final
Seleccionado por calidad

📊 Guía de Métricas de Evaluación

Para interpretar correctamente los resultados de los conjuntos de datos generados, es fundamental comprender qué mide cada métrica y cómo se relacionan entre sí. A continuación, se detalla cada una de las métricas utilizadas en la evaluación:

🎯 Métricas de Rendimiento Predictivo

AUC-ROC (0.5 - 1.0)

¿Qué mide? Capacidad del modelo para distinguir entre clases (Ej: mortalidad vs supervivencia).

Interpretación:

  • 0.5: Sin capacidad predictiva (aleatorio)
  • 0.7-0.8: Aceptable
  • 0.8-0.9: Excelente
  • >0.9: Sobresaliente

Ejemplo: AUC-ROC = 0.82 significa que hay un 82% de probabilidad de que el modelo clasifique correctamente un paciente fallecido frente a uno superviviente.

F1-Score (0 - 1.0)

¿Qué mide? Media armónica entre precisión y sensibilidad (recall).

Interpretación:

  • 0.7-0.8: Buen equilibrio entre precisión y sensibilidad
  • 0.8-0.9: Muy buen equilibrio
  • >0.9: Excelente equilibrio

Ejemplo: F1 = 0.76 indica que el modelo mantiene un buen balance entre identificar correctamente a los pacientes que fallecen (sensibilidad) y no etiquetar erróneamente a los que sobreviven (precisión).

Accuracy (0 - 1.0)

¿Qué mide? Proporción de predicciones correctas sobre el total.

Interpretación:

  • 0.7-0.8: Buen rendimiento general
  • 0.8-0.9: Muy buen rendimiento
  • >0.9: Excelente rendimiento

Ejemplo: Accuracy = 0.75 significa que el 75% de las predicciones del modelo son correctas.

⚠️ Nota: En conjuntos desbalanceados, esta métrica puede ser engañosa. Es mejor usar F1-Score o AUC-ROC.

🔬 Índice de Fidelidad del Conjunto

TabDSFidelity (0 - 10+)

¿Qué mide? Calidad global del conjunto sintético comparado con el original.

Interpretación:

  • < 3.0: Baja fidelidad (poca similitud con el original)
  • 3.0 - 6.0: Fidelidad moderada
  • 6.0 - 8.0: Alta fidelidad
  • > 8.0: Muy alta fidelidad (excelente representación)

Ejemplo: TabDSFidelity = 8.08 indica que el conjunto sintético mantiene una alta similitud con el original, preservando las relaciones y distribuciones de los datos reales, además de maximizar su eficacia predictiva.

💡 Importante: Este es el índice para seleccionar el mejor conjunto de datos sintéticos. Para este caso, el peso empleado para las métricas "AUC-ROC", "F1-Score" y "Accuracy" fue (2) y para el resto de las métricas fue (1).

📊 Métricas de Similitud de Distribuciones

Jensen-Shannon (Promedio) (0 - 1.0)

¿Qué mide? Similitud entre las distribuciones de variables numéricas del conjunto sintético y el original.

Interpretación:

  • Cerca de 0: Distribuciones muy similares (ideal)
  • 0.1 - 0.3: Diferencias moderadas
  • > 0.3: Diferencias significativas

Ejemplo: JS = 0.118 indica que las distribuciones de las variables numéricas (edad, presión arterial, etc.) son bastante similares a las del conjunto original.

📌 Nota: Es el promedio de la divergencia de Jensen-Shannon calculada para todas las variables numéricas.

Kolmogorov-Smirnov (p-valor promedio) (0 - 1.0)

¿Qué mide? Probabilidad estadística de que las muestras numéricas del conjunto sintético provengan de la misma distribución continua que el original.

Interpretación:

  • Cerca de 1.0: Altísima probabilidad de que sean la misma distribución (ideal)
  • > 0.05: Similitud aceptable (no se rechaza que sean iguales)
  • < 0.05: Diferencias estadísticamente significativas

Ejemplo: KS p-valor = 0.753 indica que hay evidencia fuerte a favor de que las distribuciones acumulativas de la variable sintética y la original son equivalentes.

📌 Nota: Se reporta el promedio de los p-valores obtenidos mediante la prueba de Kolmogorov-Smirnov de dos muestras para las variables numéricas.

Kullback-Leibler (Promedio) (0 - ∞)

¿Qué mide? Divergencia entre las distribuciones de variables categóricas del conjunto sintético y el original.

Interpretación:

  • Cerca de 0: Distribuciones muy similares (ideal)
  • 0.01 - 0.1: Diferencias pequeñas
  • > 0.1: Diferencias notables

Ejemplo: KL = 0.014 indica que la distribución de las variables categóricas (género, mortalidad) es muy similar a la del conjunto original.

📌 Nota: Es el promedio de la divergencia de Kullback-Leibler para todas las variables categóricas. A diferencia de JS y KS, esta métrica se aplica solo a variables categóricas.

📊 Métricas de Estructura

Similitud de Correlación (0 - 1.0)

¿Qué mide? Preservación de las relaciones entre variables del conjunto original.

Interpretación:

  • Cerca de 1.0: Las relaciones entre variables se mantienen casi idénticas
  • > 0.9: Excelente preservación de relaciones
  • 0.7 - 0.9: Buena preservación
  • < 0.7: Pérdida significativa de relaciones

Ejemplo: Correlación = 0.976 significa que las relaciones entre variables (ej. edad y mortalidad) se mantienen en un 97.6% respecto al conjunto original.

⏱️ Métricas de Rendimiento Temporal

Tiempo Total (s) (segundos)

¿Qué mide? Tiempo total de ejecución del proceso de generación del conjunto.

Interpretación:

  • < 100s: Generación rápida
  • 100-300s: Tiempo moderado
  • > 300s: Proceso lento (puede ser aceptable para conjuntos grandes)

Ejemplo: Tiempo total = 69.45s significa que el proceso completo de generación del conjunto balanceado tomó aproximadamente 1.16 minutos.

⏱️ Nota: Incluye el tiempo de generación sintética + cálculo de métricas.

🔒 Métricas de Privacidad

Estas métricas evalúan el riesgo de exposición de información sensible y la capacidad de un atacante para inferir datos de los pacientes a partir del conjunto de datos sintéticos.

Distancia al Registro Más Cercano (≥ 0)

¿Qué mide? La distancia promedio entre cada registro sintético y su registro más cercano en el conjunto de datos original.

Interpretación:

  • Cerca de 0: Los datos sintéticos son muy similares a los originales → ⚠️ ALTO RIESGO de privacidad
  • 0.01 - 0.05: Similaridad moderada → Riesgo moderado
  • > 0.05: Buena separación de los datos originales → ✅ BAJO RIESGO de privacidad

Ejemplo: Distancia promedio = 0.015 en SMOTE indica que los registros sintéticos están relativamente cerca de los originales, lo que podría implicar un riesgo de privacidad moderado.

🔬

Metodología: Calculada utilizando la Distancia de Gower, la cual maneja internamente tipos de datos mixtos, normalizando las variables numéricas y penalizando diferencias categóricas para devolver un índice estandarizado entre 0 y 1.

💡

Recomendación: Valores < 0.01 deben ser evaluados con precaución. Idealmente, buscar valores > 0.02 para garantizar la privacidad.

Copias Exactas (≥ 0)

¿Qué mide? Número de registros sintéticos que son copias idénticas de registros en el conjunto de datos original.

Interpretación:

  • 0: Ninguna copia exacta → ✅ SEGURO
  • 1 - 10: Pocas copias → Riesgo bajo
  • 11 - 50: Copias moderadas → ⚠️ RIESGO MODERADO
  • > 50: Muchas copias → 🔴 ALTO RIESGO de reidentificación

Ejemplo: SMOTE RSB* Refinado genera 76 copias exactas de 8817 registros (0.86%), lo que representa un riesgo de privacidad que debe ser evaluado.

⚠️

Importante: La presencia de copias exactas es uno de los indicadores más críticos de fuga de datos. Idealmente, este valor debe ser 0.

Ataque de Inferencia de Membresía (MIA) (0 - 1.0)

¿Qué mide? Tasa de éxito (medida en AUC-ROC) de un atacante para determinar si un registro específico pertenece al conjunto de datos original.

Interpretación:

  • 0.5: Aleatorio (ideal) → ✅ PRIVACIDAD ÓPTIMA
  • 0.5 - 0.55: Riesgo bajo
  • 0.55 - 0.6: Riesgo moderado → ⚠️ PRIVACIDAD CUESTIONABLE
  • > 0.6: Riesgo alto → 🔴 PRIVACIDAD COMPROMETIDA

Ejemplo: MIA = 0.553 significa que el atacante tiene un éxito ligeramente superior al 50% aleatorio, lo que indica un riesgo de privacidad bajo/moderado.

🎯

Objetivo: Buscar valores lo más cercanos a 0.5. Valores > 0.6 indican que el conjunto sintético no protege adecuadamente la privacidad.

📝 Resumen Rápido para Selección

🏆
Para seleccionar el mejor conjunto:
  • Priorizar TabDSFidelity más alto
  • Buscar AUC-ROC y F1 altos
  • Valores de divergencia JS y KL cercanos a 0
  • P-valor de KS lo más cercano a 1.0 posible (>0.05)
  • Correlación > 0.9
⚖️
Balance entre calidad y tiempo:
  • Un TabDSFidelity > 8.0 indica excelente calidad
  • Tiempos de generación < 200s son aceptables
  • La Correlación > 0.95 asegura buena preservación de relaciones
🔒
Para garantizar la privacidad:
  • MIA lo más cercano a 0.5 (ideal)
  • Copias exactas = 0 (ideal) o lo más bajo posible
  • Distancia promedio > 0.02 para buena separación
  • Evaluar balance entre calidad (TabDSFidelity) y privacidad (MIA)

📥 Descargar conjuntos y código Python

Formatos incluidos: CSV.

📚 Cómo citar este conjunto

Díaz Bastida, M., Pérez Vázquez, R. A., & Bello Pérez, R. (2026). High-Fidelity Synthetic Dataset for Home Loan Approval Prediction (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32946197.v1