CD_19 Original + Derivados

CD_19: Cardiovascular Disease: Cribado Masivo

Registro clínico procedente de cribados masivos, orientado a la clasificación binaria de patología cardiovascular (cardio). Integra 11 variables divididas en: 1) Objetivas (edad en años, género, peso, altura); 2) Examen Clínico (presión arterial sistólica/diastólica filtrada por plausibilidad biológica, y niveles ordinales de colesterol y glucosa); y 3) Subjetivas/Estilo de Vida (tabaquismo, alcohol, actividad física).

📈 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.67 0.65 0.66 101
Clase 1 0.65 0.67 0.66 99
Accuracy 0.66
Macro Avg 0.66 0.66 0.66 200
Weighted Avg 0.66 0.66 0.66 200
AUC-ROC: 0.73
F1-Score (weighted): 0.66
Accuracy: 0.66
➡️ Mejora
⬆ +0.11 AUC ⬆ +0.08 F1 ⬆ +0.08 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.76 0.70 0.73 101
Clase 1 0.72 ⬆ +0.07 0.78 ⬆ +0.11 0.75 ⬆ +0.09 99
Accuracy 0.74 ⬆ +0.08
Macro Avg 0.74 ⬆ +0.08 0.74 ⬆ +0.08 0.74 ⬆ +0.08 200
Weighted Avg 0.74 ⬆ +0.08 0.74 ⬆ +0.08 0.74 ⬆ +0.08 200
AUC-ROC: 0.83 ⬆ +0.11
F1-Score (weighted): 0.74 ⬆ +0.08
Accuracy: 0.74 ⬆ +0.08

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.65
Sintético: 0.72
⬆ +0.07
📈
Recall
Original: 0.67
Sintético: 0.78
⬆ +0.11
⚖️
F1-Score
Original: 0.66
Sintético: 0.75
⬆ +0.09

📚 Fuente Original del Conjunto

Cardiovascular Disease Dataset

v1.0
Registros médicos europeos (Instituciones de salud de Rusia / Europa del Este)
Disponible en repositorios públicos

📄 Resumen (Abstract)

El conjunto de datos Cardiovascular Disease es un registro médico a gran escala que contiene información detallada de 70,000 pacientes. Su propósito principal es la clasificación binaria, permitiendo entrenar modelos para determinar la presencia o ausencia de enfermedades cardiovasculares basándose en una combinación de datos objetivos, resultados de exámenes clínicos y declaraciones subjetivas del paciente.

A diferencia de los datasets anteriores (que provenían de estudios clínicos muy controlados), este conjunto de datos se caracteriza por provenir de cribados masivos, lo que suele implicar datos más "sucios" o con ruido (errores de medición humana en la presión arterial, valores atípicos, etc.), lo cual añade una capa de complejidad realista para la validación de modelos predictivos.

🔬 Origen y Procedencia

  • Fuente: Registros médicos de instituciones de salud de Rusia o Europa del Este (dado el esquema de codificación y las unidades de medida)
  • Momento de Recolección: Todos los valores fueron recogidos en el momento exacto del examen médico
  • Contexto: Ampliamente utilizado en competiciones de ciencia de datos (como Kaggle) para predicción de enfermedades cardiovasculares
  • Propósito: Investigación y educación en modelos predictivos de salud cardiovascular

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Enfermedad cardiovascular vs. Sano)
  • Dimensión: Multivariante
  • Tipo de características: Mixtas (Enteros, Flotantes y Categóricos codificados)
  • Valores faltantes: No reportados (pero requiere limpieza por errores de entrada)
  • Área de aplicación: Salud y Medicina, Cardiología, Epidemiología
  • Origen: Cribados masivos, lo que implica datos ruidosos y realistas
  • Tamaño: 70,000 registros, adecuado para modelos de aprendizaje profundo y ensemble

⚖️ Ética y Privacidad

El conjunto de datos ha sido desidentificado para proteger la privacidad de los pacientes. La variable id es un identificador numérico sin relación con información personal identificable. 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 presenta desafíos particulares debido a su origen en cribados masivos. Se recomienda:

  • Excluir la variable id del modelado por ser un identificador único sin valor predictivo
  • Convertir la variable age de días a años dividiendo entre 365.25 para mejorar la interpretabilidad
  • Limpiar los datos de presión arterial (ap_hi y ap_lo) eliminando valores imposibles (negativos, cero, > 250 mmHg para sistólica, > 150 mmHg para diastólica)
  • Filtrar valores atípicos en altura y peso (ej. alturas < 100 cm o > 250 cm, pesos < 20 kg o > 200 kg)
  • Verificar la codificación de gender (1=Mujer, 2=Hombre) mediante la distribución de altura y peso
  • Mantener las variables categóricas (cholesterol, gluc) como ordinales sin codificación one-hot excesiva
  • Estandarizar/normalizar las características numéricas (age, height, weight, ap_hi, ap_lo)
  • Utilizar validación cruzada estratificada para evaluar el rendimiento del modelo
  • Considerar técnicas de balanceo de clases si existe desbalanceo en la variable objetivo
  • Realizar un análisis exploratorio exhaustivo para identificar y documentar los valores atípicos y errores de medición

💡 Importancia Clínica

Las enfermedades cardiovasculares (ECV) son la principal causa de muerte a nivel mundial, según la Organización Mundial de la Salud (OMS), con aproximadamente 17.9 millones de muertes anuales. La detección temprana y la identificación de factores de riesgo son fundamentales para la prevención y el manejo de estas enfermedades. Este dataset, con su gran escala (70,000 pacientes) y su origen en cribados masivos, permite:

  • Desarrollar modelos predictivos robustos que identifiquen pacientes en riesgo
  • Evaluar la importancia relativa de factores de riesgo objetivos (edad, presión arterial, colesterol) vs. subjetivos (tabaquismo, alcohol, actividad física)
  • Entrenar modelos con datos realistas que incluyen ruido y errores de medición, aumentando la generalización a entornos clínicos reales
  • Contribuir al desarrollo de sistemas de apoyo a la decisión clínica para la prevención cardiovascular

📖 Cómo citar la fuente original

Cardiovascular Disease Dataset. Registros médicos anonimizados de cribados masivos para la predicción de enfermedades cardiovasculares. Disponible en repositorios públicos (Kaggle).

📚 Referencias Adicionales

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Cardiovascular Disease Dataset)

  • Limpieza inicial y eliminación de variables no predictivas:
    • Eliminación de la columna id (identificador único) por no aportar valor predictivo y evitar sobreajuste.
    • Conversión de la variable age de días a años (división por 365.25) para facilitar la interpretación clínica y mejorar la legibilidad del modelo.
  • Filtrado de errores de digitación (Outliers imposibles):
    • Aplicación de filtros médicos rigurosos para eliminar registros con valores biológicamente imposibles:
      • Presión arterial: Sistólica (60-240 mmHg), Diastólica (40-160 mmHg), con consistencia ap_hi > ap_lo.
      • Antropometría: Altura (100-250 cm), Peso (30-200 kg).
    • Eliminación de registros que no cumplen los criterios de plausibilidad fisiológica.
  • Estandarización y optimización de tipos de datos:
    • Conversión forzada de todas las variables categóricas y enteras a tipo entero (int) para eliminar decimales espurios y optimizar memoria.
    • Variables convertidas: gender, cholesterol, gluc, smoke, alco, active, cardio, age, height, ap_hi, ap_lo.
    • weight preservada como float para mantener precisión en mediciones de peso corporal.
  • Submuestreo estratificado para reducción del dataset:
    • Reducción del dataset a 1,000 ejemplos representativos mediante muestreo estratificado.
    • Uso de train_test_split con parámetro stratify para preservar exactamente la proporción original de clases (desbalance cardiovascular).
    • Semilla fija (random_state=42) para garantizar reproducibilidad científica de la muestra.
    • Verificación de integridad con diferencia máxima < 1% en proporción de clases.
  • Generación de documentación completa:
    • Creación del archivo leyenda_cardio.txt con la semántica detallada de todas las variables.
    • Documentación de variables categóricas (gender: 1=Mujeres, 2=Hombres; cholesterol, gluc: 1=Normal, 2=Por encima, 3=Muy por encima).
    • Notas sobre variables binarias subjetivas (0=No, 1=Sí): smoke, alco, active.
    • Registro detallado del número de registros eliminados en el filtrado de outliers.

📊 Resultado: Dataset reducido de 1,000 pacientes (muestra estratificada del dataset original de ~70,000 registros) con 11 variables predictoras (mixtas: categóricas codificadas y numéricas) y 1 variable objetivo binaria (cardio). Desbalance de clases preservado (~65% sin enfermedad cardiovascular / ~35% con enfermedad cardiovascular) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos cardiovasculares.

🏥 Fuente: Cardiovascular Disease Dataset (disponible en UCI Machine Learning Repository y plataformas de datos abiertos).

🔬 Procesamiento clave: Filtrado de errores de digitación en presión arterial y antropometría; conversión de edad a años; reducción estratificada a 1,000 ejemplos con preservación exacta del desbalance.

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

🎯 Variable objetivo: cardio (1 = Presencia de enfermedad cardiovascular, 0 = Ausencia).

📋 Diccionario de Datos Detallado

Variable Descripción Clínica Tipo Rango / Categorías Unidad ¿Objetivo?
gender Sexo del paciente Categórico 1: Femenino, 2: Masculino N/A No
cholesterol Nivel de colesterol (ordinal) Categórico 1: Normal, 2: Elevado, 3: Muy elevado N/A No
gluc Nivel de glucosa (ordinal) Categórico 1: Normal, 2: Elevada, 3: Muy elevada N/A No
age Edad del paciente Numérico 39 - 64 años No
height Estatura del paciente Numérico 105 - 193 cm No
weight Peso corporal del paciente Numérico 41 - 135 kg No
ap_hi Presión arterial sistólica Numérico 90 - 210 mm Hg No
ap_lo Presión arterial diastólica Numérico 60 - 126 mm Hg No
smoke Hábito tabáquico (fumador) Binario 0: No, 1: Sí N/A No
alco Consumo de alcohol Binario 0: No, 1: Sí N/A No
active Actividad física regular Binario 0: No, 1: Sí N/A No
cardio Enfermedad cardiovascular (objetivo) Binario 0: Ausencia, 1: Presencia N/A
12 Variables totales
5 Numéricas
3 Categóricas
4 Binarias
Objetivo: Enfermedad Cardiovascular (cardio)
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 Enfermedad Cardiovascular. Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados clínicos.

gender Categórica
Código Significado
1Femenino
2Masculino
cholesterol Categórica
Código Significado
1Normal - ✓ Riesgo bajo
2Por encima de lo normal - ⚠ Riesgo moderado
3Muy por encima de lo normal - ✗ Alto riesgo cardiovascular
🚨

Importancia clínica: El colesterol elevado es un factor de riesgo modificable clave para enfermedades cardiovasculares.

gluc Categórica
Código Significado
1Normal - ✓ Glucosa controlada
2Por encima de lo normal - ⚠ Prediabetes / Riesgo
3Muy por encima de lo normal - ✗ Alto riesgo / Diabetes
🚨

Importancia clínica: La hiperglucemia es un factor de riesgo cardiovascular y diabetes tipo 2.

Variables Binarias Binario

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

smoke Hábito tabáquico (0: No fuma, 1: Sí fuma)
alco Consumo de alcohol (0: No consume, 1: Sí consume)
active Actividad física regular (0: No activo, 1: Activo)
cardio 🎯 Variable Objetivo: Enfermedad cardiovascular (0: Ausencia, 1: Presencia)
ℹ️

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

💡

Factores de estilo de vida: smoke, alco y active son datos subjetivos reportados por el paciente.

📊
Variables categóricas: 3
  • gender (2 categorías)
  • cholesterol (3 niveles ordinales)
  • gluc (3 niveles ordinales)
🎯
Variables binarias: 4
  • smoke (Fumador)
  • alco (Consumo alcohol)
  • active (Actividad física)
  • 🎯 cardio (Objetivo - Enfermedad cardiovascular)
📈
Variables numéricas: 5
  • age (Edad en años)
  • height (Estatura en cm)
  • weight (Peso en kg)
  • ap_hi (Presión sistólica)
  • ap_lo (Presión diastólica)
⚠️
Recomendaciones Clínicas:
  • Factores de riesgo cardiovascular: edad, ap_hi, cholesterol, gluc, smoke
  • Hipertensión: ap_hi > 140 mm Hg o ap_lo > 90 mm Hg es clínicamente significativo
  • Colesterol: Código 3 (muy elevado) es un fuerte predictor de enfermedad cardiovascular
  • Glucosa: Código 3 (muy elevada) se asocia con diabetes y riesgo cardiovascular
  • Edad: Originalmente en días, convertida a años para mejor interpretación

🔬 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

  • ap_lo > 100 → ap_hi > 115 (Diastólica alta → Sistólica más alta)
  • ap_lo > 80 → ap_hi > 105 (Diastólica elevada → Sistólica elevada)
  • ap_hi < 90 → ap_lo < 70 (Sistólica baja → Diastólica baja)
  • ap_hi > 180 → active = 0 (Hipertensión severa → inactivo)
  • weight > 150 → active = 0 (Peso extremo → inactivo)
  • weight < 45 → cholesterol = 1 (Peso bajo → colesterol normal-bajo)
  • weight < 45 → gluc = 1 (Peso bajo → glucosa normal)
  • gluc == 3 AND chol == 3 → cardio = 1 (Alto riesgo cardiovascular)
  • cardio == 0 → ap_hi < 180 (Sin enfermedad → PA sistólica no extrema)
  • height > 190 → gender = 2 (Masculino, altura > 190 cm)
  • height < 150 → gender = 1 (Femenino, altura < 150 cm)

⚙️ 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 - - - - - - - - - - - - - -
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.029 7376 0.997 0.960 0.960 9.244 0.115 0.550 0.028 0.965 61.464 0.586 0 0.535
SMOTE RSB* + Ruido Gaussiano + Reglas 1.447 7376 0.972 0.950 0.950 8.951 0.115 0.550 0.030 0.960 164.243 0.586 0 0.512
CTGAN 1.119 9953 0.729 0.713 0.715 3.999 0.147 0.000 0.015 0.920 333.098 0.037 0 0.486
CTGAN + Reglas del Dominio 1.187 9953 0.733 0.724 0.725 4.132 0.147 0.000 0.016 0.919 466.962 0.037 0 0.457
TVAE 1.331 9880 0.809 0.714 0.715 4.661 0.184 0.060 0.018 0.958 179.988 0.019 0 0.491
TVAE + Reglas del Dominio 1.369 9880 0.813 0.693 0.695 4.468 0.184 0.060 0.018 0.958 311.976 0.019 0 0.468
OOF PSO para Aumento 1 10000 0.710 0.598 0.625 0.000 0.713 0.000 0.238 0.690 115.065 0.173 0 0.536
OOF PSO para Aumento + Reglas 1.044 10000 0.727 0.606 0.625 0.906 0.713 0.000 0.232 0.720 246.695 0.158 0 0.418
SMOTE RSB* Refinado 1.116 7874 0.999 0.990 0.990 9.796 0.122 0.704 0.026 0.962 66.105 0.503 0 0.509 🏆
SMOTE RSB* Refinado + Reglas 1.567 7874 0.973 0.975 0.975 9.448 0.122 0.704 0.029 0.957 183.263 0.504 0 0.497
Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.796, AUC: 0.999, F1: 0.990, MIA: 0.509). 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.023 8376 1.000 0.995 0.995 7.590 0.105 0.610 0.022 0.968 115.301 0.585 0 0.540
SMOTE RSB* + Ruido Gaussiano + Reglas 1.380 8376 1.000 1.000 1.000 9.577 0.105 0.610 0.024 0.963 216.699 0.585 0 0.499
CTGAN 1.105 10953 1.000 0.990 0.990 4.786 0.133 0.000 0.013 0.927 402.478 0.034 188 0.464
CTGAN + Reglas del Dominio 1.167 10953 1.000 0.990 0.990 4.784 0.133 0.000 0.013 0.926 534.500 0.034 188 0.466
TVAE 1.293 10880 1.000 0.990 0.990 3.733 0.168 0.087 0.014 0.963 247.233 0.018 190 0.498
TVAE + Reglas del Dominio 1.327 10880 1.000 0.990 0.990 2.931 0.168 0.087 0.014 0.963 378.972 0.018 190 0.498
OOF PSO para Aumento 1.002 11000 1.000 0.995 0.995 4.000 0.639 0.000 0.198 0.711 181.858 0.155 186 0.519
OOF PSO para Aumento + Reglas 1.038 11000 1.000 0.995 0.995 4.828 0.639 0.000 0.188 0.737 313.171 0.142 186 0.510
SMOTE RSB* Refinado 1.099 8874 1.000 1.000 1.000 9.798 0.112 0.771 0.021 0.966 125.850 0.503 0 0.521 🏆
SMOTE RSB* Refinado + Reglas 1.484 8874 1.000 0.995 0.995 7.784 0.112 0.771 0.023 0.961 243.599 0.503 0 0.481
Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.798, AUC: 1.000, F1: 1.000, MIA: 0.521). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_19
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* 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 Cardiovascular Disease (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32932706.v1