CD_32 Original + Derivados

CD_32: Bank Marketing (Portugal)

Registro empresarial de campañas de telemarketing bancario para la predicción de suscripción a depósitos (deposit). Integra variables sociodemográficas, económicas y de historial de campaña.

📈 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.89 0.95 0.92 177
Clase 1 0.18 0.09 0.12 23
Accuracy 0.85
Macro Avg 0.54 0.52 0.52 200
Weighted Avg 0.81 0.85 0.83 200
AUC-ROC: 0.60
F1-Score (weighted): 0.83
Accuracy: 0.85
➡️ Mejora
⬆ +0.22 AUC ⬆ +0.05 F1 ⬆ +0.04 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.92 0.95 0.94 177
Clase 1 0.50 ⬆ +0.32 0.39 ⬆ +0.30 0.44 ⬆ +0.32 23
Accuracy 0.89 ⬆ +0.04
Macro Avg 0.71 ⬆ +0.17 0.67 ⬆ +0.15 0.69 ⬆ +0.17 200
Weighted Avg 0.87 ⬆ +0.06 0.89 ⬆ +0.04 0.88 ⬆ +0.05 200
AUC-ROC: 0.82 ⬆ +0.22
F1-Score (weighted): 0.88 ⬆ +0.05
Accuracy: 0.89 ⬆ +0.04

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.18
Sintético: 0.50
⬆ +0.32
📈
Recall
Original: 0.09
Sintético: 0.39
⬆ +0.30
⚖️
F1-Score
Original: 0.12
Sintético: 0.44
⬆ +0.32

📚 Fuente Original del Conjunto

Bank Marketing Dataset

v1.0
Moro, S., Cortez, P., & Rita, P.
Publicado: 2014

📄 Resumen (Abstract)

El conjunto de datos de Marketing Bancario (Bank Marketing) está relacionado con campañas de marketing directo (llamadas telefónicas) de una institución bancaria portuguesa. El objetivo de clasificación es predecir si el cliente suscribirá un depósito a plazo (variable y). Las campañas de marketing se basaron en llamadas telefónicas y, a menudo, se requirió más de un contacto con el mismo cliente para determinar si el producto (depósito a plazo bancario) sería suscrito o no. El dataset está disponible en cuatro versiones con diferentes tamaños y número de variables.

🔬 Contexto y Motivación

Las campañas de telemarketing son una estrategia común utilizada por las instituciones bancarias para ofrecer productos financieros como depósitos a plazo. Sin embargo, estas campañas tienen altos costos operativos y requieren una optimización para maximizar la efectividad y minimizar recursos. La predicción de qué clientes son más propensos a suscribir un depósito permite:

  • Segmentar clientes con mayor probabilidad de conversión
  • Reducir costos al enfocar los esfuerzos en clientes de alto potencial
  • Optimizar el tiempo de los agentes de telemarketing
  • Mejorar la tasa de éxito de las campañas

Los datos cubren el período desde mayo de 2008 hasta noviembre de 2010 y representan campañas de marketing reales de una institución bancaria portuguesa.

📊 Versiones del Dataset
Dataset Instancias Variables Descripción
bank-additional-full.csv 41,188 20 Todos los ejemplos, ordenados por fecha (mayo 2008 - nov 2010)
bank-additional.csv 4,119 20 10% de ejemplos, selección aleatoria
bank-full.csv 45,211 17 Todos los ejemplos, versión anterior con menos variables
bank.csv 4,521 17 10% de ejemplos, versión anterior con menos variables

Los datasets más pequeños se proporcionan para probar algoritmos de aprendizaje automático más exigentes computacionalmente (ej: SVM).

📊 Descripción de Datos

El dataset contiene información sobre clientes bancarios, características del último contacto de la campaña actual, y variables de campañas anteriores. La versión bank-full.csv contiene 45,211 instancias con 17 atributos (16 predictores + 1 objetivo).

📋 Variables del Dataset (bank-full.csv)
Variable Tipo Descripción Categorías / Unidades
A. Datos del Cliente
age Numérico Edad del cliente años
job Categórica Tipo de ocupación admin., blue-collar, entrepreneur, housemaid, management, retired, self-employed, services, student, technician, unemployed, unknown
marital Categórica Estado civil divorced, married, single, unknown (*divorced = divorciado o viudo)
education Categórica Nivel educativo basic.4y, basic.6y, basic.9y, high.school, illiterate, professional.course, university.degree, unknown
default Binaria ¿Tiene impago de crédito? yes / no
balance Numérico Saldo medio anual euros
housing Binaria ¿Tiene préstamo hipotecario? yes / no
loan Binaria ¿Tiene préstamo personal? yes / no
B. Último Contacto de la Campaña Actual
contact Categórica Tipo de comunicación del contacto cellular, telephone
day_of_week Categórica Día de la semana del último contacto mon, tue, wed, thu, fri
month Categórica Mes del último contacto jan, feb, mar, ..., nov, dec
duration Numérico Duración del último contacto segundos
C. Otras Variables
campaign Numérico Número de contactos realizados durante esta campaña para este cliente Incluye el último contacto
pdays Numérico Días transcurridos desde el último contacto de una campaña anterior -1 = no contactado previamente
previous Numérico Número de contactos realizados antes de esta campaña -
poutcome Categórica Resultado de la campaña de marketing anterior unknown, other, failure, success
D. Variable Objetivo
y Binaria (Target) ¿El cliente suscribió un depósito a plazo? yes / no

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Suscripción vs. No suscripción)
  • Dimensión: Multivariante
  • Tipo de características: Mixtas (Categóricas, Enteras)
  • Valores faltantes: No (aunque algunas variables tienen categoría "unknown")
  • Área de aplicación: Marketing, Banca, Negocios
  • Período: Mayo 2008 - Noviembre 2010
  • Institución: Banco portugués (anónimo)

📖 Publicación Introductoria

El artículo fundamental que describe el enfoque basado en datos para predecir el éxito del telemarketing bancario es:

Moro, S., Cortez, P., & Rita, P. (2014). A data-driven approach to predict the success of bank telemarketing. Decision Support Systems, 62, 22-31. https://doi.org/10.1016/j.dss.2014.03.001

⚖️ Ética y Privacidad

El conjunto de datos ha sido anonimizado para proteger la privacidad de los clientes de la institución bancaria. No contiene información personal identificable como nombres, direcciones o números de identificación. 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 clientes o la institución bancaria.

📋 Notas de Uso

Este conjunto de datos es ampliamente utilizado en problemas de marketing predictivo y clasificación. Se recomienda:

  • Elegir entre las 4 versiones del dataset según los requisitos computacionales y número de variables
  • La variable duration (duración de la llamada) es un predictor muy fuerte pero no debe utilizarse para predecir el éxito de futuras campañas porque la duración solo se conoce después de la llamada (se puede excluir para modelado predictivo realista)
  • La variable pdays con valor -1 indica que el cliente no fue contactado previamente (tratar como categoría separada)
  • Codificar variables categóricas:
    • Binarias: Label Encoding (yes/no → 1/0)
    • Nominales: One-Hot Encoding (job, marital, education, contact, month, poutcome)
    • Ordinales: considerar orden natural (education, day_of_week)
  • Estandarizar/normalizar variables numéricas (age, balance, duration, campaign, pdays, previous)
  • La variable objetivo y está codificada como "yes" (suscrito) y "no" (no suscrito)
  • Utilizar validación cruzada estratificada para evaluar el rendimiento
  • Considerar el desbalanceo potencial de la variable objetivo (la mayoría de los clientes no suscriben)
  • El dataset está ordenado por fecha, por lo que puede utilizarse para análisis temporal o dividir en entrenamiento/prueba por tiempo

💡 Importancia en Marketing Bancario

El telemarketing bancario es una estrategia clave para la comercialización de productos financieros como depósitos a plazo. Las campañas de marketing directo tienen:

  • Costos operativos significativos (personal, tiempo, infraestructura telefónica)
  • Bajas tasas de conversión (típicamente menos del 5% en depósitos a plazo)
  • Impacto en la percepción del cliente (llamadas no deseadas pueden generar rechazo)

La capacidad de predecir qué clientes son más propensos a suscribir un depósito permite:

  • Segmentar clientes y priorizar contactos de alto valor
  • Reducir costos al minimizar llamadas a clientes de bajo potencial
  • Mejorar la experiencia del cliente al contactar solo a quienes podrían estar interesados
  • Aumentar la eficiencia de los agentes de telemarketing

Este dataset ha sido fundamental para la investigación en marketing predictivo y optimización de campañas, proporcionando un caso de estudio realista y bien documentado.

📖 Cómo citar la fuente original

Moro, S., Cortez, P., & Rita, P. (2014). A data-driven approach to predict the success of bank telemarketing. Decision Support Systems, 62, 22-31. https://doi.org/10.1016/j.dss.2014.03.001

📚 Referencias Adicionales

  • Moro, S., Cortez, P., & Rita, P. (2014). A data-driven approach to predict the success of bank telemarketing. Decision Support Systems, 62, 22-31. https://doi.org/10.1016/j.dss.2014.03.001
  • UCI Machine Learning Repository - Bank Marketing. https://archive.ics.uci.edu/ml/datasets/Bank+Marketing
  • Moro, S., Rita, P., & Cortez, P. (2012). A data-driven approach to predict the success of bank telemarketing. Portuguese Conference on Artificial Intelligence, 271-282.
  • Kotler, P., & Keller, K. L. (2016). Marketing Management. Pearson Education.

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Bank Marketing Campaign)

  • Carga y preparación inicial:
    • Carga del dataset con separador punto y coma (;) — formato estándar del dataset original de UCI.
    • Renombramiento de la variable objetivo 'y' a 'deposit' para mayor claridad semántica.
    • Verificación de integridad estructural del dataset (17 columnas originales).
  • Codificación de la variable objetivo:
    • Transformación de deposit de texto a binaria: 'no'0 (No suscribió el depósito), 'yes'1 (Suscribió el depósito a plazo fijo).
    • Documentación detallada en leyenda sobre el objetivo de la campaña de marketing.
  • Codificación específica de variables categóricas:
    • Variables binarias (yes/no): Mapeo manual de default (impago), housing (préstamo hipotecario), loan (préstamo personal) — 'no' → 0, 'yes' → 1.
    • Variables ordinales:
      • education: Mapeo jerárquico preservando el orden educativo (unknown/illiterate → 0, primary → 1, secondary → 2, tertiary → 3).
      • month: Conversión de nombres de mes a valores numéricos (jan → 1, feb → 2, ..., dec → 12) para preservar la estacionalidad.
    • Variables nominales: Codificación ordinal (Label Encoding) para job (trabajo), marital (estado civil), contact (tipo de contacto), poutcome (resultado de campañas previas).
  • Preservación de variables numéricas originales:
    • age (Edad del cliente).
    • balance (Saldo anual en euros).
    • day (Día del mes de contacto).
    • duration (Duración de la última llamada en segundos) — advertencia sobre posible Data Leakage.
    • campaign (Número de contactos en esta campaña).
    • pdays (Días desde contacto previo; -1 indica no contactado previamente).
    • previous (Número de contactos previos).
  • Generación de documentación completa:
    • Creación del archivo leyenda_bank_marketing.txt con semántica completa de la variable objetivo y todas las variables predictoras.
    • Documentación del mapeo ordinal de education (unknown/illiterate → 0, primary → 1, secondary → 2, tertiary → 3).
    • Mapeo completo de variables nominales codificadas (job, marital, contact, poutcome).
    • Advertencia sobre duration como posible variable con Data Leakage (si la llamada fue larga, probablemente hubo interés).
    • Descripción de variables binarias y su significado contextual.
  • Preservación de la estructura y calidad de datos:
    • Mantenimiento de las 45,211 instancias (contactos de clientes) sin eliminación de filas.
    • Dataset final con 16 variables predictoras (mixtas: ordinales, nominales codificadas, binarias y numéricas) y 1 variable objetivo binaria.
    • Guardado en formato CSV con separador punto y coma (;) para compatibilidad internacional.

📊 Resultado: Dataset de 45,211 contactos de clientes de campaña de marketing bancario con 16 variables predictoras (demográficas, financieras, de contacto y de campaña) y 1 variable objetivo binaria (deposit). Desbalance moderado (~88% no suscriptores / ~12% suscriptores) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de marketing directo y predicción de conversión, donde factores como la duración de la llamada, el saldo y el historial de contacto juegan un papel crucial.

🏦 Fuente: Bank Marketing Dataset (UCI Machine Learning Repository) - Datos de campañas de marketing directo de una institución bancaria portuguesa.

📞 Variables de contacto clave: duration (duración de la llamada), campaign (número de contactos), pdays (días desde contacto previo), previous (contactos previos).

💰 Variables financieras: balance (saldo anual), default (impago), housing (préstamo hipotecario), loan (préstamo personal).

📁 Leyenda disponible: Archivo leyenda_bank_marketing.txt con mapeo semántico completo de la variable objetivo, variables ordinales (education, month), nominales (job, marital, contact, poutcome) y binarias (default, housing, loan).

🎯 Variable objetivo: deposit (1 = Suscribió el depósito a plazo fijo, 0 = No suscribió).

⚠️ Advertencia metodológica: La variable duration puede causar Data Leakage si se usa en modelos predictivos, ya que la duración de la llamada suele correlacionarse directamente con el interés del cliente.

📋 Diccionario de Datos Detallado

Variable Descripción Comercial Tipo Rango / Categorías Unidad ¿Objetivo?
job Ocupación del cliente (codificada) Categórico 0-11 (ver leyenda) N/A No
marital Estado civil del cliente Categórico 0: Divorciado, 1: Casado, 2: Soltero N/A No
education Nivel educativo (ordinal) Categórico 0: Unknown/Illiterate, 1: Primary, 2: Secondary, 3: Tertiary N/A No
contact Tipo de comunicación en contacto Categórico 0: Celular, 1: Teléfono, 2: Desconocido N/A No
poutcome Resultado de campaña anterior Categórico 0: Fracaso, 1: Otro, 2: Éxito, 3: Desconocido N/A No
age Edad del cliente Numérico 20 - 80 años No
balance Saldo medio anual Numérico -1,415 - 34,646 No
day Día del mes del contacto Numérico 1 - 31 día No
month Mes del año del contacto Numérico 1 (Ene) - 12 (Dic) mes No
duration Duración de la última llamada Numérico 5 - 3,094 segundos No
campaign Número de contactos en esta campaña Numérico 1 - 30 contactos No
pdays Días desde el último contacto previo Numérico -1 - 475 días No
previous Número de contactos previos Numérico 0 - 35 contactos No
default Crédito en mora Binario 0: No, 1: Sí N/A No
housing Préstamo hipotecario Binario 0: No, 1: Sí N/A No
loan Préstamo personal Binario 0: No, 1: Sí N/A No
deposit Suscribió depósito a plazo fijo (objetivo) Binario 0: No, 1: Sí N/A
17 Variables totales
8 Numéricas
5 Categóricas
4 Binarias
Objetivo: Suscripción (deposit)
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 Campañas de Marketing Bancario. Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados y la optimización de estrategias comerciales.

job Categórica
Código Significado
0admin. (Administrativo)
1blue-collar (Trabajador de cuello azul)
2entrepreneur (Empresario)
3housemaid (Ama de casa)
4management (Directivo)
5retired (Jubilado)
6self-employed (Autónomo)
7services (Servicios)
8student (Estudiante)
9technician (Técnico)
10unemployed (Desempleado)
11unknown (Desconocido)
💡

Segmentación: La ocupación es un predictor importante de la capacidad de ahorro del cliente.

marital Categórica
Código Significado
0divorced (Divorciado)
1married (Casado)
2single (Soltero)
education Categórica
Código Significado
0unknown / illiterate (Desconocido / Analfabeta)
1primary (Educación primaria)
2secondary (Educación secundaria)
3tertiary (Educación terciaria/Universitaria)
📊

Orden lógico: Mayor nivel educativo suele correlacionar con mayor capacidad financiera.

contact Categórica
Código Significado
0cellular (Teléfono celular)
1telephone (Teléfono fijo)
2unknown (Desconocido)
📱

Efectividad: Las campañas por celular suelen tener mayor tasa de respuesta que por teléfono fijo.

poutcome Categórica
Código Significado
0failure (Fracaso - No suscribió)
1other (Otro - no especificado)
2success (Éxito - Suscribió)
3unknown (Desconocido - No contactado previamente)
📊

Predictor clave: Clientes con éxito en campaña anterior tienen alta probabilidad de suscribir nuevamente.

Variables Binarias Binario

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

default Crédito en mora (0: No, 1: Sí)
housing Préstamo hipotecario (0: No, 1: Sí)
loan Préstamo personal (0: No, 1: Sí)
deposit 🎯 Variable Objetivo: Suscripción de depósito a plazo fijo (0: No, 1: Sí)
ℹ️

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

📊
Variables categóricas: 5
  • job (12 categorías ocupacionales)
  • marital (3 estados civiles)
  • education (4 niveles educativos - ordinal)
  • contact (3 tipos de comunicación)
  • poutcome (4 resultados de campaña previa)
🎯
Variables binarias: 4
  • default, housing, loan
  • 🎯 deposit (Objetivo - Suscripción)
📈
Variables numéricas: 8
  • age, balance, day, month
  • duration (⚠️ Data Leakage), campaign, pdays, previous
⚠️
Recomendaciones Comerciales:
  • Predictor clave: duration - llamadas más largas indican mayor interés (pero cuidado con Data Leakage)
  • Mejores clientes: Mayores ingresos (balance), mayor educación, sin morosidad (default)
  • Historial: Clientes con éxito previo (poutcome = 2) son más propensos a suscribir
  • Frecuencia: No contactar excesivamente (campaign > 5 reduce efectividad)
  • Estacionalidad: Meses específicos pueden tener mayor tasa de conversión
  • Enfoque: Jubilados, estudiantes y administrativos suelen tener mayor propensió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

  • pdays == -1 → previous = 0 (Sin contacto previo → contactos = 0)
  • previous == 0 → pdays = -1 (Contactos = 0 → sin contacto previo)
  • previous == 0 → poutcome = 3 (Unknown) (Sin contacto previo → resultado unknown)
  • previous > 0 → poutcome ≠ 3 (Hubo contactos → resultado conocido)
  • job == 5 (Retired) → age ≥ 55 (Jubilado → edad mínima)
  • job == 8 (Student) → age ≤ 40 (Estudiante → edad máxima)
  • duration < 5 → deposit = 0 (Llamada muy corta → sin depósito)
  • poutcome == 2 (Success) → default = 0 (Campaña exitosa → sin mora)
  • contact == 2 (Unknown) → duration = 0 (Contacto desconocido → duración 0)
  • job no puede ser simultáneamente unemployed (10) y entrepreneur (2)
  • housing == 1 → (loan = 0) OR (default = 0) (Hipoteca + préstamo → sin mora o sin préstamo)

⚙️ 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 1 1058 0.883 0.887 0.895 9.153 0.167 0.150 0.050 0.960 74.390 0 1058 0.522 🏆
Smote 1 1058 0.836 0.880 0.880 6.340 0.185 0.147 0.073 0.950 54.153 0.041 600 0.459
Borderline SMOTE 1 1058 0.830 0.867 0.870 4.732 0.187 0.154 0.076 0.947 52.659 0.042 600 0.481
ADASYN 1.004 1060 0.853 0.875 0.880 6.194 0.192 0.096 0.079 0.948 53.029 0.042 601 0.504
SMOTE RSB* Adaptado 1.064 1026 0.841 0.863 0.855 4.529 0.179 0.238 0.051 0.970 52.575 0.040 600 0.514
SMOTE RSB* Adaptado + Reglas 1.064 1026 0.868 0.867 0.860 5.671 0.178 0.200 0.050 0.968 52.308 0.040 600 0.512
OOF PSO para Balanceo 1 1058 0.897 0.867 0.895 6.394 0.317 0.226 0.161 0.663 63.018 0.150 600 0.490
OOF PSO para Balanceo + Reglas 1 1058 0.860 0.860 0.885 3.078 0.298 0.019 1.491 0.834 73.447 0.131 113 0.529
Mejor seleccionado: Random Oversampling (TabDSFidelity: 9.153, AUC: 0.883, F1: 0.887, MIA: 0.522). 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.604 7962 0.868 0.838 0.870 9.348 0.213 0.154 0.060 0.960 103.873 0.068 39 0.551
SMOTE RSB* + Ruido Gaussiano + Reglas 1.604 7962 0.807 0.864 0.885 8.076 0.216 0.154 1.420 0.960 237.370 0.075 14 0.480
CTGAN 1.869 10000 0.778 0.589 0.510 4.784 0.251 0.005 0.108 0.935 440.471 0.103 0 0.504
CTGAN + Reglas del Dominio 1.869 10000 0.754 0.463 0.395 3.505 0.257 0.189 1.469 0.929 577.867 0.096 0 0.513
TVAE 1.168 10000 0.840 0.852 0.835 8.130 0.280 0.013 0.063 0.960 226.026 0.061 0 0.498
TVAE + Reglas del Dominio 1.168 10000 0.819 0.855 0.840 7.116 0.284 0.013 1.429 0.954 362.453 0.070 0 0.479
OOF PSO para Aumento 1 10000 0.727 0.709 0.645 3.211 0.608 0.000 0.701 0.581 142.995 0.262 0 0.520
OOF PSO para Aumento + Reglas 1 10000 0.701 0.701 0.635 2.163 0.604 0.000 1.877 0.579 281.059 0.253 0 0.502
SMOTE RSB* Refinado 1.628 8068 0.883 0.864 0.885 9.969 0.209 0.205 0.059 0.959 66.263 0.074 44 0.525 🏆
SMOTE RSB* Refinado + Reglas 1.628 8068 0.841 0.869 0.885 8.734 0.214 0.205 1.419 0.960 182.036 0.078 10 0.505
Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.969, AUC: 0.883, F1: 0.864, MIA: 0.525). 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.515 9020 0.874 0.872 0.895 9.287 0.206 0.138 0.056 0.961 171.771 0.061 265 0.526
SMOTE RSB* + Ruido Gaussiano + Reglas 1.515 9020 0.824 0.846 0.865 7.173 0.209 0.138 0.172 0.963 306.310 0.066 245 0.500
CTGAN 1.755 11058 0.815 0.749 0.695 3.243 0.238 0.004 0.099 0.940 512.194 0.091 193 0.487
CTGAN + Reglas del Dominio 1.755 11058 0.797 0.804 0.770 5.039 0.242 0.189 0.230 0.938 649.455 0.087 193 0.501
TVAE 1.151 11058 0.845 0.861 0.850 7.294 0.260 0.025 0.060 0.962 296.358 0.057 193 0.482
TVAE + Reglas del Dominio 1.151 11058 0.829 0.866 0.865 6.797 0.263 0.025 0.196 0.960 432.966 0.064 193 0.469
OOF PSO para Aumento 1 11058 0.832 0.861 0.865 4.217 0.553 0.000 0.504 0.601 214.085 0.237 193 0.499
OOF PSO para Aumento + Reglas 1 11058 0.881 0.881 0.885 5.856 0.549 0.000 0.520 0.619 350.123 0.229 193 0.477
SMOTE RSB* Refinado 1.536 9126 0.885 0.876 0.890 9.792 0.203 0.181 0.056 0.961 126.293 0.066 265 0.526 🏆
SMOTE RSB* Refinado + Reglas 1.536 9126 0.857 0.869 0.880 8.626 0.206 0.181 0.172 0.963 243.303 0.068 242 0.519
Mejor seleccionado: SMOTE RSB* Refinado (TabDSFidelity: 9.792, AUC: 0.885, F1: 0.876, MIA: 0.526). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_32
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
Random Oversampling
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 Bank Marketing Campaign Prediction - Portugal (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32939153.v1