Acerca de CódigoMDB

Desarrollador independiente con experiencia en la creación de soluciones web a medida.

Suscíbete & Sígueme

Metodología TDS

image
image
image
image

Metodología para la Generación y Evaluación de Datos Sintéticos Tabulares: Metodología TDS.

Este trabajo propone una metodología para generar y evaluar datos sintéticos tabulares, especialmente a partir de conjuntos desbalanceados, ilustrada con un caso de estudio en Unidades de Cuidados Intensivos. La metodología comprende: (1) balanceo de clases mediante sobremuestreo, seleccionando la mejor técnica con una función de calidad; (2) generación de datos sintéticos a partir del conjunto balanceado óptimo, utilizando SMOTE RSB* Adaptado con Ruido Gaussiano y CTGAN; y (3) una función de calidad novedosa, "TabDSFidelity", que integra s imilitud de distribución, preservación de correlaciones y utilidad predictiva para guiar la selección en cada etapa. Aplicada a diez conjuntos de datos, la metodología demostró que el uso de datos sintéticos seleccionados por una función de calidad mejora significativamente el rendimiento de modelos de clasificación comparado con el empleo solamente de los datos originales. SMOTE RSB* Adaptado con Ruido Gaussiano generó de manera consistente los datos de mayor calidad según TabDSFidelity en este estudio. Se concluye que la metodología propuesta ofrece un marco eficaz para mitigar la escasez y el desbalance de datos, facilitando la creación de modelos más precisos y robustos.

Conjuntos de Datos:

Los datos originales utilizados en este estudio fueron obtenidos a través de una aplicación web denominada "Generador de Conjuntos de Datos Dinámicos para el Servicio de Terapia Intensiva". Esta aplicación está diseñada para almacenar y gestionar información detallada de pacientes ingresados en Unidades de Cuidados Intensivos (UCI), permitiendo a los investigadores construir conjuntos de datos personalizados adaptados a sus necesidades específicas. Se generaron diez conjuntos de datos distintos (CD1 a CD10), cada uno correspondiente a una condición médica específica de pacientes ingresados en la UCI:

  • CD1: Neumonía Grave Adquirida en la Comunidad.
  • CD2: Enfermedad Pulmonar Obstructiva Crónica (EPOC) Exacerbada por Infección Respiratoria.
  • CD3: Neumonía Nosocomial.
  • CD4: Cetoacidosis Diabética.
  • CD5: Contusión Cerebral.
  • CD6: Hemorragia Subaracnoidea (HSA) Postraumática.
  • CD7: Infección Urinaria.
  • CD8: Meningoencefalitis Bacteriana.
  • CD9: Síndrome de Weil.
  • CD10: SPO de craniectomía y evacuación de Hematoma subdural.

Tabla 1. Características de los Conjuntos de Datos Originales del Caso de Estudio (UCI).

Conjunto de Datos

No. de Ejem.

No. de Atrib.

No. Atrib. Cat.

Proporción Clase Positiva ("Fallecido" = 1)

Proporción de Desbalance

Tipo de Desbalance

CD1

548

24

20

0.30

2.36

Mínimo

CD2

216

26

22

0.17

4.68

Severo

CD3

548

21

17

0.30

2.36

Mínimo

CD4

117

26

20

0.12

6.80

Severo

CD5

206

20

16

0.32

2.12

Mínimo

CD6

206

39

35

0.32

2.12

Mínimo

CD7

239

33

29

0.37

1.68

Mínimo

CD8

39

24

20

0.25

2.90

Mínimo

CD9

69

34

30

0.26

2.83

Mínimo

CD10

206

46

42

0.32

2.12

Mínimo

Promedio Aproximado

239

29

25

0.27

2.99

Mínimo

Técnicas de Balanceo Empleadas:

  • Random Oversampling: es una técnica de sobremuestreo que busca aumentar artificialmente el número de casos de la clase minoritaria a través de la replicación aleatoria de algunos de sus ejemplos existentes. En esencia, esta técnica aumenta el número de ejemplos de la clase menos representada hasta que iguala o supera el número de ejemplos de la clase mayoritaria.
  • SMOTE (Synthetic Minority Oversampling Technique): técnica avanzada para tratar el desbalance de clases en problemas de clasificación, generando casos sintéticos de la clase minoritaria en lugar de simplemente replicar las existentes, como Random Oversampling. Este método identifica los casos de la clase minoritaria y calcula las distancias a sus vecinos más cercanos dentro de la misma clase, seleccionando un conjunto de estos vecinos para cada caso. Luego, genera nuevos ejemplos mediante interpolación, creando puntos intermedios entre los casos originales y sus vecinos seleccionados. Este proceso enriquece el conjunto de datos con ejemplos que representan mejor la variabilidad de la clase minoritaria, mejorando la generalización del modelo. Finalmente, el nuevo conjunto de datos combina estos ejemplos sintéticos con las originales de ambas clases, logrando un equilibrio que favorece el rendimiento en modelos de aprendizaje automático.
  • Borderline SMOTE: es una variante de SMOTE que se centra en los casos de la clase minoritaria que están cerca del límite de decisión, es decir, las que tienen más probabilidad de ser clasificadas incorrectamente. Genera casos sintéticos únicamente en esta región para mejorar la separación entre clases y reducir el riesgo de confusión entre ellas.
  • ADASYN (Adaptive Synthetic Sampling Approach): ADASYN es una variante de SMOTE, que a diferencia de SMOTE estándar, genera más casos sintéticos para las regiones donde los casos de la clase minoritaria son más difíciles de clasificar. Esto se logra ajustando la cantidad de ejemplos generados de manera adaptativa, en función de la distribución local y la dificultad percibida.
  • SMOTE RSB* Adaptado con Restricciones del Dominio: Esta técnica de sobremuestreo, adaptación de SMOTE RSB*, que incorpora restricciones específicas del dominio médico para garantizar que los ejemplos sintéticos generados sean realistas y coherentes con el conocimiento clínico. A diferencia de las técnicas de sobremuestreo convencionales, que generan ejemplos sintéticos sin tener en cuenta las relaciones y restricciones entre las variables, esta adaptación de SMOTE utiliza reglas y límites definidos para guiar el proceso de generación de datos.

Tabla 2. Puntuaciones TabDSFidelity para Conjuntos de Datos Sobremuestreados (por Técnica y CD Original).

Conjunto de Datos

Sobremuestreo Aleatorio

SMOTE

Borderline SMOTE

ADASYN

SMOTE RSB* Adaptado

Técnica Seleccionada

Puntuación TabDSFidelity

CD1

11.55

14.32

0.64

6.18

13.07

SMOTE

14.32

CD2

12.99

9.72

9.89

16.85

2.88

ADASYN

16.85

CD3

6.47

10.89

0.69

13.95

13.17

ADASYN

13.95

CD4

13.84

5.27

13.58

15.52

4.65

ADASYN

15.52

CD5

6.99

14.53

13.89

0.77

18.04

SMOTE RSB* Adaptado

18.04

CD6

18.69

15.53

11.68

6.55

2.58

Sobremuestreo Aleatorio

18.69

CD7

8.13

9.62

17.58

5.11

3.49

Borderline Smote

17.58

CD8

14.76

11.69

11.69

2

16.44

SMOTE RSB* Adaptado

16.44

CD9

17.85

8.40

1.92

11.56

6.15

Sobremuestreo Aleatorio

17.85

CD10

12.31

4.76

3.83

1.98

17.61

SMOTE RSB* Adaptado

17.61

Tabla 3. Características de los Conjuntos de Datos Sobremuestreados Seleccionados en el Caso de Estudio.

Conjunto de Datos

Técnica de Sobremuestreo Seleccionada

Número de Ejemplos Clase Positiva ("Fallecido" = 1)

Número de Ejemplos Clase Negativa ("Fallecido" = 0)

Proporción de Desbalance

CD1

SMOTE

289

289

1.00

CD2

ADASYN

125

133

1.06

CD3

ADASYN

290

289

1.00

CD4

ADASYN

79

76

1.03

CD5

SMOTE RSB* Adaptado

98

105

1.07

CD6

Sobremuestreo Aleatorio

105

105

1.00

CD7

Borderline Smote

114

114

1.00

CD8

SMOTE RSB* Adaptado

21

22

1.04

CD9

Sobremuestreo Aleatorio

38

38

1.00

CD10

SMOTE RSB* Adaptado

98

105

1.07

Generación de Datos Sintéticos:

Enfoque 1 (SMOTE RSB* Adaptado + Ruido Gaussiano):

Entrada:

D_orig: Conjunto de datos original (Dataset tabular).
N_total: Número total de muestras sintéticas a generar.
Constraints: Estructura de datos con restricciones del dominio (límites numéricos, valores categóricos permitidos, escalas de ruido, probabilidad de cambio).
Proportions: Diccionario con proporciones de N_total para cada técnica {Noise, Interpolation, Variation}.
TargetCol, ApacheCol: Nombres de columnas específicas necesarias para la lógica de variación.

Salida:

D_ synthetic: Muestras sintéticas.
D_augmented: Conjunto de datos combinado (D_orig + D_ synthetic).

Procedimiento:

1.	// Inicialización
2.	NumCols, BinCols ← Identificar_Columnas_Por_Tipo(D_orig, TargetCol)
3.	N_noise ← int(N_total * Proportions.Noise)
4.	N_interp ← int(N_total * Proportions.Interpolation)
5.	N_var ← int(N_total * Proportions.Variation)
6.	// Generación por Técnicas Separadas
7.	Synth_Noise ← Generar_Via_Ruido_Gaussiano(D_orig, N_noise, NumCols, Constraints)
    o	(Aplica ruido gaussiano controlado a copias de filas existentes, respeta límites)
8.	Synth_Interp ← Generar_Via_Interpolacion_Adaptada(D_orig, N_interp, NumCols, Constraints)
    o	(Interpola entre vecinos cercanos, aplica límites y reglas de dominio)
9.	Synth_Var ← Generar_Via_Variacion_Categorica(D_orig, N_var, BinCols, TargetCol, ApacheCol, Constraints)
    o	(Modifica probabilísticamente variables binarias/categóricas, usando lógica específica y valores permitidos)
10.	// Combinación y Post-procesamiento Final
11.	D_synthetic_combined ← Concatenar(Synth_Noise, Synth_Interp, Synth_Var)
12.	D_synthetic_combined ← Aplicar_Restricciones_Globales(D_synthetic_combined, NumCols, Constraints.NumLimits)
    o	(Asegura que todas las filas sintéticas respeten límites finales, ej., Edad, Tiempo de Ventilación)
13.	D_augmented ← Concatenar(D_orig, D_synthetic_combined)
14.	// Opcional: Guardar Resultados
15.	Guardar_Archivo(D_synthetic_combined, ruta_archivo_sintetico_solo)
16.	Guardar_Archivo(D_augmented, ruta_archivo_combinado)
17.	RETORNAR D_augmented, D_synthetic_combined

Enfoque 2 (CTGAN):

Entrada:

D_orig: Conjunto de datos original (DataFrame tabular).
NumCols, CatCols: Identificación de columnas numéricas y categóricas.
Hyperparams: Estructura de datos con hiperparámetros para CTGAN.
N_synth: Número deseado de muestras sintéticas a generar.
    

Salida:

D_synth: Conjunto de datos sintético generado y finalizado.
D_augmented: Conjunto de datos combinado (D_orig + D_synth).

Procedimiento:

1.	D_orig_copy ← Guardar_Copia(D_orig) // Preservar original no transformado
2.	// Preprocesamiento (modifica D_orig en una copia de trabajo)
3.	D_proc, PreprocessingModels ← Preparar_Datos_Para_CTGAN(D_orig, NumCols, CatCols)
    o	(Imputación de faltantes en CatCols, conversión de tipos, transformaciones y escalado de NumCols)
4.	// Entrenamiento del Modelo CTGAN
5.	Model_CTGAN ← Inicializar_Modelo_CTGAN(Hyperparams)
6.	Model_CTGAN ← Entrenar(Model_CTGAN, D_proc, CatCols)
7.	// Generación de Muestras Sintéticas
8.	D_synth_raw ← Muestrear(Model_CTGAN, N_synth)
9.	// Postprocesamiento de Datos Sintéticos
10.	D_synth ← Finalizar_Datos_Sintéticos(D_synth_raw, NumCols, PreprocessingModels)
    o	(Aplicar transformaciones inversas, redondear a entero, aplicar límite inferior a NumCols)
11.	// Combinación con Datos Originales
12.	D_augmented ← Concatenar(D_orig_copy, D_synth) // Combina la copia original con el sintético finalizado
13.	// Opcional: Guardar Resultados 
14.	Guardar_Archivo(D_synth, ruta_archivo_sintetico)
15.	Guardar_Archivo(D_augmented, ruta_archivo_combinado)
16.	RETORNAR D_synth, D_augmented

Tabla 4. Selección del Método Óptimo de Generación Sintética y Características del Conjunto Sintético de "Mejor Fidelidad" (Evaluado con TabDSFidelity).

Conjunto de Datos

Técnica de Generación de Datos Sintéticos Óptima

AUC-ROC

F1-score

Accuracy

TabDSFidelity

CD1

SMOTE RSB* Adaptado con Ruido Gaussiano

0.748

0.715

0.722

19.817

CD2

SMOTE RSB* Adaptado con Ruido Gaussiano

0.770

0.836

0.833

19.940

CD3

SMOTE RSB* Adaptado con Ruido Gaussiano

0.675

0.679

0.686

19.777

CD4

SMOTE RSB* Adaptado con Ruido Gaussiano

0.908

0.877

0.866

18.042

CD5

SMOTE RSB* Adaptado con Ruido Gaussiano

0.652

0.696

0.692

19.860

CD6

SMOTE RSB* Adaptado con Ruido Gaussiano

0.621

0.603

0.634

18.223

CD7

SMOTE RSB* Adaptado con Ruido Gaussiano

0.866

0.731

0.737

19.931

CD8

SMOTE RSB* Adaptado con Ruido Gaussiano

0.809

0.800

0.800

19.997

CD9

TVAE

0.861

0.888

0.888

17.452

CD10

SMOTE RSB* Adaptado con Ruido Gaussiano

0.676

0.670

0.673

18.326

Tabla 5. Rendimiento Comparativo del Modelo de Red Neuronal (Original vs. Mejor Balanceado vs. Mejor Sintético).

Conjunto de Datos

Original

Balanceado de mejor fidelidad

Sintético de mejor fidelidad

AUC-ROC

F1

Accuracy

AUC-ROC

F1

Accuracy

AUC-ROC

F1

Accuracy

CD1

0.429

0.585

0.671

0.521

0.572

0.562

0.696

0.629

0.620

CD2

0.659

0.757

0.833

0.765

0.772

0.759

0.555

0.689

0.666

CD3

0.537

0.577

0.700

0.519

0.646

0.671

0.637

0.628

0.613

CD4

0.692

0.773

0.733

0.692

0.851

0.833

0.903

0.851

0.833

CD5

0.460

0.597

0.673

0.539

0.608

0.615

0.633

0.624

0.634

CD6

0.544

0.550

0.634

0.421

0.350

0.365

0.569

0.608

0.615

CD7

0.583

0.458

0.541

0.587

0.591

0.590

0.727

0.702

0.704

CD8

0.714

0.616

0.600

0.571

0.515

0.500

0.523

0.321

0.300

CD9

0.446

0.525

0.500

0.507

0.481

0.500

0.784

0.888

0.888

CD10

0.510

0.492

0.576

0.482

0.492

0.576

0.571

0.586

0.576

image

Fig. 1 - Comparación del desempeño del modelo de Red Neuronal en conjuntos de datos originales, balanceados y sintéticos.

image

Fig. 2 - Comparación de Distribuciones de la variable “Puntaje Apache”: Datos Originales vs. Sintéticos (CD1, SMOTE RSB* Adaptado con Ruido Gaussiano).

image

Fig. 3 - Comparación de Distribuciones de la variable “Fallecido”: Datos Originales vs. Sintéticos (CD1, SMOTE RSB* Adaptado con Ruido Gaussiano).

Resultados:

El análisis del impacto en el modelo de clasificación revela la eficacia práctica y los matices de la metodología. El hallazgo principal es la mejora sustancial y promedio en el rendimiento: un aumento del 22.35% en el AUC-ROC mejora el clasificador, que pasa de tener un rendimiento casi aleatorio a ofrecer predicciones con una capacidad de predicción útil y aplicable en la práctica clínica. Sin embargo, un análisis más profundo de los resultados por conjunto de datos es revelador. Mientras que la metodología produjo mejoras drásticas en la mayoría de los casos, se observa una disminución en el rendimiento en dos de los diez conjuntos de datos (CD2 y CD8).

Investigación Anterior

Neumonía Grave de la Comunidad

Investigación Siguiente

TabDSFidelity