Conjunto de datos de reconocimiento óptico transformado a clasificación binaria desbalanceada (Dígito 8 vs Resto). Consta de 64 variables enteras (rango 0-16) que representan la intensidad de tinta en una cuadrícula espacial 8x8.
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.
| Clase | Precisión | Recall | F1-Score | Soporte |
|---|---|---|---|---|
| Clase 0 | 0.90 | 0.98 | 0.94 | 180 |
| Clase 1 | 0.25 | 0.05 | 0.08 | 20 |
| Accuracy | 0.89 | |||
| Macro Avg | 0.58 | 0.52 | 0.51 | 200 |
| Weighted Avg | 0.84 | 0.89 | 0.86 | 200 |
| Clase | Precisión | Recall | F1-Score | Soporte |
|---|---|---|---|---|
| Clase 0 | 0.99 | 0.97 | 0.98 | 180 |
| Clase 1 | 0.76 ⬆ +0.51 | 0.95 ⬆ +0.90 | 0.84 ⬆ +0.76 | 20 |
| Accuracy | 0.96 ⬆ +0.07 | |||
| Macro Avg | 0.88 ⬆ +0.30 | 0.96 ⬆ +0.44 | 0.91 ⬆ +0.40 | 200 |
| Weighted Avg | 0.97 ⬆ +0.13 | 0.96 ⬆ +0.07 | 0.97 ⬆ +0.11 | 200 |
El conjunto de datos de Reconocimiento de Dígitos Manuscritos basado en Lápiz (Pen-Based Recognition of Handwritten Digits) contiene 5,620 instancias de dígitos manuscritos extraídos de un formulario preimpreso utilizando programas de preprocesamiento de NIST. Un total de 43 personas contribuyeron a la recolección de datos: 30 para el conjunto de entrenamiento y 13 diferentes para el conjunto de prueba. Los mapas de bits de 32×32 píxeles se dividen en bloques no superpuestos de 4×4 y se cuenta el número de píxeles encendidos en cada bloque, generando una matriz de entrada de 8×8 donde cada elemento es un entero en el rango 0..16. Esta reducción de dimensionalidad proporciona invarianza a pequeñas distorsiones. El objetivo es clasificar los dígitos manuscritos en 10 clases (0-9).
El reconocimiento de dígitos manuscritos es un problema clásico en el campo del reconocimiento de patrones y el aprendizaje automático. Este dataset fue creado como parte de una investigación sobre métodos de combinación de múltiples clasificadores para mejorar la precisión del reconocimiento. La aplicación práctica del reconocimiento de dígitos manuscritos incluye:
El preprocesamiento de NIST (Instituto Nacional de Estándares y Tecnología de EE.UU.) es un estándar en el campo, y la reducción de 32×32 a 8×8 mediante bloques de 4×4 es una técnica efectiva para reducir dimensionalidad mientras se mantiene la información estructural de los dígitos.
El dataset contiene 5,620 instancias con 64 atributos (63 variables predictoras y 1 variable objetivo). Las características son de tipo entero en el rango 0..16 y no presentan valores faltantes. La variable objetivo representa el dígito manuscrito (0-9).
Referencia: Garris, M. D., et al. (1994). NIST Form-Based Handprint Recognition System, NISTIR 5469.
| Variable | Tipo | Descripción | Rango |
|---|---|---|---|
| Attribute1 - Attribute64 | Entero | Número de píxeles encendidos en cada bloque de 4×4 | 0 - 16 |
| Variable Objetivo | |||
| class | Categórica (Target) | Dígito manuscrito (0-9) | 0,1,2,3,4,5,6,7,8,9 |
| Dígito | Entrenamiento | Prueba |
|---|---|---|
| 0 | 376 | 178 |
| 1 | 389 | 182 |
| 2 | 380 | 177 |
| 3 | 389 | 183 |
| 4 | 387 | 181 |
| 5 | 376 | 182 |
| 6 | 377 | 181 |
| 7 | 387 | 179 |
| 8 | 380 | 174 |
| 9 | 382 | 180 |
Total: 4,494 entrenamiento, 1,126 prueba
El trabajo fundamental que describe los métodos de combinación de múltiples clasificadores aplicados al reconocimiento de dígitos manuscritos es:
Kaynak, C. (1995). Methods of Combining Multiple Classifiers and Their Applications to Handwritten Digit Recognition. MSc Thesis, Institute of Graduate Studies in Science and Engineering, Bogazici University.
Garris, M. D., Blue, J. L., Candela, G. T., Dimmick, D. L., Geist, J., Grother, P. J., Janet, S. A., & Wilson, C. L. (1994). NIST Form-Based Handprint Recognition System. NISTIR 5469. National Institute of Standards and Technology.
El conjunto de datos contiene dígitos manuscritos anonimizados que no contienen información personal identificable. Los participantes son referidos únicamente por su contribución a los conjuntos de entrenamiento y prueba. Restricción de confidencialidad: 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.
Este conjunto de datos es un clásico en el reconocimiento de dígitos manuscritos y es ideal para clasificación multiclase. Se recomienda:
El reconocimiento de dígitos manuscritos es un problema fundamental en el campo del aprendizaje automático y la visión por computadora. Este dataset ha sido utilizado como referencia en numerosas investigaciones debido a:
Este dataset ha sido fundamental para el desarrollo de técnicas de ensemble y combinación de clasificadores, que son ampliamente utilizadas en aplicaciones del mundo real como la lectura automática de cheques y el procesamiento de formularios.
Kaynak, C. (1995). Methods of Combining Multiple Classifiers and Their Applications to Handwritten Digit Recognition. MSc Thesis, Institute of Graduate Studies in Science and Engineering, Bogazici University. UCI Machine Learning Repository - Pen-Based Recognition of Handwritten Digits. https://archive.ics.uci.edu/ml/datasets/Pen-Based+Recognition+of+Handwritten+Digits
train_test_split con parámetro stratify para preservar exactamente la proporción original de clases (desbalance de dígito 8).📊 Resultado: Dataset de 5,620 dígitos manuscritos (con versión reducida estratificada de 1,000 ejemplos) con 64 variables predictoras (intensidades de píxeles en cuadrícula 8x8) y 1 variable objetivo binaria (is_digit_8). Desbalance preservado (~90% otros dígitos / ~10% dígito 8) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de reconocimiento de patrones y visión por computador, donde la detección de una clase específica en imágenes de baja resolución es fundamental.
🔢 Fuente: Optical Recognition of Handwritten Digits Dataset (UCI Machine Learning Repository) - Dígitos manuscritos de 0 a 9 en imágenes de 8x8.
🖼️ Estructura de imagen: 64 píxeles (px_0 a px_63) en cuadrícula 8x8, cada uno con intensidad de tinta de 0 a 16 (bloques de 4x4 píxeles originales).
🎯 Variable objetivo: is_digit_8 (1 = El dígito es 8, 0 = Es cualquier otro dígito: 0-7, 9).
📁 Leyenda disponible: Archivo leyenda_handwritten_digits.txt con descripción completa de la variable objetivo, mapa de la cuadrícula de píxeles, y estadísticas del conjunto.
🧹 Limpieza aplicada: Fusión de archivos .tra y .tes, transformación de multiclase a binaria, eliminación de variable original para evitar Data Leakage, estandarización de tipos, reducción estratificada a 1,000 ejemplos.
⚠️ Prevención de Data Leakage: Eliminación intencional de la variable class multiclase para evitar que el modelo aprenda la relación trivial entre la clase original y el target binario.
| Variable | Descripción | Tipo | Rango / Categorías | Unidad | ¿Objetivo? |
|---|---|---|---|---|---|
px_0 |
Intensidad de tinta - Bloque (0,0) - Esquina superior izquierda | Numérico | 0 - 0 | píxeles | No |
px_1 |
Intensidad de tinta - Bloque (0,1) | Numérico | 0 - 7 | píxeles | No |
px_2 |
Intensidad de tinta - Bloque (0,2) | Numérico | 0 - 16 | píxeles | No |
px_3 |
Intensidad de tinta - Bloque (0,3) | Numérico | 0 - 16 | píxeles | No |
px_4 |
Intensidad de tinta - Bloque (0,4) | Numérico | 0 - 16 | píxeles | No |
px_5 |
Intensidad de tinta - Bloque (0,5) | Numérico | 0 - 16 | píxeles | No |
px_6 |
Intensidad de tinta - Bloque (0,6) | Numérico | 0 - 16 | píxeles | No |
px_7 |
Intensidad de tinta - Bloque (0,7) - Esquina superior derecha | Numérico | 0 - 15 | píxeles | No |
px_8 |
Intensidad de tinta - Bloque (1,0) | Numérico | 0 - 1 | píxeles | No |
px_9 |
Intensidad de tinta - Bloque (1,1) | Numérico | 0 - 15 | píxeles | No |
px_10 |
Intensidad de tinta - Bloque (1,2) | Numérico | 0 - 16 | píxeles | No |
px_11 |
Intensidad de tinta - Bloque (1,3) | Numérico | 0 - 16 | píxeles | No |
px_12 |
Intensidad de tinta - Bloque (1,4) | Numérico | 0 - 16 | píxeles | No |
px_13 |
Intensidad de tinta - Bloque (1,5) | Numérico | 0 - 16 | píxeles | No |
px_14 |
Intensidad de tinta - Bloque (1,6) | Numérico | 0 - 16 | píxeles | No |
px_15 |
Intensidad de tinta - Bloque (1,7) | Numérico | 0 - 13 | píxeles | No |
px_16 |
Intensidad de tinta - Bloque (2,0) | Numérico | 0 - 2 | píxeles | No |
px_17 |
Intensidad de tinta - Bloque (2,1) | Numérico | 0 - 16 | píxeles | No |
px_18 |
Intensidad de tinta - Bloque (2,2) | Numérico | 0 - 16 | píxeles | No |
px_19 |
Intensidad de tinta - Bloque (2,3) | Numérico | 0 - 16 | píxeles | No |
px_20 |
Intensidad de tinta - Bloque (2,4) | Numérico | 0 - 16 | píxeles | No |
px_21 |
Intensidad de tinta - Bloque (2,5) | Numérico | 0 - 16 | píxeles | No |
px_22 |
Intensidad de tinta - Bloque (2,6) | Numérico | 0 - 16 | píxeles | No |
px_23 |
Intensidad de tinta - Bloque (2,7) | Numérico | 0 - 5 | píxeles | No |
px_24 |
Intensidad de tinta - Bloque (3,0) | Numérico | 0 - 1 | píxeles | No |
px_25 |
Intensidad de tinta - Bloque (3,1) | Numérico | 0 - 15 | píxeles | No |
px_26 |
Intensidad de tinta - Bloque (3,2) | Numérico | 0 - 16 | píxeles | No |
px_27 |
Intensidad de tinta - Bloque (3,3) | Numérico | 0 - 16 | píxeles | No |
px_28 |
Intensidad de tinta - Bloque (3,4) | Numérico | 0 - 16 | píxeles | No |
px_29 |
Intensidad de tinta - Bloque (3,5) | Numérico | 0 - 16 | píxeles | No |
px_30 |
Intensidad de tinta - Bloque (3,6) | Numérico | 0 - 15 | píxeles | No |
px_31 |
Intensidad de tinta - Bloque (3,7) | Numérico | 0 - 1 | píxeles | No |
px_32 |
Intensidad de tinta - Bloque (4,0) | Numérico | 0 - 0 | píxeles | No |
px_33 |
Intensidad de tinta - Bloque (4,1) | Numérico | 0 - 14 | píxeles | No |
px_34 |
Intensidad de tinta - Bloque (4,2) | Numérico | 0 - 16 | píxeles | No |
px_35 |
Intensidad de tinta - Bloque (4,3) | Numérico | 0 - 16 | píxeles | No |
px_36 |
Intensidad de tinta - Bloque (4,4) | Numérico | 0 - 16 | píxeles | No |
px_37 |
Intensidad de tinta - Bloque (4,5) | Numérico | 0 - 16 | píxeles | No |
px_38 |
Intensidad de tinta - Bloque (4,6) | Numérico | 0 - 13 | píxeles | No |
px_39 |
Intensidad de tinta - Bloque (4,7) | Numérico | 0 - 0 | píxeles | No |
px_40 |
Intensidad de tinta - Bloque (5,0) | Numérico | 0 - 3 | píxeles | No |
px_41 |
Intensidad de tinta - Bloque (5,1) | Numérico | 0 - 15 | píxeles | No |
px_42 |
Intensidad de tinta - Bloque (5,2) | Numérico | 0 - 16 | píxeles | No |
px_43 |
Intensidad de tinta - Bloque (5,3) | Numérico | 0 - 16 | píxeles | No |
px_44 |
Intensidad de tinta - Bloque (5,4) | Numérico | 0 - 16 | píxeles | No |
px_45 |
Intensidad de tinta - Bloque (5,5) | Numérico | 0 - 16 | píxeles | No |
px_46 |
Intensidad de tinta - Bloque (5,6) | Numérico | 0 - 16 | píxeles | No |
px_47 |
Intensidad de tinta - Bloque (5,7) | Numérico | 0 - 2 | píxeles | No |
px_48 |
Intensidad de tinta - Bloque (6,0) | Numérico | 0 - 10 | píxeles | No |
px_49 |
Intensidad de tinta - Bloque (6,1) | Numérico | 0 - 16 | píxeles | No |
px_50 |
Intensidad de tinta - Bloque (6,2) | Numérico | 0 - 16 | píxeles | No |
px_51 |
Intensidad de tinta - Bloque (6,3) | Numérico | 0 - 16 | píxeles | No |
px_52 |
Intensidad de tinta - Bloque (6,4) | Numérico | 0 - 16 | píxeles | No |
px_53 |
Intensidad de tinta - Bloque (6,5) | Numérico | 0 - 16 | píxeles | No |
px_54 |
Intensidad de tinta - Bloque (6,6) | Numérico | 0 - 16 | píxeles | No |
px_55 |
Intensidad de tinta - Bloque (6,7) | Numérico | 0 - 10 | píxeles | No |
px_56 |
Intensidad de tinta - Bloque (7,0) - Esquina inferior izquierda | Numérico | 0 - 0 | píxeles | No |
px_57 |
Intensidad de tinta - Bloque (7,1) | Numérico | 0 - 7 | píxeles | No |
px_58 |
Intensidad de tinta - Bloque (7,2) | Numérico | 0 - 16 | píxeles | No |
px_59 |
Intensidad de tinta - Bloque (7,3) | Numérico | 0 - 16 | píxeles | No |
px_60 |
Intensidad de tinta - Bloque (7,4) | Numérico | 0 - 16 | píxeles | No |
px_61 |
Intensidad de tinta - Bloque (7,5) | Numérico | 0 - 16 | píxeles | No |
px_62 |
Intensidad de tinta - Bloque (7,6) | Numérico | 0 - 16 | píxeles | No |
px_63 |
Intensidad de tinta - Bloque (7,7) - Esquina inferior derecha | Numérico | 0 - 14 | píxeles | No |
is_digit_8 |
Clasificación del dígito manuscrito (objetivo) | Binario | 0: No es 8, 1: Es 8 | N/A | Sí |
Esta sección detalla los códigos y significados de las variables categóricas y binarias presentes en el conjunto de datos de Dígitos Manuscritos (Binary 8 vs All). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados de reconocimiento óptico de caracteres (OCR).
is_digit_8
🎯 Objetivo
| Código | Significado |
|---|---|
| 0 | No es 8 - El dígito escrito es cualquier otro (0-7, 9). Clase mayoritaria (~90.14%) |
| 1 | Es 8 - El dígito escrito es un 8. Clase minoritaria (~9.86%) |
Variable Objetivo: Clasifica si el dígito manuscrito corresponde al número 8 versus cualquier otro dígito.
Formato: 0 = No es 8, 1 = Es 8
is_digit_8
🎯 Variable Objetivo: Clasificación del dígito 8 (0: No, 1: Sí)
Nota: Única variable binaria en el dataset.
px_0 = 0 (Esquina superior izquierda)px_63 = 0 (Esquina inferior derecha)is_digit_8 == 1 → px_35 > 0 (Cintura del 8)is_digit_8 == 1 → px_4 > 0 (Parte superior del 8)is_digit_8 == 1 → px_60 > 0 (Parte inferior del 8)px_11 == 0 → (px_10 > 0) OR (px_13 > 0)px_27 == 16 → px_28 > 0px_20 > 12 → px_28 > 0is_digit_8 == 1 → px_29 ≥ 0is_digit_8 == 1 → px_28 > 0px_35 ≤ 16 (Valor máximo de píxel)px_0 y px_63 son mutuamente excluyentes (no pueden ser ambos altos)px_18 > 10 → px_27 > 0is_digit_8 == 0 → px_36 < 16px_28 > 10 → px_36 > 0| Valor escala | 0.03 |
|---|---|
| Probabilidad Base | 0.1 |
| epochs | 500 |
|---|---|
| batch_size | 50 |
| generator_lr | 0.0002 |
| discriminator_lr | 0.0002 |
| pac | 10 |
| generator_dim | (256, 256) |
| discriminator_dim | (256, 256) |
| embedding_dim | 128 |
| l2scale | 1e-05 |
| epochs | 500 |
|---|---|
| batch_size | 50 |
| embedding_dim | 128 |
| compress_dims | (128, 128) |
| decompress_dims | (128, 128) |
| l2scale | 1e-5 |
| loss_factor | 2 |
| Random Seed | 42 |
|---|---|
| Python | 3.12.12 |
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.
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:
El mejor conjunto de cada etapa fue seleccionado mediante el índice TabDSFidelity.
| 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 | 1082 | 0.993 | 0.955 | 0.960 | 5.545 | 0.077 | 0.429 | 0.372 | 0.952 | 92.645 | 0 | 1082 | 0.515 | |
| Smote | 1 | 1082 | 0.995 | 0.968 | 0.970 | 6.368 | 0.086 | 0.332 | 0.372 | 0.955 | 72.389 | 0.015 | 600 | 0.517 | |
| Borderline SMOTE | 1 | 1082 | 0.985 | 0.957 | 0.960 | 4.221 | 0.083 | 0.364 | 0.372 | 0.956 | 72.370 | 0.017 | 600 | 0.485 | |
| ADASYN | 1.002 | 1081 | 0.989 | 0.951 | 0.955 | 4.284 | 0.082 | 0.359 | 0.371 | 0.958 | 72.186 | 0.017 | 600 | 0.478 | |
| SMOTE RSB* Adaptado | 1.019 | 1072 | 0.999 | 0.990 | 0.990 | 8.697 | 0.081 | 0.337 | 0.364 | 0.954 | 81.322 | 0.022 | 600 | 0.502 | |
| SMOTE RSB* Adaptado + Reglas | 1.019 | 1072 | 0.999 | 0.990 | 0.990 | 8.711 | 0.082 | 0.341 | 0.364 | 0.956 | 78.830 | 0.026 | 600 | 0.463 | 🏆 |
| OOF PSO para Balanceo | 1 | 1082 | 0.992 | 0.935 | 0.945 | 1.365 | 0.207 | 0.173 | 0.372 | 0.715 | 85.822 | 0.138 | 600 | 0.467 | |
| OOF PSO para Balanceo + Reglas | 1 | 1082 | 0.996 | 0.935 | 0.945 | 1.551 | 0.215 | 0.076 | 0.372 | 0.696 | 89.853 | 0.156 | 570 | 0.485 |
| 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.051 | 4400 | 0.984 | 0.974 | 0.975 | 8.904 | 0.103 | 0.289 | 0.352 | 0.955 | 123.579 | 0.044 | 0 | 0.441 | 🏆 |
| SMOTE RSB* + Ruido Gaussiano + Reglas | 1.051 | 4400 | 0.995 | 0.974 | 0.975 | 8.895 | 0.104 | 0.276 | 0.352 | 0.955 | 335.331 | 0.044 | 0 | 0.434 | |
| CTGAN | 1.008 | 10000 | 0.666 | 0.747 | 0.690 | 5.392 | 0.163 | 0.241 | 0.368 | 0.853 | 1367.950 | 0.164 | 0 | 0.450 | |
| CTGAN + Reglas del Dominio | 1.008 | 10000 | 0.615 | 0.728 | 0.665 | 5.018 | 0.163 | 0.240 | 0.368 | 0.851 | 1815.260 | 0.164 | 0 | 0.450 | |
| TVAE | 1.301 | 10000 | 0.988 | 0.954 | 0.950 | 8.402 | 0.136 | 0.248 | 0.275 | 0.913 | 884.406 | 0.102 | 0 | 0.458 | |
| TVAE + Reglas del Dominio | 1.301 | 10000 | 0.986 | 0.958 | 0.955 | 8.397 | 0.136 | 0.246 | 0.275 | 0.912 | 1332.610 | 0.102 | 0 | 0.471 | |
| OOF PSO para Aumento | 1 | 10000 | 0.882 | 0.038 | 0.110 | 1.393 | 0.378 | 0.066 | 0.372 | 0.591 | 262.968 | 0.220 | 0 | 0.499 | |
| OOF PSO para Aumento + Reglas | 1 | 10000 | 0.870 | 0.038 | 0.110 | 1.363 | 0.374 | 0.068 | 0.372 | 0.594 | 728.181 | 0.214 | 0 | 0.623 | |
| SMOTE RSB* Refinado | 1.070 | 4173 | 0.994 | 0.968 | 0.970 | 8.879 | 0.108 | 0.282 | 0.345 | 0.955 | 111.827 | 0.045 | 0 | 0.531 | |
| SMOTE RSB* Refinado + Reglas | 1.070 | 4173 | 0.999 | 0.979 | 0.980 | 8.882 | 0.109 | 0.268 | 0.345 | 0.954 | 309.274 | 0.045 | 0 | 0.499 |
| 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.045 | 5472 | 0.995 | 0.979 | 0.980 | 8.637 | 0.098 | 0.291 | 0.354 | 0.956 | 234.371 | 0.039 | 247 | 0.467 | |
| SMOTE RSB* + Ruido Gaussiano + Reglas | 1.045 | 5472 | 0.996 | 0.980 | 0.980 | 8.698 | 0.098 | 0.280 | 0.354 | 0.955 | 451.898 | 0.039 | 247 | 0.445 | 🏆 |
| CTGAN | 1.009 | 11072 | 0.968 | 0.933 | 0.930 | 2.360 | 0.148 | 0.242 | 0.368 | 0.885 | 1606.390 | 0.150 | 121 | 0.516 | |
| CTGAN + Reglas del Dominio | 1.009 | 11072 | 0.971 | 0.951 | 0.950 | 4.118 | 0.148 | 0.241 | 0.368 | 0.885 | 2056.260 | 0.150 | 121 | 0.503 | |
| TVAE | 1.270 | 11072 | 0.993 | 0.976 | 0.975 | 7.832 | 0.124 | 0.251 | 0.283 | 0.928 | 1131.630 | 0.094 | 121 | 0.503 | |
| TVAE + Reglas del Dominio | 1.270 | 11072 | 0.993 | 0.971 | 0.970 | 7.359 | 0.124 | 0.248 | 0.283 | 0.927 | 1578.210 | 0.094 | 121 | 0.502 | |
| OOF PSO para Aumento | 1.002 | 11072 | 0.998 | 0.976 | 0.975 | 5.513 | 0.334 | 0.068 | 0.371 | 0.612 | 515.590 | 0.200 | 121 | 0.497 | |
| OOF PSO para Aumento + Reglas | 1.002 | 11072 | 0.999 | 0.981 | 0.980 | 6.066 | 0.330 | 0.070 | 0.371 | 0.625 | 987.559 | 0.195 | 121 | 0.475 | |
| SMOTE RSB* Refinado | 1.059 | 5245 | 0.997 | 0.974 | 0.975 | 8.301 | 0.101 | 0.287 | 0.349 | 0.956 | 219.369 | 0.040 | 254 | 0.522 | |
| SMOTE RSB* Refinado + Reglas | 1.059 | 5245 | 0.993 | 0.974 | 0.975 | 8.035 | 0.102 | 0.276 | 0.349 | 0.955 | 415.199 | 0.040 | 254 | 0.472 |
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:
¿Qué mide? Capacidad del modelo para distinguir entre clases (Ej: mortalidad vs supervivencia).
Interpretación:
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.
¿Qué mide? Media armónica entre precisión y sensibilidad (recall).
Interpretación:
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).
¿Qué mide? Proporción de predicciones correctas sobre el total.
Interpretación:
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.
¿Qué mide? Calidad global del conjunto sintético comparado con el original.
Interpretació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).
¿Qué mide? Similitud entre las distribuciones de variables numéricas del conjunto sintético y el original.
Interpretación:
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.
¿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:
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.
¿Qué mide? Divergencia entre las distribuciones de variables categóricas del conjunto sintético y el original.
Interpretación:
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.
¿Qué mide? Preservación de las relaciones entre variables del conjunto original.
Interpretación:
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.
¿Qué mide? Tiempo total de ejecución del proceso de generación del conjunto.
Interpretación:
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.
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.
¿Qué mide? La distancia promedio entre cada registro sintético y su registro más cercano en el conjunto de datos original.
Interpretación:
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.
¿Qué mide? Número de registros sintéticos que son copias idénticas de registros en el conjunto de datos original.
Interpretació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.
¿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:
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.
Formatos incluidos: CSV.
Díaz Bastida, M., Pérez Vázquez, R. A., & Bello Pérez, R. (2026). High-Fidelity Synthetic Dataset for Handwritten Digit Recognition (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32946101.v1