CD_16 Original + Derivados

CD_16: Heart Disease (Cleveland) - UCI

Predicción de enfermedad coronaria (estenosis > 50%). 297 instancias con variables demográficas, pruebas cardíacas y resultados invasivos.

📈 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.69 0.97 0.81 32
Clase 1 0.93 0.50 0.65 28
Accuracy 0.75
Macro Avg 0.81 0.73 0.73 60
Weighted Avg 0.80 0.75 0.73 60
AUC-ROC: 0.96
F1-Score (weighted): 0.73
Accuracy: 0.75
➡️ Mejora
⬆ +0.04 AUC ⬆ +0.27 F1 ⬆ +0.25 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 1.00 1.00 1.00 32
Clase 1 1.00 ⬆ +0.07 1.00 ⬆ +0.50 1.00 ⬆ +0.35 28
Accuracy 1.00 ⬆ +0.25
Macro Avg 1.00 ⬆ +0.19 1.00 ⬆ +0.27 1.00 ⬆ +0.27 60
Weighted Avg 1.00 ⬆ +0.20 1.00 ⬆ +0.25 1.00 ⬆ +0.27 60
AUC-ROC: 1.00 ⬆ +0.04
F1-Score (weighted): 1.00 ⬆ +0.27
Accuracy: 1.00 ⬆ +0.25

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.93
Sintético: 1.00
⬆ +0.07
📈
Recall
Original: 0.50
Sintético: 1.00
⬆ +0.50
⚖️
F1-Score
Original: 0.65
Sintético: 1.00
⬆ +0.35

📚 Fuente Original del Conjunto

Heart Disease (Cleveland Database)

v1.0
Detrano, R., Jánosi, A., Steinbrunn, W., Pfisterer, M., Schmid, J., Sandhu, S., Guppy, K., Lee, S., & Froelicher, V.
Publicado: 30 de junio de 1988

📄 Resumen (Abstract)

El conjunto de datos de Enfermedad Cardíaca contiene información clínica de pacientes evaluados por enfermedad coronaria. El conjunto incluye cuatro bases de datos: Cleveland, Hungría, Suiza y el VA Long Beach, siendo la base de datos de Cleveland la más utilizada por investigadores de aprendizaje automático. Cada instancia representa a un paciente y contiene 76 atributos originales, aunque todos los experimentos publicados se refieren al uso de un subconjunto de 14 atributos. El objetivo es predecir la presencia de enfermedad cardíaca (variable num), donde 0 indica ausencia de enfermedad y los valores 1-4 indican presencia de la enfermedad en diferentes grados de severidad.

🔬 Métodos y Contexto

Este conjunto de datos fue utilizado en el estudio internacional de Detrano et al. (1989) para evaluar la aplicación de un nuevo algoritmo probabilístico para el diagnóstico de enfermedad de las arterias coronarias. Los datos fueron recolectados en múltiples centros (Cleveland Clinic Foundation, Hospitales de Hungría, Suiza y el VA Long Beach), permitiendo una validación cruzada de los métodos diagnósticos en poblaciones diversas. La variable objetivo (num) se basa en el estado de la enfermedad angiográfica, donde:

  • Valor 0: < 50% de estrechamiento del diámetro de los vasos
  • Valor 1-4: > 50% de estrechamiento del diámetro en algún vaso principal

📊 Descripción de Datos

El dataset de Cleveland contiene 303 instancias con 14 atributos utilizados en la mayoría de los experimentos. Las características son de tipo categórico, entero y real e incluyen variables demográficas, clínicas y de pruebas de esfuerzo. El conjunto contiene valores faltantes en las variables ca y thal.

📋 Atributos Utilizados (Subconjunto de 14)
Atributo Tipo Descripción
age Entero Edad en años
sex Categórica Sexo (1 = masculino; 0 = femenino)
cp Categórica Tipo de dolor torácico: 1=angina típica, 2=angina atípica, 3=dolor no anginoso, 4=asintomático
trestbps Entero Presión arterial en reposo (mm Hg)
chol Entero Colesterol sérico (mg/dl)
fbs Categórica Glucosa en ayunas > 120 mg/dl (1 = verdadero; 0 = falso)
restecg Categórica Resultados electrocardiográficos en reposo: 0=normal, 1=anomalía ST-T, 2=hipertrofia ventricular izquierda
thalach Entero Frecuencia cardíaca máxima alcanzada
exang Categórica Angina inducida por ejercicio (1 = sí; 0 = no)
oldpeak Real Depresión del ST inducida por ejercicio relativa al reposo
slope Categórica Pendiente del segmento ST en el pico del ejercicio: 1=ascendente, 2=plana, 3=descendente
ca Entero Número de vasos principales (0-3) coloreados por fluoroscopia
thal Categórica Defecto talámico: 3=normal, 6=defecto fijo, 7=defecto reversible
num Entero (Target) Diagnóstico de enfermedad cardíaca: 0=sin enfermedad, 1-4=presencia de enfermedad

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (presencia/ausencia de enfermedad) o multiclase (grados 0-4)
  • Dimensión: Multivariante
  • Tipo de características: Categóricas, enteras y reales
  • Valores faltantes: Sí (en ca y thal)
  • Área de aplicación: Salud y Medicina, Cardiología
  • Bases de datos: Cleveland (303 instancias), Hungría, Suiza, VA Long Beach

📖 Publicación Introductoria

El artículo fundamental que describe la aplicación del algoritmo probabilístico para el diagnóstico de enfermedad de las arterias coronarias es:

Detrano, R., Jánosi, A., Steinbrunn, W., Pfisterer, M., Schmid, J., Sandhu, S., Guppy, K., Lee, S., & Froelicher, V. (1989). International application of a new probability algorithm for the diagnosis of coronary artery disease. American Journal of Cardiology, 64(5), 304-310. https://doi.org/10.1016/0002-9149(89)90824-2

⚖️ Ética y Privacidad

El conjunto de datos ha sido anonimizado. Los números de identificación de pacientes y los números de seguridad social fueron reemplazados con valores ficticios (0 y "name" respectivamente) para proteger la privacidad de los pacientes. 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 uno de los más utilizados en la literatura de aprendizaje automático para problemas de clasificación médica. Se recomienda:

  • Para la tarea de clasificación binaria, agrupar los valores 1-4 de la variable num como "presencia" de enfermedad y el valor 0 como "ausencia"
  • Manejar adecuadamente los valores faltantes en las variables ca y thal (imputación o eliminación)
  • Utilizar validación cruzada estratificada debido al desbalanceo potencial entre clases
  • Estandarizar/normalizar las características numéricas (age, trestbps, chol, thalach, oldpeak)
  • La base de datos de Cleveland es la más utilizada y la única procesada para experimentos de ML
  • Existen costos de prueba disponibles en la carpeta "Costs" del repositorio (donados por Peter Turney)

💡 Importancia Clínica

La enfermedad de las arterias coronarias es una de las principales causas de muerte a nivel mundial. El diagnóstico temprano y preciso es fundamental para iniciar tratamientos oportunos y reducir la mortalidad. Este conjunto de datos ha sido fundamental para el desarrollo de sistemas de apoyo al diagnóstico basados en aprendizaje automático, permitiendo la identificación de factores de riesgo y la predicción de enfermedad cardíaca a partir de variables clínicas no invasivas. La inclusión de múltiples bases de datos internacionales permite evaluar la generalización de los modelos en poblaciones diversas.

📖 Cómo citar la fuente original

Detrano, R., Jánosi, A., Steinbrunn, W., Pfisterer, M., Schmid, J., Sandhu, S., Guppy, K., Lee, S., & Froelicher, V. (1989). International application of a new probability algorithm for the diagnosis of coronary artery disease. American Journal of Cardiology, 64(5), 304-310. https://doi.org/10.1016/0002-9149(89)90824-2

📚 Referencias Adicionales

  • Detrano, R., et al. (1989). International application of a new probability algorithm for the diagnosis of coronary artery disease. American Journal of Cardiology, 64(5), 304-310. https://doi.org/10.1016/0002-9149(89)90824-2
  • UCI Machine Learning Repository - Heart Disease. https://archive.ics.uci.edu/ml/datasets/Heart+Disease
  • Turney, P. (1995). Cost-sensitive classification: Empirical evaluation of a hybrid genetic decision tree induction algorithm. Journal of Artificial Intelligence Research, 2, 369-409. (Contiene información sobre costos de prueba)

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Heart Disease - Cleveland)

  • Estructuración y nomenclatura de variables:
    • Asignación de nombres de columnas según el estándar de 14 variables del dataset Cleveland: age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal, num.
    • Identificación y tratamiento específico de 8 variables categóricas (sex, cp, fbs, restecg, exang, slope, ca, thal) para garantizar su naturaleza entera tras la limpieza.
  • Limpieza y tratamiento de valores perdidos:
    • Conversión de valores '?' (indicadores de "no disponible" en el dataset original) a NaN durante la carga.
    • Eliminación de filas con valores faltantes (aproximadamente 6 instancias en el conjunto de Cleveland) para preservar la integridad y pureza estadística del conjunto de referencia.
    • Dataset resultante completamente limpio y listo para modelado directo.
  • Transformación de la variable objetivo (binarización):
    • Conversión de la variable multiclase num (original: 0, 1, 2, 3, 4) a clasificación binaria según el estándar de la literatura médica.
    • Mapeo: Valor 0 → 0 (Ausencia de enfermedad, < 50% estrechamiento), Valores 1-4 → 1 (Presencia de enfermedad, > 50% estrechamiento).
    • Generación de leyenda detallada con semántica clínica de todos los códigos numéricos.
  • Documentación y trazabilidad:
    • Creación del archivo leyenda_heart_disease.txt con el mapeo completo de todas las variables categóricas codificadas.
    • Inclusión de descripciones clínicas detalladas para cada código numérico (ej. cp: 1=Angina típica, 2=Angina atípica, 3=Dolor no anginoso, 4=Asintomático).
    • Documentación separada de variables continuas no codificadas (age, trestbps, chol, thalach, oldpeak) con sus unidades de medida.
  • Preservación de la estructura original:
    • Mantenimiento de las 14 variables sin adición de nuevas columnas artificiales.
    • Preservación del orden estándar de columnas reconocido en la literatura de ML para este dataset.
    • Guardado con separador punto y coma (;) para compatibilidad internacional.

📊 Resultado: Dataset de 297 pacientes (limpieza estricta) con 13 variables predictoras (mixtas: categóricas codificadas y continuas) y 1 variable objetivo binaria (num). Balance de clases casi perfecto (~55% sanos / ~45% enfermos) — escenario de control ideal para validación del índice TabDSFidelity en contextos clínicamente complejos y con multicolinealidad moderada.

🏥 Fuente: Cleveland Clinic Foundation (Dr. Robert Detrano, M.D., Ph.D.) - Donado en 1988.

📋 Estándar: Subconjunto Cleveland, considerado el "Gold Standard" en investigación por su integridad y calidad de datos.

📁 Leyenda disponible: Archivo leyenda_heart_disease.txt con mapeo semántico de todas las variables categóricas y descripción de variables continuas.

🎯 Variable objetivo: num (1 = Enfermedad coronaria >50% estrechamiento, 0 = Ausencia de enfermedad).

📋 Diccionario de Datos Detallado

Variable Descripción Clínica Tipo Rango / Categorías Unidad ¿Objetivo?
cp Tipo de dolor torácico (Chest Pain) Categórico 1: Típica, 2: Atípica, 3: No anginoso, 4: Asintomático N/A No
restecg Resultados electrocardiográficos en reposo Categórico 0: Normal, 1: Anormalidad ST-T, 2: Hipertrofia VI N/A No
slope Pendiente del segmento ST en pico de ejercicio Categórico 1: Ascendente, 2: Plana, 3: Descendente N/A No
thal Defecto de perfusión sanguínea (Talasemia) Categórico 3: Normal, 6: Defecto fijo, 7: Defecto reversible N/A No
age Edad del paciente Numérico 34 - 77 años No
trestbps Presión arterial en reposo Numérico 94 - 200 mm Hg No
chol Colesterol sérico Numérico 126 - 564 mg/dl No
thalach Frecuencia cardíaca máxima alcanzada Numérico 88 - 194 lpm No
oldpeak Depresión del segmento ST inducida por ejercicio Numérico 0 - 6.2 mV No
ca Número de vasos mayores coloreados por fluoroscopia Numérico 0 - 3 vasos No
sex Sexo del paciente Binario 0: Femenino, 1: Masculino N/A No
fbs Glucemia en ayunas > 120 mg/dl Binario 0: Falso, 1: Verdadero N/A No
exang Angina inducida por ejercicio Binario 0: No, 1: Sí N/A No
num Diagnóstico de enfermedad cardíaca (objetivo) Binario 0: Sin enfermedad, 1: Con enfermedad N/A
14 Variables totales
6 Numéricas
4 Categóricas
4 Binarias
Objetivo: Enfermedad cardíaca (num)
Datos ausentes: 0%
Instancias: ~297

📈 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 Enfermedad Cardíaca (Cleveland). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados clínicos.

cp Categórica

Tipo de dolor torácico (Chest Pain Type)

Código Significado
1Angina típica (Típica)
2Angina atípica (Atípica)
3Dolor no anginoso (No anginoso)
4Asintomático
💡

Importancia clínica: El tipo de dolor torácico es uno de los predictores más fuertes de enfermedad coronaria.

restecg Categórica

Resultados electrocardiográficos en reposo

Código Significado
0Normal
1Anormalidad onda ST-T (inversión T y/o elevación/depresión > 0.05 mV)
2Hipertrofia ventricular izquierda (probable o definitiva)
slope Categórica

Pendiente del segmento ST en pico de ejercicio

Código Significado
1Ascendente (Upsloping) - ✓ Menor riesgo
2Plana (Flat) - ⚠ Riesgo intermedio
3Descendente (Downsloping) - ✗ Mayor riesgo
⚠️

Significado clínico: La pendiente descendente indica isquemia miocárdica más severa.

thal Categórica

Defecto de perfusión sanguínea (Talasemia)

Código Significado
3Normal - ✓ Perfusión normal
6Defecto fijo - ⚠ Cicatriz/Infarto previo
7Defecto reversible - ✗ Isquemia inducible (reversible)
🚨

Importancia clínica: El defecto reversible (7) es el más asociado con enfermedad coronaria significativa.

Variables Binarias Binario

Formato común: 0 = No / Falso, 1 = Sí / Verdadero

sex Sexo (0: Femenino, 1: Masculino)
fbs Glucemia en ayunas > 120 mg/dl (0: Falso, 1: Verdadero)
exang Angina inducida por ejercicio (0: No, 1: Sí)
num 🎯 Variable Objetivo: Diagnóstico (0: Sin enfermedad, 1: Con enfermedad)
ℹ️

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

📊
Variables categóricas: 4
  • cp (4 categorías - Tipo de dolor torácico)
  • restecg (3 categorías - ECG en reposo)
  • slope (3 categorías - Pendiente ST)
  • thal (3 categorías - Defecto de perfusión)
🎯
Variables binarias: 4
  • sex (Género)
  • fbs (Glucemia en ayunas)
  • exang (Angina por ejercicio)
  • 🎯 num (Objetivo - Diagnóstico)
📈
Variables numéricas: 6
  • age (Edad en años)
  • trestbps (Presión arterial)
  • chol (Colesterol)
  • thalach (FC máxima)
  • oldpeak (Depresión ST)
  • ca (Número de vasos)
⚠️
Recomendaciones Clínicas:
  • Predictores clave: cp, slope, thal, oldpeak y ca son los más informativos
  • Balance de clases: Aproximadamente 1:1 (sin desbalance significativo)
  • ca (vasos): Aunque es numérico (0-3), representa un conteo discreto
  • oldpeak: Depresión del ST > 1.0 mV es clínicamente significativa
  • thalach: Frecuencia cardíaca máxima baja es un predictor de mal pronóstico
  • Datos limpios: Sin valores ausentes

🔬 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

  • ca ∈ {1, 2, 3} → num = 1 (Enfermedad coronaria presente)
  • exang == 1 → thalach < 180
  • oldpeak > 2.5 → num = 1
  • age > 70 → thalach < 175
  • age < 30 → trestbps < 180
  • oldpeak == 0 → slope = 1 (Pendiente ascendente)
  • slope > 1 → oldpeak ≥ 0.1 (Pendiente no ascendente implica depresión)
  • cp == 4 (Angina asintomática) → exang = 0
  • thal == 3 (Normal) → num = 0 (Sin enfermedad)
  • thal == 7 (Reversible) → num = 1 (Enfermedad presente)

⚙️ 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 - - - - - - - - - - - - - -
Smote - - - - - - - - - - - - - -
Borderline SMOTE - - - - - - - - - - - - - -
ADASYN - - - - - - - - - - - - - -
SMOTE RSB* Adaptado - - - - - - - - - - - - - -
SMOTE RSB* Adaptado + Reglas - - - - - - - - - - - - - -
OOF PSO para Balanceo - - - - - - - - - - - - - -
OOF PSO para Balanceo + Reglas - - - - - - - - - - - - - -
Mejor seleccionado: Sin datos disponibles (TabDSFidelity: -, AUC: -, F1: -, MIA: -). 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.150 9814 1.000 1.000 1.000 9.878 0.215 0.832 0.020 0.962 83.493 0.577 0 0.579 🏆
SMOTE RSB* + Ruido Gaussiano + Reglas 1.112 9814 0.897 0.849 0.850 5.764 0.215 0.832 0.036 0.936 226.823 0.577 0 0.479
CTGAN 1.086 10000 0.871 0.800 0.800 3.745 0.196 0.119 0.008 0.929 293.014 0.089 0 0.440
CTGAN + Reglas del Dominio 1.069 10000 0.835 0.816 0.817 3.513 0.196 0.119 0.047 0.905 437.203 0.085 0 0.434
TVAE 1.023 10000 0.883 0.799 0.800 3.669 0.265 0.205 0.030 0.909 161.911 0.049 0 0.434
TVAE + Reglas del Dominio 1.115 10000 0.889 0.816 0.817 4.008 0.265 0.205 0.098 0.899 304.366 0.050 0 0.448
OOF PSO para Aumento 1 10000 0.914 0.783 0.783 1.000 0.627 0.000 0.223 0.714 230.583 0.169 0 0.462
OOF PSO para Aumento + Reglas 3.234 10000 0.869 0.816 0.817 1.095 0.627 0.000 0.359 0.731 373.552 0.184 0 0.483
SMOTE RSB* Refinado 1.004 9826 1.000 1.000 1.000 9.756 0.220 0.729 0.020 0.964 81.748 0.506 0 0.535
SMOTE RSB* Refinado + Reglas 1.085 9826 0.930 0.849 0.850 6.027 0.220 0.729 0.033 0.937 223.689 0.512 0 0.454
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano (TabDSFidelity: 9.878, AUC: 1.000, F1: 1.000, MIA: 0.579). 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.151 10111 1.000 1.000 1.000 3.868 0.210 0.832 0.019 0.963 156.634 0.576 0 0.596 🏆
SMOTE RSB* + Ruido Gaussiano + Reglas 1.114 10111 1.000 1.000 1.000 3.775 0.210 0.832 0.034 0.938 298.452 0.576 0 0.455
CTGAN 1.088 10297 1.000 1.000 1.000 3.016 0.190 0.130 0.008 0.931 366.397 0.085 59 0.452
CTGAN + Reglas del Dominio 1.072 10297 1.000 1.000 1.000 2.914 0.190 0.130 0.043 0.908 510.254 0.082 59 0.424
TVAE 1.017 10297 1.000 1.000 1.000 2.788 0.258 0.211 0.026 0.912 234.419 0.047 59 0.466
TVAE + Reglas del Dominio 1.116 10297 1.000 1.000 1.000 2.754 0.258 0.211 0.085 0.904 376.196 0.049 59 0.419
OOF PSO para Aumento 1.004 10297 1.000 1.000 1.000 0.031 0.604 0.000 0.201 0.722 302.189 0.163 59 0.491
OOF PSO para Aumento + Reglas 3.120 10297 1.000 1.000 1.000 0.063 0.604 0.000 0.304 0.737 445.098 0.178 59 0.447
SMOTE RSB* Refinado 1.001 10123 1.000 1.000 1.000 3.758 0.215 0.739 0.019 0.965 153.499 0.506 0 0.557
SMOTE RSB* Refinado + Reglas 1.087 10123 1.000 1.000 1.000 3.657 0.215 0.739 0.031 0.939 295.931 0.511 0 0.458
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano (TabDSFidelity: 3.868, AUC: 1.000, F1: 1.000, MIA: 0.596). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_16
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
----
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* + Ruido Gaussiano
⭐ Mejor Aumentado
SMOTE RSB* + Ruido Gaussiano
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 Disease (Version 2). figshare. https://doi.org/10.6084/m9.figshare.32932631.v2