CD_35 Original + Derivados

CD_35: Polish Companies Bankruptcy Prediction

Consolidado financiero (2000-2013) de manufactura polaca para la predicción binaria de quiebra (Bankrupt). Unifica 5 horizontes temporales en un dataset compuesto por 64 ratios financieros continuos (rentabilidad, liquidez, apalancamiento).

📈 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.95 1.00 0.97 190
Clase 1 0.00 0.00 0.00 10
Accuracy 0.95
Macro Avg 0.47 0.50 0.49 200
Weighted Avg 0.90 0.95 0.93 200
AUC-ROC: 0.55
F1-Score (weighted): 0.93
Accuracy: 0.95
➡️ Mejora
⬇ -0.02 AUC ⬇ -0.02 F1 ⬇ -0.04 Acc

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.96 0.94 0.95 190
Clase 1 0.15 ⬆ +0.15 0.20 ⬆ +0.20 0.17 ⬆ +0.17 10
Accuracy 0.91 ⬇ -0.04
Macro Avg 0.56 ⬆ +0.09 0.57 ⬆ +0.07 0.56 ⬆ +0.07 200
Weighted Avg 0.92 ⬆ +0.02 0.91 ⬇ -0.04 0.91 ⬇ -0.02 200
AUC-ROC: 0.53 ⬇ -0.02
F1-Score (weighted): 0.91 ⬇ -0.02
Accuracy: 0.91 ⬇ -0.04

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.00
Sintético: 0.15
⬆ +0.15
📈
Recall
Original: 0.00
Sintético: 0.20
⬆ +0.20
⚖️
F1-Score
Original: 0.00
Sintético: 0.17
⬆ +0.17

📚 Fuente Original del Conjunto

Polish Companies Bankruptcy Prediction Dataset

v1.0
Ziȩba, M., Tomczak, S., & Tomczak, J. M.
Publicado: 2016

📄 Resumen (Abstract)

El conjunto de datos de Predicción de Quiebras de Empresas Polacas contiene información financiera de empresas polacas recopilada de Emerging Markets Information Service (EMIS), una base de datos que contiene información sobre mercados emergentes en todo el mundo. Las empresas en quiebra fueron analizadas en el período 2000-2012, mientras que las empresas aún en funcionamiento fueron evaluadas desde 2007 hasta 2013. Basándose en los datos recopilados, se distinguieron cinco casos de clasificación que dependen del período de pronóstico (1 a 5 años antes de la quiebra). El objetivo es predecir la quiebra de empresas utilizando 64 ratios financieros como variables predictoras.

🔬 Contexto y Motivación

La predicción de quiebras es un problema crítico en la gestión financiera y la evaluación de riesgos. La capacidad de predecir la quiebra de una empresa con anticipación permite a:

  • Inversores tomar decisiones informadas y evitar pérdidas
  • Bancos e instituciones financieras evaluar el riesgo crediticio
  • Gobiernos y reguladores monitorear la estabilidad del sistema financiero
  • Auditores y consultores identificar empresas en dificultades

Este dataset es particularmente valioso porque cubre múltiples horizontes de predicción (1 a 5 años), permitiendo evaluar la capacidad predictiva de los modelos en diferentes plazos. El estudio de Ziȩba et al. (2016) propuso árboles potenciados con generación de características sintéticas para mejorar la precisión de la predicción.

📊 Estructura del Dataset

📋 Cinco Casos de Clasificación por Período de Pronóstico
Caso Año de Datos Período de Pronóstico Instancias Quiebras No Quiebras
1er Año Año 1 5 años 7,027 271 (3.86%) 6,756 (96.14%)
2do Año Año 2 4 años 10,173 400 (3.93%) 9,773 (96.07%)
3er Año Año 3 3 años 10,503 495 (4.71%) 10,008 (95.29%)
4to Año Año 4 2 años 9,792 515 (5.26%) 9,277 (94.74%)
5to Año Año 5 1 año 5,910 410 (6.94%) 5,500 (93.06%)

Nota: El conjunto de datos más utilizado es el 3er Año con 10,503 instancias y 495 quiebras (4.71%).

📊 Descripción de Datos

El dataset contiene 65 atributos (64 variables predictoras y 1 variable objetivo). Las características son en su mayoría de tipo real (continuo) y representan ratios financieras calculadas a partir de los estados financieros de las empresas. El conjunto presenta valores faltantes en varias variables.

📋 Variables del Dataset

Las variables A1 a A64 representan ratios financieras (ver lista completa abajo). La variable year indica el año del estado financiero y class es la variable objetivo.

Variable Tipo Descripción (Ratio Financiero) Valores Faltantes
year Entero Año del estado financiero No
Ratios Financieros (A1 - A64)
A1 Continuo net profit / total assets No
A2 Continuo total liabilities / total assets No
A3 Continuo working capital / total assets No
A4 Continuo current assets / short-term liabilities
A5 Continuo [(cash + short-term securities + receivables - short-term liabilities) / (operating expenses - depreciation)] * 365
A6 Continuo retained earnings / total assets No
A7 Continuo EBIT / total assets No
A8 Continuo book value of equity / total liabilities
A9 Continuo sales / total assets No
A10 Continuo equity / total assets No
A11 Continuo (gross profit + extraordinary items + financial expenses) / total assets No
A12 Continuo gross profit / short-term liabilities
A13 Continuo (gross profit + depreciation) / sales No
A14 Continuo (gross profit + interest) / total assets No
A15 Continuo (total liabilities * 365) / (gross profit + depreciation) No
A16 Continuo (gross profit + depreciation) / total liabilities
A17 Continuo total assets / total liabilities
A18 Continuo gross profit / total assets No
A19 Continuo gross profit / sales No
A20 Continuo (inventory * 365) / sales No
A21 Continuo sales (n) / sales (n-1)
A22 Continuo profit on operating activities / total assets No
A23 Continuo net profit / sales No
A24 Continuo gross profit (in 3 years) / total assets
A25 Continuo (equity - share capital) / total assets No
A26 Continuo (net profit + depreciation) / total liabilities
A27 Continuo profit on operating activities / financial expenses
A28 Continuo working capital / fixed assets
A29 Continuo logarithm of total assets No
A30 Continuo (total liabilities - cash) / sales No
A31 Continuo (gross profit + interest) / sales No
A32 Continuo (current liabilities * 365) / cost of products sold
A33 Continuo operating expenses / short-term liabilities
A34 Continuo operating expenses / total liabilities
A35 Continuo profit on sales / total assets No
A36 Continuo total sales / total assets No
A37 Continuo (current assets - inventories) / long-term liabilities
A38 Continuo constant capital / total assets No
A39 Continuo profit on sales / sales No
A40 Continuo (current assets - inventory - receivables) / short-term liabilities
A41 Continuo total liabilities / ((profit on operating activities + depreciation) * (12/365))
A42 Continuo profit on operating activities / sales No
A43 Continuo rotation receivables + inventory turnover in days No
A44 Continuo (receivables * 365) / sales
A45 Continuo net profit / inventory
A46 Continuo (current assets - inventory) / short-term liabilities
A47 Continuo (inventory * 365) / cost of products sold
A48 Continuo EBITDA (profit on operating activities - depreciation) / total assets No
A49 Continuo EBITDA (profit on operating activities - depreciation) / sales No
A50 Continuo current assets / total liabilities
A51 Continuo short-term liabilities / total assets No
A52 Continuo (short-term liabilities * 365) / cost of products sold
A53 Continuo equity / fixed assets
A54 Continuo constant capital / fixed assets
A55 Entero working capital No
A56 Continuo (sales - cost of products sold) / sales No
A57 Continuo (current assets - inventory - short-term liabilities) / (sales - gross profit - depreciation) No
A58 Continuo total costs / total sales No
A59 Entero long-term liabilities / equity No
A60 Continuo sales / inventory
A61 Continuo sales / receivables
A62 Continuo (short-term liabilities * 365) / sales No
A63 Continuo sales / short-term liabilities
A64 Continuo sales / fixed assets
F. Variable Objetivo
class Entero (Target) Indica si la empresa quebró en el período de pronóstico 0 = No quiebra, 1 = Quiebra

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Quiebra vs. No quiebra)
  • Dimensión: Multivariante (65 variables)
  • Tipo de características: Reales (principalmente ratios financieros)
  • Valores faltantes: Sí (presentes en muchas variables)
  • Área de aplicación: Finanzas, Gestión de Riesgos, Contabilidad
  • Período de datos: 2000-2012 (quiebras) / 2007-2013 (activas)
  • Fuente: Emerging Markets Information Service (EMIS)
  • País: Polonia
  • Desbalanceo: Las quiebras representan entre 3.86% y 6.94% de los casos

📖 Publicación Introductoria

El artículo fundamental que describe la aplicación de árboles potenciados con generación de características sintéticas para la predicción de quiebras es:

Ziȩba, M., Tomczak, S., & Tomczak, J. M. (2016). Ensemble boosted trees with synthetic features generation in application to bankruptcy prediction. Expert Systems with Applications, 58, 93-101. https://doi.org/10.1016/j.eswa.2016.02.036

⚖️ Ética y Privacidad

El conjunto de datos ha sido anonimizado para proteger la privacidad de las empresas. Los nombres de las empresas y otros identificadores no están incluidos en el dataset. Restricción de confidencialidad: En cumplimiento de los protocolos de privacidad, 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 identificación de empresas específicas.

📋 Notas de Uso

Este conjunto de datos presenta desafíos significativos debido a la alta dimensionalidad (65 variables), la presencia de valores faltantes y el desbalanceo de clases. Se recomienda:

  • Seleccionar uno de los 5 casos de clasificación según el horizonte de predicción deseado (1-5 años)
  • Manejar adecuadamente los valores faltantes mediante imputación (media, mediana, KNN, MICE) o eliminación de variables con alta proporción de faltantes
  • Las variables A1 a A64 representan ratios financieras de diferente naturaleza (rentabilidad, liquidez, solvencia, etc.)
  • Considerar técnicas de selección de características para reducir la dimensionalidad debido a la alta cantidad de variables
  • La variable year puede utilizarse para análisis temporal o excluirse según el enfoque
  • La variable objetivo class está codificada como 0 = No quiebra, 1 = Quiebra
  • Utilizar validación cruzada estratificada debido al desbalanceo de clases (quiebras entre 3.86% y 6.94%)
  • Considerar técnicas de balanceo de clases (SMOTE, submuestreo, sobremuestreo) y cost-sensitive learning
  • El dataset es adecuado para métodos de ensemble (Random Forest, Gradient Boosting, XGBoost) y redes neuronales
  • El estudio original demostró que los árboles potenciados con características sintéticas superan a otros métodos

💡 Importancia en Predicción de Quiebras

La predicción de quiebras empresariales es un área fundamental de la investigación financiera con importantes implicaciones prácticas:

  • El modelo de Altman Z-Score (1968) fue uno de los primeros en utilizar ratios financieros para predecir quiebras
  • La quiebra de una empresa tiene impactos significativos en empleados, proveedores, clientes y la economía en general
  • La detección temprana permite tomar medidas correctivas (reestructuración, inyección de capital, venta de activos)
  • Los modelos de aprendizaje automático superan a los métodos estadísticos tradicionales en precisión predictiva
  • Este dataset permite investigar el efecto del horizonte de predicción (1-5 años) en la precisión de los modelos

El estudio de Ziȩba et al. (2016) demostró que los métodos de ensemble con generación de características sintéticas logran una alta precisión en la predicción de quiebras, incluso en presencia de datos desbalanceados y valores faltantes.

📖 Cómo citar la fuente original

Ziȩba, M., Tomczak, S., & Tomczak, J. M. (2016). Ensemble boosted trees with synthetic features generation in application to bankruptcy prediction. Expert Systems with Applications, 58, 93-101. https://doi.org/10.1016/j.eswa.2016.02.036

📚 Referencias Adicionales

  • Ziȩba, M., Tomczak, S., & Tomczak, J. M. (2016). Ensemble boosted trees with synthetic features generation in application to bankruptcy prediction. Expert Systems with Applications, 58, 93-101. https://doi.org/10.1016/j.eswa.2016.02.036
  • UCI Machine Learning Repository - Polish Companies Bankruptcy Data. https://archive.ics.uci.edu/ml/datasets/Polish+companies+bankruptcy+data
  • Altman, E. I. (1968). Financial ratios, discriminant analysis and the prediction of corporate bankruptcy. Journal of Finance, 23(4), 589-609.
  • Emerging Markets Information Service (EMIS). http://www.securities.com
  • Beaver, W. H. (1966). Financial ratios as predictors of failure. Journal of Accounting Research, 4, 71-111.

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Polish Companies Bankruptcy)

  • Fusión de múltiples archivos ARFF:
    • Integración de 5 archivos ARFF (1year.arff a 5year.arff) correspondientes a diferentes horizontes de predicción de bancarrota.
    • Adición de la variable Forecasting_Year (1 a 5) para identificar el origen de cada registro y el horizonte temporal de pronóstico.
    • Uso de scipy.io.arff para la carga correcta del formato ARFF y decodificación de tipos de datos.
  • Limpieza y estandarización de nombres de columnas:
    • Renombrado de variables originales Attr1 a Attr64 a X01 a X64 para mayor claridad y consistencia.
    • Renombrado de la variable objetivo 'class' a 'Bankrupt' para mejorar la legibilidad semántica.
    • Preservación de todas las 64 variables financieras como números flotantes.
  • Decodificación y transformación de la variable objetivo: < class="transformacion-lista">
  • Conversión de la variable Bankrupt de formato bytes (b'0', b'1') a entero binario: 0 = No Bancarrota (Solvente), 1 = Bancarrota.
  • Mapeo robusto para manejar diferentes formatos de codificación presentes en los archivos ARFF.
  • Imputación de valores perdidos:
    • Detección y tratamiento de valores faltantes en las 64 variables financieras.
    • Imputación con mediana para cada variable financiera — estrategia robusta frente a outliers en datos financieros.
    • Preservación de la integridad de la variable objetivo y Forecasting_Year sin imputación.
  • Generación de documentación y leyenda:
    • Creación del archivo leyenda_polish_bankruptcy.txt con semántica completa de la variable objetivo, variable de contexto y descripción de ratios financieros.
    • Documentación de la variable Forecasting_Year (1 = datos del 1er año, pronóstico a 5 años; 5 = datos del 5to año, pronóstico a 1 año).
    • Descripción de las 64 variables financieras (ratios) basadas en la documentación original, incluyendo ejemplos como X01 = net profit / total assets, X02 = total liabilities / total assets, etc.
    • Nota sobre la imputación con mediana aplicada a valores perdidos.
  • Preservación de la estructura y calidad de datos:
    • Mantenimiento de las instancias fusionadas de los 5 periodos de predicción.
    • Dataset final con 64 variables predictoras (ratios financieros), 1 variable de contexto (Forecasting_Year) y 1 variable objetivo binaria (Bankrupt).
    • Guardado en formato CSV con separador punto y coma (;) para compatibilidad internacional.
  • 📊 Resultado: Dataset fusionado de empresas polacas con 64 variables predictoras (ratios financieros), 1 variable de contexto temporal (Forecasting_Year) y 1 variable objetivo binaria (Bankrupt). Desbalance extremo (~95% solventes / ~5% en bancarrota) — escenario crítico para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de predicción de quiebra financiera, donde la detección temprana de empresas en riesgo es fundamental y el análisis de ratios financieros es el pilar del diagnóstico.

    🏢 Fuente: Polish Companies Bankruptcy Dataset (UCI Machine Learning Repository) - Datos financieros de empresas polacas para predicción de bancarrota.

    📊 Variables financieras: 64 ratios financieros (X01 a X64) que incluyen métricas de rentabilidad, liquidez, endeudamiento, eficiencia y solvencia.

    ⏱️ Variable de contexto: Forecasting_Year (1 a 5) indica el horizonte de predicción: 1 = pronóstico a 5 años, 5 = pronóstico a 1 año.

    📁 Leyenda disponible: Archivo leyenda_polish_bankruptcy.txt con descripción de la variable objetivo, variable de contexto, y lista completa de ratios financieros.

    🎯 Variable objetivo: Bankrupt (1 = Empresa en bancarrota, 0 = Empresa solvente).

    🧹 Limpieza aplicada: Fusión de 5 archivos ARFF, renombrado de Attr1-64 a X01-64, decodificación de target, imputación con mediana de valores perdidos.

    📋 Diccionario de Datos Detallado

    Variable Descripción Financiera Tipo Rango / Categorías Unidad ¿Objetivo?
    Forecasting_Year Horizonte temporal del pronóstico (años) Categórico 1: 5 años, 2: 4 años, 3: 3 años, 4: 2 años, 5: 1 año N/A No
    X01 Beneficio neto / Activos totales Numérico -61.602 - 1.218 N/A No
    X02 Pasivos totales / Activos totales Numérico 0 - 441.5 N/A No
    X03 Capital de trabajo / Activos totales Numérico -440.5 - 1.385 N/A No
    X04 Activos corrientes / Pasivos a corto plazo (Current Ratio) Numérico 0.002 - 127.41 N/A No
    X05 [(Efectivo + valores CP + cobrar - pasivos CP) / (gastos op. - dep.)] * 365 Numérico -163,090 - 48,305 días No
    X06 Ganancias retenidas / Activos totales Numérico -397.89 - 35.551 N/A No
    X07 EBIT / Activos totales Numérico -61.602 - 1.377 N/A No
    X08 Valor contable del patrimonio / Pasivos totales Numérico -0.998 - 1,452.2 N/A No
    X09 Ventas / Activos totales (Rotación de activos) Numérico 0 - 109.5 N/A No
    X10 Patrimonio (Equity) / Activos totales Numérico -440.55 - 74.434 N/A No
    X11 (Beneficio bruto + partidas extraord. + gastos fin.) / Activos totales Numérico -0.996 - 1.377 N/A No
    X12 Beneficio bruto / Pasivos a corto plazo Numérico -78.1 - 331.46 N/A No
    X13 (Beneficio bruto + depreciación) / Ventas Numérico -668.15 - 2.703 N/A No
    X14 (Beneficio bruto + intereses) / Activos totales Numérico -61.602 - 1.377 N/A No
    X15 (Pasivos totales * 365) / (Beneficio bruto + depreciación) Numérico -301,630 - 1,331,700 días No
    X16 (Beneficio bruto + depreciación) / Pasivos totales Numérico -38.286 - 405.33 N/A No
    X17 Activos totales / Pasivos totales Numérico 0.002 - 1,529.9 N/A No
    X18 Beneficio bruto / Activos totales Numérico -61.602 - 1.377 N/A No
    X19 Beneficio bruto / Ventas Numérico -668.5 - 2.377 N/A No
    X20 (Inventario * 365) / Ventas Numérico 0 - 1,062.5 días No
    X21 Ventas (n) / Ventas (n-1) [Crecimiento de ventas] Numérico 0 - 6,964.2 N/A No
    X22 Beneficio de actividades operativas / Activos totales Numérico -1.383 - 1.377 N/A No
    X23 Beneficio neto / Ventas Numérico -668.5 - 2.272 N/A No
    X24 Beneficio bruto (3 años) / Activos totales Numérico -61.602 - 4.458 N/A No
    X25 (Patrimonio - Capital social) / Activos totales Numérico -459.56 - 48.669 N/A No
    X26 (Beneficio neto + depreciación) / Pasivos totales Numérico -38.286 - 612.88 N/A No
    X27 Beneficio de actividades operativas / Gastos financieros Numérico -157,160 - 57,716 N/A No
    X28 Capital de trabajo / Activos fijos Numérico -121.77 - 2,249.8 N/A No
    X29 Logaritmo de Activos Totales (Tamaño de la empresa) Numérico 0.976 - 9.698 N/A No
    X30 (Pasivos totales - Efectivo) / Ventas Numérico -1,055.9 - 656.45 N/A No
    X31 (Beneficio bruto + intereses) / Ventas Numérico -668.41 - 2.377 N/A No
    X32 (Pasivos corrientes * 365) / Costo de productos vendidos Numérico 0 - 351,630 días No
    X33 Gastos operativos / Pasivos a corto plazo Numérico 0 - 135.67 N/A No
    X34 Gastos operativos / Pasivos totales Numérico -12.369 - 337.65 N/A No
    X35 Beneficio en ventas / Activos totales Numérico -1.502 - 1.384 N/A No
    X36 Ventas totales / Activos totales Numérico 0.0007 - 110.97 N/A No
    X37 (Activos corrientes - inventarios) / Pasivos a largo plazo Numérico -89.392 - 79,762 N/A No
    X38 Capital constante / Activos totales Numérico -440.55 - 74.689 N/A No
    X39 Beneficio en ventas / Ventas Numérico -648.8 - 0.695 N/A No
    X40 (Activos corrientes - inventario - cuentas por cobrar) / Pasivos a corto plazo Numérico -1.726 - 125.58 N/A No
    X41 Pasivos totales / ((Beneficio operativo + depreciación) * (12/365)) Numérico -388.7 - 462.11 N/A No
    X42 Beneficio de actividades operativas / Ventas Numérico -648.8 - 1.028 N/A No
    X43 Rotación de cuentas por cobrar + Rotación de inventario (días) Numérico 0 - 40,515 días No
    X44 (Cuentas por cobrar * 365) / Ventas Numérico 0 - 40,515 días No
    X45 Beneficio neto / Inventario Numérico -711.43 - 512.67 N/A No
    X46 (Activos corrientes - inventario) / Pasivos a corto plazo Numérico -0.153 - 127.41 N/A No
    X47 (Inventario * 365) / Costo de productos vendidos Numérico 0 - 1,121.2 días No
    X48 EBITDA / Activos totales Numérico -13.147 - 1.377 N/A No
    X49 EBITDA / Ventas Numérico -649.16 - 0.968 N/A No
    X50 Activos corrientes / Pasivos totales Numérico 0.002 - 125.23 N/A No
    X51 Pasivos a corto plazo / Activos totales Numérico 0 - 441.5 N/A No
    X52 (Pasivos a corto plazo * 365) / Costo de productos vendidos Numérico 0 - 453.96 días No
    X53 Patrimonio / Activos fijos Numérico -225.31 - 86,795 N/A No
    X54 Capital constante / Activos fijos Numérico -120.77 - 87,092 N/A No
    X55 Capital de trabajo (Valor absoluto) Numérico -232,950 - 484,930 N/A No
    X56 (Ventas - Costo de productos vendidos) / Ventas Numérico -648.8 - 1 N/A No
    X57 (Activos corrientes - inventario - pasivos CP) / (Ventas - Ben. Bruto - Deprec.) Numérico -24.536 - 6.392 N/A No
    X58 Costos totales / Ventas totales Numérico 1.5e-6 - 668.75 N/A No
    X59 Pasivos a largo plazo / Patrimonio Numérico -256.99 - 58.899 N/A No
    X60 Ventas / Inventario Numérico 0.344 - 5,500 N/A No
    X61 Ventas / Cuentas por cobrar Numérico 0 - 298.19 N/A No
    X62 (Pasivos a corto plazo * 365) / Ventas Numérico 0 - 127,450 días No
    X63 Ventas / Pasivos a corto plazo Numérico 0.003 - 485.71 N/A No
    X64 Ventas / Activos fijos Numérico 0.0008 - 127,680 N/A No
    Bankrupt Estado de bancarrota de la empresa (objetivo) Binario 0: Solvente, 1: Bancarrota N/A
    66 Variables totales
    64 Numéricas
    1 Categóricas
    1 Binarias
    Objetivo: Bancarrota (Bankrupt)
    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 Bancarrota de Empresas Polacas. Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados financieros.

    Forecasting_Year Categórica
    Código Significado
    1Pronóstico a 5 años (Datos del 1er año)
    2Pronóstico a 4 años (Datos del 2do año)
    3Pronóstico a 3 años (Datos del 3er año)
    4Pronóstico a 2 años (Datos del 4to año)
    5Pronóstico a 1 año (Datos del 5to año)
    📊

    Importancia: El horizonte temporal afecta la precisión de los modelos. Pronósticos a 1 año son más precisos que a 5 años.

    Bankrupt 🎯 Objetivo
    Código Significado
    0 Solvente - Empresa operativa, sin quiebra (Clase Mayoritaria ~95%)
    1 Bancarrota - Empresa en quiebra (Clase Minoritaria ~5%)
    🎯

    Variable Objetivo: El modelo debe predecir la bancarrota empresarial basándose en ratios financieros.

    Variables Binarias Binario

    Formato: 0 = Solvente, 1 = Bancarrota

    Bankrupt 🎯 Variable Objetivo: Estado de bancarrota (0: Solvente, 1: Bancarrota)
    ℹ️

    Nota: Única variable binaria en el dataset.

    📊
    Variables categóricas: 1
    • Forecasting_Year (5 horizontes temporales)
    🎯
    Variables binarias: 1
    • 🎯 Bankrupt (Objetivo - Bancarrota)
    📈
    Variables numéricas: 64
    • 13 Rentabilidad (Profitability)
    • 9 Liquidez (Liquidity)
    • 8 Apalancamiento (Leverage)
    • 21 Eficiencia (Turnover)
    • 13 Otros indicadores
    ⚠️
    Recomendaciones Financieras:
    • Ratios clave: X01 (ROA), X04 (Current Ratio), X02 (Deuda/Activos), X09 (Rotación de activos)
    • Bancarrota: Empresas con X01 (ROA) negativo y X02 (Deuda/Activos) > 1 tienen alto riesgo
    • Liquidez: X04 (Current Ratio) < 1 indica problemas de liquidez a corto plazo
    • Apalancamiento: X02 > 1 significa deuda mayor que activos (alto riesgo)
    • Rentabilidad: X01, X07 (ROA), X18 (Margen bruto) negativos son señales de alerta
    • Eficiencia: X09 baja indica mala utilización de activos
    • Tamaño: X29 (log activos) - empresas más grandes tienden a tener menor riesgo
    • Horizonte: Modelos con Forecasting_Year = 5 (5 años) son menos precisos que con año 1

    🔬 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

    • X02 > 1 → Bankrupt = 1 (Pasivos > Activos → bancarrota)
    • Bankrupt == 0 → X02 ≤ 1 (Sin bancarrota → pasivos ≤ activos)
    • X02 > 0.9 → X10 < 0.1 (Deuda alta → patrimonio bajo)
    • X10 > 0.9 → X02 < 0.1 (Patrimonio alto → deuda baja)
    • X09 == 0 → X19 = 0 (Sin ventas → beneficio bruto 0)
    • X09 == 0 → X23 = 0 (Sin ventas → beneficio neto 0)
    • X18 < X07 → X07 ≤ X18 (Beneficio Bruto ≥ EBIT)
    • X07 < X01 → X01 ≤ X07 (EBIT ≥ Beneficio Neto)
    • X04 < 1 → Bankrupt = 1 (Current ratio < 1 → bancarrota)
    • X02 < X51 → X51 ≤ X02 (Pasivos totales ≥ pasivos a corto plazo)
    • X01 > 0.5 → Bankrupt = 0 (ROA alto → sin bancarrota)
    • X01 > 0.5 y X18 < 0 son mutuamente excluyentes (ROA positivo vs beneficio bruto negativo)
    • X02 > 1 → X17 < 1 (Pasivos > Activos → Activos/Pasivos < 1)

    ⚙️ 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(256, 256)
    discriminator_dim(256, 256)
    embedding_dim128
    l2scale1e-05

    📊 Hiperparámetros TVAE

    epochs 500
    batch_size 50
    embedding_dim 128
    compress_dims (128, 128)
    decompress_dims (128, 128)
    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 1142 0.659 0.928 0.945 8.401 0.373 0.053 0.258 0.958 101.586 0 1142 0.413 🏆
    Smote 1 1142 0.634 0.936 0.940 7.778 0.447 0.099 0.268 0.976 81.136 0.003 604 0.548
    Borderline SMOTE 1 1142 0.623 0.917 0.915 6.332 0.446 0.044 0.282 0.966 80.274 0.004 609 0.432
    ADASYN 1.018 1132 0.542 0.918 0.925 6.308 0.444 0.110 0.264 0.977 78.114 0.003 608 0.445
    SMOTE RSB* Adaptado 1.036 1122 0.681 0.914 0.910 7.844 0.441 0.090 0.255 0.965 100.752 0.005 600 0.466
    SMOTE RSB* Adaptado + Reglas 1.036 1122 0.609 0.923 0.925 7.171 0.441 0.096 0.258 0.964 102.026 0.005 600 0.541
    OOF PSO para Balanceo 1 1142 0.622 0.928 0.945 5.943 0.444 0.000 0.255 0.513 80.913 0.221 600 0.471
    OOF PSO para Balanceo + Reglas 1.904 848 0.696 0.801 0.720 3.114 0.329 0.000 0.185 0.566 77.113 0.124 496 0.514
    Mejor seleccionado: Random Oversampling (TabDSFidelity: 8.401, AUC: 0.659, F1: 0.928, MIA: 0.413). 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 2.581 6170 0.571 0.931 0.950 8.569 0.666 0.086 0.091 0.967 158.588 0.032 0 0.479
    SMOTE RSB* + Ruido Gaussiano + Reglas 1.079 6170 0.561 0.805 0.725 7.233 0.666 0.086 0.234 0.967 450.348 0.032 0 0.490
    CTGAN 1.270 10000 0.656 0.446 0.325 3.756 0.773 0.000 0.310 0.840 1559.540 0.071 0 0.549
    CTGAN + Reglas del Dominio 1.057 10000 0.598 0.448 0.330 3.154 0.773 0.000 0.241 0.839 2106.190 0.070 0 0.566
    TVAE 2.238 10000 0.494 0.886 0.865 5.156 0.830 0.008 0.226 0.878 932.031 0.004 0 0.470
    TVAE + Reglas del Dominio 1.141 10000 0.564 0.767 0.670 4.795 0.830 0.008 0.340 0.878 1497.430 0.004 0 0.509
    OOF PSO para Aumento 1 10000 0.500 0.933 0.955 4.090 0.826 0.000 0.836 0.583 220.002 0.258 0 0.494
    OOF PSO para Aumento + Reglas 1.077 10000 0.613 0.818 0.745 4.227 0.826 0.000 0.853 0.604 719.409 0.244 0 0.480
    SMOTE RSB* Refinado 2.742 6047 0.680 0.923 0.935 9.820 0.677 0.111 0.085 0.965 147.317 0.017 0 0.512 🏆
    SMOTE RSB* Refinado + Reglas 1.708 6047 0.648 0.801 0.720 8.290 0.677 0.111 0.149 0.961 429.398 0.017 0 0.510
    Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.820, AUC: 0.680, F1: 0.923, MIA: 0.512). 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 2.187 7312 0.530 0.925 0.940 7.813 0.606 0.067 0.112 0.966 317.215 0.032 0 0.480
    SMOTE RSB* + Ruido Gaussiano + Reglas 1.066 7312 0.608 0.794 0.710 4.800 0.606 0.067 0.237 0.965 608.206 0.032 0 0.527
    CTGAN 1.239 11142 0.674 0.926 0.930 7.464 0.706 0.000 0.304 0.846 1852.290 0.064 208 0.438
    CTGAN + Reglas del Dominio 1.051 11142 0.627 0.907 0.905 6.486 0.706 0.000 0.242 0.845 2391.530 0.063 208 0.542
    TVAE 2.045 11142 0.508 0.897 0.885 4.814 0.744 0.011 0.201 0.945 1236.280 0.004 208 0.503
    TVAE + Reglas del Dominio 1.126 11142 0.565 0.859 0.815 4.285 0.744 0.011 0.305 0.945 1801.130 0.004 208 0.455
    OOF PSO para Aumento 1 11142 0.697 0.931 0.950 6.038 0.739 0.000 0.618 0.604 486.295 0.233 208 0.410
    OOF PSO para Aumento + Reglas 1.069 11142 0.672 0.928 0.945 5.755 0.739 0.000 0.634 0.624 970.077 0.221 208 0.489
    SMOTE RSB* Refinado 2.287 7189 0.651 0.925 0.940 9.304 0.611 0.090 0.107 0.963 299.741 0.017 0 0.430 🏆
    SMOTE RSB* Refinado + Reglas 1.564 7189 0.641 0.801 0.720 5.535 0.611 0.090 0.164 0.961 584.791 0.017 0 0.534
    Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.304, AUC: 0.651, F1: 0.925, MIA: 0.430). Nota: Ratio <= 1.5 = Conjunto Balanceado.

    📈 Diagrama del Proceso de Generación

    Conjunto Original
    CD_35
    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* Refinado
    ⭐ Mejor Aumentado
    SMOTE RSB* Refinado
    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 Polish Companies Bankruptcy Prediction (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32945870.v1