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.
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.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 |
| 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 |
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.
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:
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.
| 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).
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).
| 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 |
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
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.
Este conjunto de datos es ampliamente utilizado en problemas de marketing predictivo y clasificación. Se recomienda:
age, balance, duration, campaign, pdays, previous)y está codificada como "yes" (suscrito) y "no" (no suscrito)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:
La capacidad de predecir qué clientes son más propensos a suscribir un depósito permite:
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.
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
📊 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.
| 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 | Sí |
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 |
|---|---|
| 0 | admin. (Administrativo) |
| 1 | blue-collar (Trabajador de cuello azul) |
| 2 | entrepreneur (Empresario) |
| 3 | housemaid (Ama de casa) |
| 4 | management (Directivo) |
| 5 | retired (Jubilado) |
| 6 | self-employed (Autónomo) |
| 7 | services (Servicios) |
| 8 | student (Estudiante) |
| 9 | technician (Técnico) |
| 10 | unemployed (Desempleado) |
| 11 | unknown (Desconocido) |
Segmentación: La ocupación es un predictor importante de la capacidad de ahorro del cliente.
marital
Categórica
| Código | Significado |
|---|---|
| 0 | divorced (Divorciado) |
| 1 | married (Casado) |
| 2 | single (Soltero) |
education
Categórica
| Código | Significado |
|---|---|
| 0 | unknown / illiterate (Desconocido / Analfabeta) |
| 1 | primary (Educación primaria) |
| 2 | secondary (Educación secundaria) |
| 3 | tertiary (Educación terciaria/Universitaria) |
Orden lógico: Mayor nivel educativo suele correlacionar con mayor capacidad financiera.
contact
Categórica
| Código | Significado |
|---|---|
| 0 | cellular (Teléfono celular) |
| 1 | telephone (Teléfono fijo) |
| 2 | unknown (Desconocido) |
Efectividad: Las campañas por celular suelen tener mayor tasa de respuesta que por teléfono fijo.
poutcome
Categórica
| Código | Significado |
|---|---|
| 0 | failure (Fracaso - No suscribió) |
| 1 | other (Otro - no especificado) |
| 2 | success (Éxito - Suscribió) |
| 3 | unknown (Desconocido - No contactado previamente) |
Predictor clave: Clientes con éxito en campaña anterior tienen alta probabilidad de suscribir nuevamente.
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í.
duration - llamadas más largas indican mayor interés (pero cuidado con Data Leakage)balance), mayor educación, sin morosidad (default)poutcome = 2) son más propensos a suscribircampaign > 5 reduce efectividad)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)| 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 | 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 |
| 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 |
| 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 |
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 Bank Marketing Campaign Prediction - Portugal (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32939153.v1