Conjunto de datos financiero para la evaluación del riesgo crediticio (binario). Integra variables sociodemográficas y financieras procesadas numéricamente, manteniendo jerarquías en atributos ordinales (e.g., estado de cuenta, ahorros).
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.
| Clase | Precisión | Recall | F1-Score | Soporte |
|---|---|---|---|---|
| Clase 0 | 0.76 | 0.88 | 0.81 | 140 |
| Clase 1 | 0.55 | 0.35 | 0.43 | 60 |
| Accuracy | 0.72 | |||
| Macro Avg | 0.66 | 0.61 | 0.62 | 200 |
| Weighted Avg | 0.70 | 0.72 | 0.70 | 200 |
| Clase | Precisión | Recall | F1-Score | Soporte |
|---|---|---|---|---|
| Clase 0 | 0.83 | 0.80 | 0.81 | 140 |
| Clase 1 | 0.57 ⬆ +0.02 | 0.62 ⬆ +0.27 | 0.59 ⬆ +0.16 | 60 |
| Accuracy | 0.74 ⬆ +0.02 | |||
| Macro Avg | 0.70 ⬆ +0.04 | 0.71 ⬆ +0.10 | 0.70 ⬆ +0.08 | 200 |
| Weighted Avg | 0.75 ⬆ +0.05 | 0.74 ⬆ +0.02 | 0.75 ⬆ +0.05 | 200 |
El conjunto de datos de Crédito Alemán (German Credit Data) clasifica a personas descritas por un conjunto de atributos como buenos o malos riesgos crediticios. El dataset está disponible en dos formatos: el original con atributos categóricos/simbólicos (archivo german.data) y una versión numérica editada por la Universidad de Strathclyde (archivo german.data-numeric) para algoritmos que requieren atributos numéricos. Este dataset requiere el uso de una matriz de costos porque es peor clasificar a un cliente como bueno cuando es malo (costo 5) que clasificarlo como malo cuando es bueno (costo 1).
La evaluación de riesgos crediticios es un problema fundamental en la industria bancaria y financiera. Las instituciones financieras necesitan determinar si un solicitante de crédito es un buen o mal riesgo para minimizar pérdidas y maximizar ganancias. Este dataset fue utilizado en el proyecto StatLog para comparar diferentes algoritmos de aprendizaje automático en problemas de clasificación del mundo real.
El dataset requiere el uso de una matriz de costos para evaluar correctamente el rendimiento:
| Predicción: Bueno (1) | Predicción: Malo (2) | |
|---|---|---|
| Real: Bueno (1) | 0 (Correcto) | 1 (Falso negativo) |
| Real: Malo (2) | 5 (Falso positivo - más costoso) | 0 (Correcto) |
⚠️ Es 5 veces más costoso clasificar a un cliente malo como bueno (conceder un préstamo que no se pagará) que clasificar a un cliente bueno como malo (rechazar un préstamo que sí se pagaría).
El dataset contiene 1,000 instancias con 20 atributos (19 variables predictoras y 1 variable objetivo). Las características son de tipo categórico y entero. No presenta valores faltantes.
| Atributo | Tipo | Descripción | Categorías / Unidades |
|---|---|---|---|
| A. Información Financiera | |||
| Attribute1 | Categórica | Estado de la cuenta corriente | A11: < 0 DM, A12: 0-200 DM, A13: ≥ 200 DM, A14: sin cuenta |
| Attribute2 | Entero | Duración del crédito | meses |
| Attribute5 | Entero | Monto del crédito | DM |
| Attribute8 | Entero | Tasa de cuota (% del ingreso disponible) | % |
| Attribute16 | Entero | Número de créditos existentes en este banco | - |
| Attribute18 | Entero | Número de personas a cargo | - |
| B. Historial Crediticio | |||
| Attribute3 | Categórica | Historial crediticio | A30: pagado, A31: pagado en este banco, A32: créditos existentes pagados, A33: retrasos, A34: cuenta crítica |
| Attribute6 | Categórica | Cuenta de ahorros / bonos | A61: < 100 DM, A62: 100-500 DM, A63: 500-1000 DM, A64: ≥ 1000 DM, A65: desconocido |
| C. Datos Personales y Demográficos | |||
| Attribute7 | Categórica | Empleo actual desde | A71: desempleado, A72: < 1 año, A73: 1-4 años, A74: 4-7 años, A75: ≥ 7 años |
| Attribute9 | Categórica | Estado personal y sexo | A91: hombre divorciado/separado, A92: mujer divorciada/casada, A93: hombre soltero, A94: hombre casado/viudo, A95: mujer soltera |
| Attribute10 | Categórica | Otros deudores / garantes | A101: ninguno, A102: co-solicitante, A103: garante |
| Attribute11 | Entero | Residencia actual desde | años |
| Attribute12 | Categórica | Propiedad | A121: bienes raíces, A122: seguro de vida, A123: automóvil, A124: desconocido |
| Attribute13 | Entero | Edad | años |
| Attribute14 | Categórica | Otros planes de cuotas | A141: banco, A142: tiendas, A143: ninguno |
| Attribute15 | Categórica | Vivienda | A151: alquiler, A152: propia, A153: gratis |
| Attribute17 | Categórica | Ocupación | A171: desempleado/no calificado, A172: no calificado residente, A173: empleado calificado, A174: gerente/autónomo |
| Attribute19 | Binaria | Teléfono | A191: ninguno, A192: sí (registrado) |
| Attribute20 | Binaria | Trabajador extranjero | A201: sí, A202: no |
| D. Variable Objetivo | |||
| class | Binaria (Target) | Riesgo crediticio | 1 = Bueno (Good) 2 = Malo (Bad) |
El conjunto de datos contiene información demográfica (edad, sexo, estado civil, ocupación, nacionalidad) 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. 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 pueda comprometer la privacidad de los individuos representados en el dataset.
Este conjunto de datos es un clásico en la evaluación de riesgos crediticios y requiere consideraciones especiales debido a la matriz de costos. Se recomienda:
german.data: Atributos categóricos/simbólicos (original)german.data-numeric: Atributos numéricos (editado por Strathclyde University)La evaluación de riesgos crediticios es una de las aplicaciones más importantes del aprendizaje automático en el sector financiero. Este dataset es significativo porque:
La evaluación correcta del riesgo crediticio es fundamental para la estabilidad financiera de los bancos y la economía en general. Los modelos predictivos basados en este tipo de datos ayudan a las instituciones a minimizar pérdidas por préstamos impagos mientras maximizan el acceso al crédito para clientes que sí pagarán.
Statlog (German Credit Data) Dataset. UCI Machine Learning Repository. Prof. Dr. Hans Hofmann, Universität Hamburg. https://archive.ics.uci.edu/ml/datasets/Statlog+(German+Credit+Data)
\s+).📊 Resultado: Dataset de 1,000 clientes bancarios alemanes con 20 variables predictoras (demográficas, financieras, de historial crediticio y de empleo) y 1 variable objetivo binaria (risk_bad). Desbalance moderado (~70% buen crédito / ~30% mal crédito) — 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 de riesgo crediticio y scoring bancario, donde factores socioeconómicos, laborales y de historial financiero son determinantes.
🏦 Fuente: German Credit Risk Dataset (UCI Machine Learning Repository) - Datos de clientes bancarios alemanes para clasificación de riesgo crediticio.
📊 Variables ordinales: checking_status (estado de cuenta, 1-4), savings_status (ahorros, 0-4), employment (empleo, 0-4) — todas con jerarquía preservada.
📋 Variables nominales: 10 variables incluyendo credit_history (historial crediticio), purpose (propósito del préstamo), personal_status_sex (estado civil/género), property (propiedad), housing (vivienda), job (trabajo), entre otras.
📁 Leyenda disponible: Archivo leyenda_german_credit.txt con mapeo completo de variables ordinales, nominales y descripción de variables numéricas.
🎯 Variable objetivo: risk_bad (1 = Mal riesgo crediticio, 0 = Buen riesgo crediticio).
🧹 Limpieza aplicada: Carga con separador de espacios, transformación de target (1→0, 2→1), mapeo ordinal de 3 variables, Label Encoding de 10 variables nominales, estandarización de tipos a int.
| Variable | Descripción Financiera | Tipo | Rango / Categorías | Unidad | ¿Objetivo? |
|---|---|---|---|---|---|
checking_status |
Estado de la cuenta corriente (ordinal) | Categórico | 1: <0 DM, 2: 0-200 DM, 3: ≥200 DM, 4: Sin cuenta | N/A | No |
credit_history |
Historial crediticio (nominal) | Categórico | 0-4 (ver leyenda) | N/A | No |
purpose |
Propósito del crédito (nominal) | Categórico | 0-9 (ver leyenda) | N/A | No |
savings_status |
Estado de ahorros (ordinal) | Categórico | 0: Desconocido, 1: <100, 2: 100-500, 3: 500-1000, 4: ≥1000 | N/A | No |
personal_status_sex |
Sexo y estado civil (compuesto) | Categórico | 0-3 (ver leyenda) | N/A | No |
other_debtors |
Otros deudores (nominal) | Categórico | 0-2 (ver leyenda) | N/A | No |
property |
Tipo de propiedad (nominal) | Categórico | 0-3 (ver leyenda) | N/A | No |
other_installment_plans |
Otros planes de cuotas (nominal) | Categórico | 0-2 (ver leyenda) | N/A | No |
housing |
Tipo de vivienda (nominal) | Categórico | 0-2 (ver leyenda) | N/A | No |
job |
Tipo de empleo (ordinal) | Categórico | 0-3 (ver leyenda) | N/A | No |
duration |
Duración del crédito en meses | Numérico | 4 - 60 | meses | No |
credit_amount |
Monto del crédito | Numérico | 276 - 14,782 | DM | No |
employment |
Antigüedad laboral (años) | Numérico | 0 - 4 | años | No |
installment_rate |
Tasa de pago (% del ingreso disponible) | Numérico | 1 - 4 | % | No |
residence_since |
Tiempo en residencia actual | Numérico | 1 - 4 | años | No |
age |
Edad del solicitante | Numérico | 19 - 75 | años | No |
existing_credits |
Número de créditos existentes | Numérico | 1 - 4 | créditos | No |
num_dependents |
Número de personas a cargo | Numérico | 1 - 2 | personas | No |
telephone |
Teléfono registrado | Binario | 0: No, 1: Sí | N/A | No |
foreign_worker |
Trabajador extranjero | Binario | 0: Sí, 1: No | N/A | No |
risk_bad |
Riesgo de incumplimiento (objetivo) | Binario | 0: Bueno (Solvente), 1: Malo (Riesgo) | N/A | Sí |
Esta sección detalla los códigos y significados de las variables categóricas y binarias presentes en el conjunto de datos de Riesgo Crediticio Alemán (German Credit Data). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados de evaluación de crédito.
checking_status
Categórica (Ordinal)
| Código | Significado | Riesgo |
|---|---|---|
| 1 | < 0 DM (Saldo negativo) | ✗ Alto |
| 2 | 0 - 200 DM (Saldo bajo) | ⚠ Moderado |
| 3 | ≥ 200 DM (Saldo alto) | ✓ Bajo |
| 4 | Sin cuenta corriente | ✓ Bajo |
Factor clave: Saldo negativo en cuenta corriente es un fuerte predictor de riesgo crediticio.
credit_history
Categórica (Nominal)
| Código | Significado (Original) | Riesgo |
|---|---|---|
| 0 | A30 - Sin créditos previos | ✓ Bajo |
| 1 | A31 - Todos los créditos pagados | ✓ Bajo |
| 2 | A32 - Créditos actuales pagados puntualmente | ✓ Bajo |
| 3 | A33 - Pagos atrasados (retrasos) | ⚠ Moderado |
| 4 | A34 - Créditos críticos / Deudas pendientes | ✗ Alto |
Historial crediticio: El historial de pagos es el predictor más importante de riesgo crediticio.
purpose
Categórica (Nominal)
| Código | Significado (Original) |
|---|---|
| 0 | A40 - Automóvil nuevo |
| 1 | A41 - Automóvil usado |
| 2 | A410 - Otros (electrodomésticos, etc.) |
| 3 | A42 - Equipamiento / Mobiliario |
| 4 | A43 - Radio / Televisión |
| 5 | A44 - Electrodomésticos |
| 6 | A45 - Reparaciones |
| 7 | A46 - Educación / Formación |
| 8 | A48 - Vacaciones |
| 9 | A49 - Negocios / Inversión |
Interpretación: Créditos para negocios/inversión (9) suelen tener mejor comportamiento que para consumo.
savings_status
Categórica (Ordinal)
| Código | Significado | Riesgo |
|---|---|---|
| 0 | Desconocido / Sin ahorros | ⚠ Moderado |
| 1 | < 100 DM | ⚠ Moderado |
| 2 | 100 - 500 DM | ✓ Bajo |
| 3 | 500 - 1000 DM | ✓ Bajo |
| 4 | ≥ 1000 DM | ✓ Muy bajo |
Factor protector: Mayor nivel de ahorros indica menor riesgo de incumplimiento.
personal_status_sex
Categórica (Nominal)
| Código | Significado (Original) |
|---|---|
| 0 | A91 - Hombre soltero |
| 1 | A92 - Hombre casado/viudo/divorciado |
| 2 | A93 - Hombre divorciado/separado |
| 3 | A94 - Mujer |
Variable compuesta: Combina sexo y estado civil en una sola codificación.
other_debtors
Categórica (Nominal)
| Código | Significado (Original) |
|---|---|
| 0 | A101 - Sin otros deudores |
| 1 | A102 - Con deudor que avala |
| 2 | A103 - Cónyuge como deudor |
property
Categórica (Nominal)
| Código | Significado (Original) | Riesgo |
|---|---|---|
| 0 | A121 - Bienes raíces (casa/terreno) | ✓ Bajo |
| 1 | A122 - Seguro de ahorro / Contrato de pensión | ✓ Bajo |
| 2 | A123 - Automóvil / Otros bienes | ⚠ Moderado |
| 3 | A124 - Sin propiedad / Desconocido | ✗ Alto |
Garantía: La posesión de bienes raíces es un fuerte factor protector contra el riesgo crediticio.
other_installment_plans
Categórica (Nominal)
| Código | Significado (Original) |
|---|---|
| 0 | A141 - En el banco (institución financiera) |
| 1 | A142 - En tiendas (comercios) |
| 2 | A143 - Sin otros planes de cuotas |
housing
Categórica (Nominal)
| Código | Significado (Original) | Riesgo |
|---|---|---|
| 0 | A151 - Alquiler | ⚠ Moderado |
| 1 | A152 - Propia | ✓ Bajo |
| 2 | A153 - Vivienda gratuita (familiares) | ✓ Bajo |
Estabilidad: Vivienda propia indica mayor estabilidad financiera y menor riesgo.
job
Categórica (Ordinal)
| Código | Significado (Original) | Estabilidad |
|---|---|---|
| 0 | A171 - Desempleado / Sin empleo | ✗ Muy baja |
| 1 | A172 - Trabajador no calificado | ⚠ Baja |
| 2 | A173 - Trabajador calificado / Funcionario | ✓ Media |
| 3 | A174 - Directivo / Profesional | ✓ Alta |
Jerarquía ocupacional: Mayor nivel ocupacional se asocia con menor riesgo crediticio.
Formato común: 0 = No / Ausencia, 1 = Sí / Presencia
telephone
Teléfono registrado (0: No, 1: Sí)
foreign_worker
Trabajador extranjero (0: Sí, 1: No)
risk_bad
🎯 Variable Objetivo: Riesgo crediticio (0: Bueno, 1: Malo)
Nota: Todas las variables binarias están codificadas como 0 = No y 1 = Sí.
age < 26 → employment ≠ 4 (Jóvenes no pueden estar desempleados)employment == 0 → job ≠ 2 (Desempleado → no puede ser técnico)employment == 0 → job ≠ 3 (Desempleado → no puede ser ejecutivo)foreign_worker == 1 → job ≠ 0 (Trabajador extranjero → no puede ser desempleado)job == 3 → telephone = 1 (Ejecutivo → debe tener teléfono)housing == 1 → property ≠ 3 (Dueño de vivienda → no sin activos)property == 3 → housing ≠ 1 (Sin activos → no dueño de vivienda)housing == 2 → property ≠ 0 (Vivienda gratuita → no propiedad sin activos)credit_history == 0 → existing_credits = 1 (Historial perfecto → 1 crédito existente)credit_history == 4 → existing_credits ≥ 2 (Historial crítico → múltiples créditos)personal_status_sex == 2 (Soltero) → num_dependents = 1| Valor escala | 0.03 |
|---|---|
| Probabilidad Base | 0.1 |
| epochs | 500 |
|---|---|
| batch_size | 50 |
| generator_lr | 0.0002 |
| discriminator_lr | 0.0002 |
| pac | 10 |
| generator_dim | (256, 256) |
| discriminator_dim | (256, 256) |
| embedding_dim | 128 |
| l2scale | 1e-05 |
| epochs | 500 |
|---|---|
| batch_size | 50 |
| embedding_dim | 128 |
| compress_dims | (128, 128) |
| decompress_dims | (128, 128) |
| l2scale | 1e-5 |
| loss_factor | 2 |
| Random Seed | 42 |
|---|---|
| Python | 3.12.12 |
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.
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:
El mejor conjunto de cada etapa fue seleccionado mediante el índice TabDSFidelity.
| 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 | 840 | 0.718 | 0.679 | 0.690 | 6.856 | 0.048 | 0.884 | 0.010 | 0.979 | 56.932 | 0 | 840 | 0.504 | |
| Smote | 1 | 840 | 0.731 | 0.710 | 0.705 | 8.296 | 0.104 | 0.467 | 0.020 | 0.968 | 55.354 | 0.040 | 600 | 0.494 | 🏆 |
| Borderline SMOTE | 1 | 840 | 0.726 | 0.673 | 0.670 | 5.416 | 0.098 | 0.546 | 0.022 | 0.964 | 54.925 | 0.040 | 600 | 0.508 | |
| ADASYN | 1.017 | 847 | 0.727 | 0.698 | 0.695 | 7.272 | 0.102 | 0.509 | 0.023 | 0.963 | 56.195 | 0.041 | 600 | 0.476 | |
| SMOTE RSB* Adaptado | 1.167 | 780 | 0.738 | 0.695 | 0.690 | 8.244 | 0.078 | 0.888 | 0.010 | 0.985 | 53.408 | 0.035 | 600 | 0.489 | |
| SMOTE RSB* Adaptado + Reglas | 1.167 | 780 | 0.721 | 0.659 | 0.650 | 4.588 | 0.077 | 0.891 | 0.011 | 0.984 | 54.863 | 0.038 | 600 | 0.499 | |
| OOF PSO para Balanceo | 1 | 840 | 0.748 | 0.673 | 0.695 | 4.190 | 0.237 | 0.000 | 0.087 | 0.706 | 66.356 | 0.101 | 600 | 0.524 | |
| OOF PSO para Balanceo + Reglas | 1 | 840 | 0.703 | 0.679 | 0.695 | 2.897 | 0.186 | 0.011 | 0.076 | 0.726 | 64.615 | 0.113 | 442 | 0.539 |
| 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.069 | 9656 | 0.755 | 0.708 | 0.715 | 9.985 | 0.161 | 0.238 | 0.057 | 0.961 | 77.123 | 0.122 | 91 | 0.500 | 🏆 |
| SMOTE RSB* + Ruido Gaussiano + Reglas | 1.069 | 9656 | 0.709 | 0.668 | 0.670 | 6.927 | 0.178 | 0.179 | 0.058 | 0.957 | 213.537 | 0.127 | 70 | 0.498 | |
| CTGAN | 1.408 | 10000 | 0.651 | 0.637 | 0.660 | 4.063 | 0.250 | 0.073 | 0.042 | 0.915 | 436.697 | 0.179 | 0 | 0.459 | |
| CTGAN + Reglas del Dominio | 1.408 | 10000 | 0.644 | 0.638 | 0.665 | 4.022 | 0.259 | 0.073 | 0.048 | 0.918 | 582.216 | 0.177 | 0 | 0.516 | |
| TVAE | 1.050 | 10000 | 0.708 | 0.682 | 0.670 | 6.596 | 0.218 | 0.073 | 0.077 | 0.936 | 262.042 | 0.117 | 0 | 0.511 | |
| TVAE + Reglas del Dominio | 1.050 | 10000 | 0.695 | 0.669 | 0.655 | 5.517 | 0.243 | 0.043 | 0.079 | 0.935 | 427.446 | 0.117 | 0 | 0.507 | |
| OOF PSO para Aumento | 1 | 10000 | 0.673 | 0.630 | 0.615 | 0.545 | 0.472 | 0.007 | 0.941 | 0.689 | 143.115 | 0.295 | 0 | 0.511 | |
| OOF PSO para Aumento + Reglas | 1 | 10000 | 0.681 | 0.636 | 0.620 | 0.937 | 0.472 | 0.002 | 0.938 | 0.691 | 291.306 | 0.301 | 0 | 0.483 | |
| SMOTE RSB* Refinado | 1.005 | 9946 | 0.734 | 0.705 | 0.710 | 9.271 | 0.165 | 0.203 | 0.058 | 0.956 | 92.967 | 0.147 | 102 | 0.479 | |
| SMOTE RSB* Refinado + Reglas | 1.005 | 9946 | 0.707 | 0.677 | 0.680 | 7.129 | 0.182 | 0.142 | 0.059 | 0.954 | 253.583 | 0.149 | 80 | 0.471 |
| 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.064 | 10496 | 0.705 | 0.687 | 0.695 | 6.829 | 0.156 | 0.241 | 0.052 | 0.962 | 147.039 | 0.121 | 211 | 0.491 | |
| SMOTE RSB* + Ruido Gaussiano + Reglas | 1.064 | 10496 | 0.733 | 0.693 | 0.695 | 7.263 | 0.172 | 0.182 | 0.053 | 0.959 | 284.195 | 0.125 | 191 | 0.513 | |
| CTGAN | 1.370 | 10840 | 0.671 | 0.642 | 0.650 | 2.840 | 0.234 | 0.071 | 0.038 | 0.920 | 512.289 | 0.166 | 122 | 0.509 | |
| CTGAN + Reglas del Dominio | 1.370 | 10840 | 0.711 | 0.706 | 0.715 | 6.688 | 0.242 | 0.071 | 0.043 | 0.924 | 655.496 | 0.165 | 122 | 0.486 | |
| TVAE | 1.046 | 10840 | 0.708 | 0.687 | 0.675 | 5.529 | 0.206 | 0.096 | 0.056 | 0.940 | 346.503 | 0.110 | 122 | 0.494 | |
| TVAE + Reglas del Dominio | 1.046 | 10840 | 0.697 | 0.675 | 0.665 | 4.584 | 0.227 | 0.064 | 0.059 | 0.941 | 510.289 | 0.110 | 122 | 0.498 | |
| OOF PSO para Aumento | 1 | 10840 | 0.731 | 0.690 | 0.690 | 3.399 | 0.429 | 0.008 | 0.641 | 0.702 | 216.581 | 0.275 | 122 | 0.491 | |
| OOF PSO para Aumento + Reglas | 1 | 10840 | 0.731 | 0.695 | 0.690 | 3.509 | 0.429 | 0.002 | 0.638 | 0.704 | 372.481 | 0.279 | 122 | 0.505 | |
| SMOTE RSB* Refinado | 1.004 | 10786 | 0.759 | 0.732 | 0.735 | 9.812 | 0.159 | 0.208 | 0.054 | 0.958 | 180.331 | 0.138 | 202 | 0.500 | 🏆 |
| SMOTE RSB* Refinado + Reglas | 1.004 | 10786 | 0.742 | 0.720 | 0.725 | 8.617 | 0.175 | 0.147 | 0.054 | 0.956 | 331.840 | 0.140 | 191 | 0.506 |
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:
¿Qué mide? Capacidad del modelo para distinguir entre clases (Ej: mortalidad vs supervivencia).
Interpretación:
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.
¿Qué mide? Media armónica entre precisión y sensibilidad (recall).
Interpretación:
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).
¿Qué mide? Proporción de predicciones correctas sobre el total.
Interpretación:
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.
¿Qué mide? Calidad global del conjunto sintético comparado con el original.
Interpretació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).
¿Qué mide? Similitud entre las distribuciones de variables numéricas del conjunto sintético y el original.
Interpretación:
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.
¿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:
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.
¿Qué mide? Divergencia entre las distribuciones de variables categóricas del conjunto sintético y el original.
Interpretación:
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.
¿Qué mide? Preservación de las relaciones entre variables del conjunto original.
Interpretación:
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.
¿Qué mide? Tiempo total de ejecución del proceso de generación del conjunto.
Interpretación:
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.
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.
¿Qué mide? La distancia promedio entre cada registro sintético y su registro más cercano en el conjunto de datos original.
Interpretación:
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.
¿Qué mide? Número de registros sintéticos que son copias idénticas de registros en el conjunto de datos original.
Interpretació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.
¿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:
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.
Formatos incluidos: CSV.
Díaz Bastida, M., Pérez Vázquez, R. A., & Bello Pérez, R. (2026). High-Fidelity Synthetic Dataset for Credit Risk Assessment (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32946128.v1