CD_23 Original + Derivados

CD_23: Heart Failure Clinical Records

Registro clínico de 299 pacientes con insuficiencia cardíaca destinado a la predicción binaria de mortalidad (DEATH_EVENT). Integra 13 variables que abarcan demografía/estilo de vida (edad, tabaco), comorbilidades binarias (anemia, diabetes, hipertensión) y biomarcadores (plaquetas, sodio, CPK).

📈 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.68 1.00 0.81 41
Clase 1 0.00 0.00 0.00 19
Accuracy 0.68
Macro Avg 0.34 0.50 0.41 60
Weighted Avg 0.47 0.68 0.55 60
AUC-ROC: 0.62
F1-Score (weighted): 0.55
Accuracy: 0.68
➡️ Mejora
⬆ +0.13 AUC ⬆ +0.19 F1 ⬆ +0.07 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.78 0.88 0.83 41
Clase 1 0.64 ⬆ +0.64 0.47 ⬆ +0.47 0.55 ⬆ +0.55 19
Accuracy 0.75 ⬆ +0.07
Macro Avg 0.71 ⬆ +0.37 0.68 ⬆ +0.18 0.69 ⬆ +0.28 60
Weighted Avg 0.74 ⬆ +0.27 0.75 ⬆ +0.07 0.74 ⬆ +0.19 60
AUC-ROC: 0.75 ⬆ +0.13
F1-Score (weighted): 0.74 ⬆ +0.19
Accuracy: 0.75 ⬆ +0.07

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.00
Sintético: 0.64
⬆ +0.64
📈
Recall
Original: 0.00
Sintético: 0.47
⬆ +0.47
⚖️
F1-Score
Original: 0.00
Sintético: 0.55
⬆ +0.55

📚 Fuente Original del Conjunto

Heart Failure Prediction Dataset

v1.0
Chicco, D. & Jurman, G.
Publicado: 2020

📄 Resumen (Abstract)

Las enfermedades cardiovasculares (ECV) son la principal causa de muerte a nivel mundial, con aproximadamente 17.9 millones de muertes anuales, lo que representa el 31% de todas las muertes en el mundo. La insuficiencia cardíaca es un evento común causado por las ECV y este conjunto de datos contiene 12 características que pueden utilizarse para predecir la mortalidad por insuficiencia cardíaca. El conjunto de datos incluye información clínica de pacientes con insuficiencia cardíaca, con el objetivo de identificar factores predictivos de supervivencia y permitir el desarrollo de modelos de aprendizaje automático para la detección temprana y el manejo de pacientes de alto riesgo.

🔬 Métodos y Contexto

Este conjunto de datos fue utilizado en el estudio de Chicco y Jurman (2020), publicado en BMC Medical Informatics and Decision Making. Los investigadores demostraron que el aprendizaje automático puede predecir la supervivencia de pacientes con insuficiencia cardíaca utilizando únicamente la creatinina sérica y la fracción de eyección como predictores clave, logrando una alta precisión. El dataset fue recolectado de registros médicos de pacientes con insuficiencia cardíaca, incluyendo variables clínicas relevantes como edad, anemia, diabetes, hipertensión, función renal, electrolitos, y hábitos de estilo de vida.

⚠️ Factores de Riesgo Cardiovascular

La mayoría de las enfermedades cardiovasculares pueden prevenirse abordando factores de riesgo conductuales como:

  • Consumo de tabaco
  • Dieta poco saludable y obesidad
  • Inactividad física
  • Consumo nocivo de alcohol

Las personas con enfermedades cardiovasculares o con alto riesgo cardiovascular (debido a la presencia de uno o más factores de riesgo como hipertensión, diabetes, hiperlipidemia o enfermedad ya establecida) necesitan detección temprana y manejo, donde un modelo de aprendizaje automático puede ser de gran ayuda.

📊 Descripción de Datos

El dataset contiene 299 instancias con 12 atributos (11 variables predictoras y 1 variable objetivo). Las características son de tipo mixto (numéricas continuas y enteras, y binarias). El conjunto no presenta valores faltantes.

📋 Variables del Dataset
Variable Tipo Descripción Unidades
age Numérico Edad del paciente años
anaemia Binaria Anemia (disminución de glóbulos rojos): 0 = No, 1 = Sí -
creatinine_phosphokinase Numérico Nivel de creatinina fosfoquinasa (CPK) en sangre mcg/L
diabetes Binaria Diabetes mellitus: 0 = No, 1 = Sí -
ejection_fraction Numérico Fracción de eyección del ventrículo izquierdo (porcentaje de sangre expulsada) %
high_blood_pressure Binaria Hipertensión arterial: 0 = No, 1 = Sí -
platelets Numérico Conteo de plaquetas en sangre kiloplaquetas/mL
serum_creatinine Numérico Nivel de creatinina sérica (indicador de función renal) mg/dL
serum_sodium Numérico Nivel de sodio sérico mEq/L
sex Binaria Sexo del paciente: 0 = Mujer, 1 = Hombre -
smoking Binaria Tabaquismo: 0 = No, 1 = Sí -
time Numérico Período de seguimiento del paciente días
DEATH_EVENT Binaria (Target) Evento de muerte durante el seguimiento: 0 = Sobrevive, 1 = Fallece -

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Supervivencia vs. Mortalidad por insuficiencia cardíaca)
  • Dimensión: Multivariante
  • Tipo de características: Mixtas (Numéricas continuas y enteras, Binarias)
  • Valores faltantes: No
  • Área de aplicación: Salud y Medicina, Cardiología, Predicción de supervivencia
  • Variables clave identificadas: Creatinina sérica y fracción de eyección (principales predictores según el estudio)

📖 Publicación Introductoria

El artículo fundamental que describe el uso de aprendizaje automático para predecir la supervivencia de pacientes con insuficiencia cardíaca es:

Chicco, D., & Jurman, G. (2020). Machine learning can predict survival of patients with heart failure from serum creatinine and ejection fraction alone. BMC Medical Informatics and Decision Making, 20, 16. https://doi.org/10.1186/s12911-020-1023-5

⚖️ Ética y Privacidad

El conjunto de datos ha sido anonimizado para proteger la privacidad de los pacientes. No contiene información personal identificable como nombres, direcciones o números de identificación. La licencia CC BY 4.0 permite el uso, distribución y adaptación del conjunto de datos con el debido reconocimiento a los autores. 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 reidentificación de pacientes.

📋 Notas de Uso

Este conjunto de datos es ampliamente utilizado para la predicción de mortalidad por insuficiencia cardíaca. Se recomienda:

  • Utilizar la variable time (días de seguimiento) como información temporal para análisis de supervivencia o como característica adicional
  • La variable objetivo DEATH_EVENT está codificada como 0 = Sobrevive, 1 = Fallece
  • Estandarizar/normalizar las características numéricas (age, creatinine_phosphokinase, ejection_fraction, platelets, serum_creatinine, serum_sodium)
  • Las variables binarias (anaemia, diabetes, high_blood_pressure, sex, smoking) pueden utilizarse directamente como 0/1
  • Según el estudio de Chicco y Jurman (2020), la creatinina sérica y la fracción de eyección son los predictores más importantes para la supervivencia
  • Utilizar validación cruzada estratificada para evaluar el rendimiento del modelo
  • Considerar la posibilidad de desbalanceo de clases (el evento de muerte puede ser menos frecuente que la supervivencia)

💡 Importancia Clínica

La insuficiencia cardíaca es una condición crónica y progresiva que afecta a aproximadamente 64 millones de personas en todo el mundo. Es la principal causa de hospitalización en personas mayores de 65 años y tiene una tasa de mortalidad a 5 años del 50%, comparable a la de muchos cánceres. La predicción temprana de la mortalidad por insuficiencia cardíaca permite:

  • Identificar pacientes de alto riesgo para intervenciones intensivas
  • Optimizar la asignación de recursos como trasplantes cardíacos o dispositivos de asistencia ventricular
  • Planificar cuidados paliativos y de fin de vida de manera oportuna
  • Reducir la carga económica asociada a hospitalizaciones repetidas

El estudio de Chicco y Jurman (2020) demostró que dos simples biomarcadores (creatinina sérica y fracción de eyección) pueden predecir la supervivencia con alta precisión, lo que sugiere que modelos de aprendizaje automático basados en datos clínicos rutinarios pueden ser herramientas valiosas para la toma de decisiones clínicas en entornos con recursos limitados.

📖 Cómo citar la fuente original

Chicco, D., & Jurman, G. (2020). Machine learning can predict survival of patients with heart failure from serum creatinine and ejection fraction alone. BMC Medical Informatics and Decision Making, 20, 16. https://doi.org/10.1186/s12911-020-1023-5

📚 Referencias Adicionales

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Heart Failure Clinical Records)

  • Verificación y garantía de integridad de datos:
    • Confirmación de la ausencia total de valores perdidos en el dataset original, tal como lo documenta la fuente.
    • Implementación de imputación con mediana como medida preventiva en caso de detección de valores nulos.
    • Garantía de integridad total del conjunto de datos para modelado directo.
  • Estandarización y documentación de variables:
    • Preservación de las 12 variables originales sin adición ni eliminación de columnas.
    • Variables binarias (0/1): anaemia, diabetes, high_blood_pressure, sex (0: Mujer, 1: Hombre), smoking.
    • Variables continuas: age, creatinine_phosphokinase, ejection_fraction, platelets, serum_creatinine, serum_sodium, time.
    • Mantenimiento de todas las variables en sus tipos originales (enteros y flotantes) sin conversiones innecesarias.
  • Generación de documentación y leyenda:
    • Creación del archivo leyenda_heart_failure.txt con la semántica completa de la variable objetivo y todas las variables predictoras.
    • Documentación detallada de la variable DEATH_EVENT (0 = Sobrevivió, 1 = Falleció).
    • Descripción de variables binarias con su significado clínico (0 = No/Ausencia, 1 = Sí/Presencia).
    • Listado de variables numéricas continuas con sus unidades clínicas (edad, CPK en sangre, fracción de eyección, plaquetas, creatinina sérica, sodio sérico, días de seguimiento).
  • Optimización y formato de salida:
    • Mantenimiento de las 299 instancias (pacientes) sin eliminación de filas.
    • Preservación de las 13 columnas originales (12 predictoras + 1 objetivo).
    • Guardado en formato CSV con separador punto y coma (;) para mantener consistencia con el resto de datasets procesados.
  • Control de calidad:
    • Confirmación de calidad de datos: ausencia de valores perdidos según documentación original.
    • Vista previa del dataset resultante para validación visual.
    • Verificación de la estructura dimensional final (299 filas × 13 columnas).

📊 Resultado: Dataset de 299 pacientes con 12 variables predictoras (mixtas: 5 binarias/categóricas codificadas, 7 numéricas continuas) y 1 variable objetivo binaria (DEATH_EVENT). Desbalance moderado (~68% sobrevivientes / ~32% fallecidos) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de insuficiencia cardíaca con variables clínicas de alta relevancia pronóstica.

🏥 Fuente: Heart Failure Clinical Records Dataset (UCI Machine Learning Repository) - Publicado por Davide Chicco y Giuseppe Jurman (2020).

📋 Variables clínicas clave: Edad, anemia, CPK, diabetes, fracción de eyección, presión arterial alta, plaquetas, creatinina sérica, sodio sérico, sexo, tabaquismo, tiempo de seguimiento.

📁 Leyenda disponible: Archivo leyenda_heart_failure.txt con descripción completa de la variable objetivo y semántica de todas las variables predictoras.

🎯 Variable objetivo: DEATH_EVENT (1 = Fallecimiento durante el seguimiento, 0 = Supervivencia).

⏱️ Periodo de seguimiento: Variable time indica los días de seguimiento clínico para cada paciente.

📋 Diccionario de Datos Detallado

Variable Descripción Clínica Tipo Rango / Categorías Unidad ¿Objetivo?
age Edad del paciente Numérico 40 - 95 años No
creatinine_phosphokinase Nivel de Creatinina Fosfoquinasa (CPK) en sangre Numérico 47 - 7,861 mcg/L No
ejection_fraction Fracción de eyección del ventrículo izquierdo Numérico 15 - 65 % No
platelets Conteo de plaquetas en sangre Numérico 25,100 - 850,000 kiloplaquetas/mL No
serum_creatinine Nivel de creatinina sérica (función renal) Numérico 0.5 - 6.8 mg/dL No
serum_sodium Nivel de sodio sérico (equilibrio electrolítico) Numérico 113 - 146 mEq/L No
time Periodo de seguimiento clínico del paciente Numérico 6 - 280 días No
anaemia Diagnóstico de anemia (disminución de glóbulos rojos o hemoglobina) Binario 0: No, 1: Sí N/A No
diabetes Diagnóstico de diabetes mellitus Binario 0: No, 1: Sí N/A No
high_blood_pressure Diagnóstico de hipertensión arterial Binario 0: No, 1: Sí N/A No
sex Género del paciente Binario 0: Femenino, 1: Masculino N/A No
smoking Hábito tabáquico Binario 0: No, 1: Sí N/A No
DEATH_EVENT Mortalidad durante el seguimiento (objetivo) Binario 0: Sobrevivió, 1: Falleció N/A
13 Variables totales
7 Numéricas
0 Categóricas
6 Binarias
Objetivo: Mortalidad (DEATH_EVENT)
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 Insuficiencia Cardíaca (Heart Failure Clinical Records). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados clínicos.

DEATH_EVENT 🎯 Objetivo
Código Significado
0 Sobrevivió - Paciente vivo al final del seguimiento (Clase Mayoritaria ~68%)
1 Falleció - Paciente falleció durante el seguimiento (Clase Minoritaria ~32%)
🎯

Variable Objetivo: El modelo debe predecir la mortalidad en pacientes con insuficiencia cardíaca.

Variables Binarias Binario

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

anaemia Anemia (0: No, 1: Sí)
diabetes Diabetes mellitus (0: No, 1: Sí)
high_blood_pressure Hipertensión arterial (0: No, 1: Sí)
sex Género (0: Femenino, 1: Masculino)
smoking Hábito tabáquico (0: No, 1: Sí)
DEATH_EVENT 🎯 Variable Objetivo: Mortalidad (0: Sobrevivió, 1: Falleció)
ℹ️

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

📊
Variables binarias: 6
  • anaemia, diabetes, high_blood_pressure
  • sex, smoking
  • 🎯 DEATH_EVENT (Objetivo - Mortalidad)
📈
Variables numéricas: 7
  • age, ejection_fraction (crítico)
  • serum_creatinine (función renal)
  • creatinine_phosphokinase
  • platelets, serum_sodium
  • time (⚠️ seguimiento)
⚠️
Recomendaciones Clínicas:
  • Principal factor: ejection_fraction (fracción de eyección) es el predictor más crítico
  • Interpretación: EF < 40% indica insuficiencia cardíaca grave
  • Creatinina sérica: > 1.5 mg/dL sugiere disfunción renal
  • Sodio sérico: < 135 mEq/L es hiponatremia (mal pronóstico)
  • CPK elevada: Indica daño muscular/cardíaco
  • Data Leakage: time no debe usarse como predictor en modelos de clasificación
  • Comorbilidades: La hipertensión y diabetes son factores de riesgo significativos

🔬 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

  • DEATH_EVENT == 1 → time ≤ 285 (Fallecimiento → seguimiento limitado)
  • DEATH_EVENT == 0 → time > 5 (Supervivencia → seguimiento mínimo)
  • sex == 0 (Mujer) → smoking = 0 (Contexto: Pakistán)
  • serum_creatinine > 3.0 → anaemia = 1 (Fallo renal → anemia)
  • platelets > 600000 → anaemia = 1 (Plaquetas altas → anemia)
  • creatinine_phosphokinase > 2500 → serum_creatinine ≥ 0.8 (CPK masiva → daño renal)
  • serum_sodium < 125 → high_blood_pressure = 0 (Hiponatremia → no HBP)
  • high_blood_pressure == 1 → age ≥ 18 (HTA → mayoría de edad)
  • smoking == 1 → age ≥ 14 (Tabaquismo → edad adolescente)
  • ejection_fraction > 55 → (high_blood_pressure = 1) OR (anaemia = 1)
  • serum_creatinine > 2.0 → (diabetes = 1) OR (high_blood_pressure = 1)
  • age > 82 → (anaemia = 1) OR (high_blood_pressure = 1) OR (diabetes = 1)
  • age < 50 → (smoking = 1) OR (diabetes = 1) OR (high_blood_pressure = 1)
  • diabetes == 1 → (high_blood_pressure = 1) OR (anaemia = 1)
  • ejection_fraction < 25 → (high_blood_pressure = 1) OR (anaemia = 1)

⚙️ Hiperparámetros SMOTE RSB* Adaptado

Valor escala0.03
Probabilidad Base0.1

🔄 Hiperparámetros CTGAN

epochs500
batch_size20
generator_lr0.0002
discriminator_lr0.0002
pac2
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 242 0.925 0.833 0.833 5.542 0.108 0.804 0.011 0.975 50.564 0 242 0.457
Smote 1 242 0.932 0.851 0.850 5.468 0.255 0.642 0.014 0.966 48.503 0.018 179 0.490
Borderline SMOTE 1 242 0.920 0.820 0.817 3.488 0.252 0.614 0.016 0.961 48.921 0.018 179 0.500
ADASYN 1.025 245 0.920 0.800 0.800 2.732 0.253 0.610 0.018 0.965 48.565 0.020 179 0.524
SMOTE RSB* Adaptado 1.043 237 0.912 0.790 0.783 2.214 0.221 0.705 0.011 0.979 46.244 0.015 179 0.497
SMOTE RSB* Adaptado + Reglas 1.043 237 0.922 0.837 0.833 4.723 0.226 0.746 0.010 0.977 45.811 0.015 179 0.484
OOF PSO para Balanceo 1 242 0.920 0.812 0.817 1.549 0.280 0.029 0.027 0.771 55.136 0.059 179 0.440
OOF PSO para Balanceo + Reglas 1 242 0.953 0.882 0.883 6.578 0.269 0.137 0.036 0.842 54.414 0.057 130 0.433 🏆
Mejor seleccionado: OOF PSO para Balanceo + Reglas del Dominio (TabDSFidelity: 6.578, AUC: 0.953, F1: 0.882, MIA: 0.433). 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.019 8062 0.926 0.803 0.800 6.166 0.481 0.053 0.034 0.850 73.917 0.495 0 0.398
SMOTE RSB* + Ruido Gaussiano + Reglas 1.019 8062 0.917 0.884 0.883 7.288 0.481 0.053 0.041 0.848 196.668 0.495 0 0.392
CTGAN 1.068 10000 0.876 0.815 0.817 5.879 0.408 0.030 0.032 0.871 251.039 0.092 0 0.465
CTGAN + Reglas del Dominio 1.068 10000 0.901 0.867 0.867 6.927 0.408 0.030 0.044 0.864 396.591 0.091 0 0.465
TVAE 1.181 10000 0.898 0.851 0.850 5.970 0.600 0.076 0.080 0.792 150.477 0.082 0 0.475
TVAE + Reglas del Dominio 1.181 10000 0.906 0.835 0.833 5.830 0.600 0.076 0.089 0.791 297.393 0.082 0 0.471
OOF PSO para Aumento 1 10000 0.810 0.555 0.683 0.000 0.737 0.000 0.145 0.589 125.301 0.192 0 0.520
OOF PSO para Aumento + Reglas 1 10000 0.822 0.592 0.700 0.791 0.737 0.000 0.191 0.667 269.290 0.179 0 0.524
SMOTE RSB* Refinado 1.001 7901 0.953 0.885 0.883 8.190 0.493 0.097 0.036 0.844 68.196 0.421 0 0.433
SMOTE RSB* Refinado + Reglas 1.001 7901 0.969 0.901 0.900 8.630 0.493 0.097 0.042 0.842 186.973 0.421 0 0.455 🏆
Mejor seleccionado: SMOTE RSB* Refinado + Reglas del Dominio (TabDSFidelity: 8.630, AUC: 0.969, F1: 0.901, MIA: 0.455). 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.018 8304 0.920 0.851 0.850 5.945 0.474 0.055 0.034 0.850 135.654 0.499 0 0.368
SMOTE RSB* + Ruido Gaussiano + Reglas 1.018 8304 0.920 0.851 0.850 5.955 0.474 0.055 0.041 0.848 258.140 0.499 0 0.372
CTGAN 1.067 10242 0.916 0.851 0.850 5.936 0.402 0.027 0.032 0.871 324.161 0.091 29 0.465
CTGAN + Reglas del Dominio 1.067 10242 0.902 0.800 0.800 3.773 0.402 0.027 0.044 0.864 472.169 0.090 29 0.468
TVAE 1.176 10242 0.912 0.867 0.867 5.767 0.586 0.075 0.079 0.793 224.519 0.083 29 0.432
TVAE + Reglas del Dominio 1.176 10242 0.906 0.851 0.850 5.029 0.586 0.075 0.087 0.793 371.041 0.084 29 0.446
OOF PSO para Aumento 1 10242 0.897 0.760 0.783 0.412 0.718 0.000 0.140 0.595 198.351 0.191 29 0.403
OOF PSO para Aumento + Reglas 1 10242 0.879 0.823 0.833 2.285 0.718 0.000 0.184 0.672 338.219 0.178 29 0.395
SMOTE RSB* Refinado 1.001 8143 0.959 0.885 0.883 8.526 0.485 0.098 0.036 0.844 128.093 0.420 0 0.428
SMOTE RSB* Refinado + Reglas 1.001 8143 0.963 0.885 0.883 8.625 0.485 0.098 0.042 0.842 246.393 0.420 0 0.416 🏆
Mejor seleccionado: SMOTE RSB* Refinado + Reglas del Dominio (TabDSFidelity: 8.625, AUC: 0.963, F1: 0.885, MIA: 0.416). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_23
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
OOF PSO para Balanceo + Reglas del Dominio
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* Refinado + Reglas del Dominio
⭐ Mejor Aumentado
SMOTE RSB* Refinado + 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 Heart Failure Clinical Records (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32934095.v1