CD_28 Original + Derivados

CD_28: Health Insurance Cross Sell: Venta Cruzada)

Registro empresarial para la predicción de venta cruzada (Cross-Selling) de seguros de vehículos (Response) en una cartera de clientes de salud. Integra variables demográficas (edad, código de región), características del bien (antigüedad ordinal Vehicle_Age, daños previos) y datos de la póliza (prima anual, canal de ventas).

📈 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.88 1.00 0.93 175
Clase 1 0.00 0.00 0.00 25
Accuracy 0.88
Macro Avg 0.44 0.50 0.47 200
Weighted Avg 0.77 0.88 0.82 200
AUC-ROC: 0.34
F1-Score (weighted): 0.82
Accuracy: 0.88
➡️ Mejora
⬆ +0.43 AUC ⬇ -0.01 F1 ⬇ -0.05 Acc
🏆 MEJOR RENDIMIENTO

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.88 0.94 0.91 175
Clase 1 0.21 ⬆ +0.21 0.12 ⬆ +0.12 0.15 ⬆ +0.15 25
Accuracy 0.83 ⬇ -0.05
Macro Avg 0.55 ⬆ +0.11 0.53 ⬆ +0.03 0.53 ⬆ +0.06 200
Weighted Avg 0.80 ⬆ +0.03 0.83 ⬇ -0.05 0.81 ⬇ -0.01 200
AUC-ROC: 0.77 ⬆ +0.43
F1-Score (weighted): 0.81 ⬇ -0.01
Accuracy: 0.83 ⬇ -0.05

📊 Resumen de Mejoras en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.00
Sintético: 0.21
⬆ +0.21
📈
Recall
Original: 0.00
Sintético: 0.12
⬆ +0.12
⚖️
F1-Score
Original: 0.00
Sintético: 0.15
⬆ +0.15

📚 Fuente Original del Conjunto

Vehicle Insurance Prediction Dataset

v1.0
Datos de compañía de seguros
Disponible en repositorios públicos (Kaggle)

📄 Resumen (Abstract)

El conjunto de datos de Predicción de Seguro de Vehículos ha sido proporcionado por una compañía de seguros que ofrece Seguro de Salud a sus clientes. El objetivo es construir un modelo para predecir si los asegurados (clientes) del año anterior también estarán interesados en un Seguro de Vehículo ofrecido por la compañía. Predecir el interés de los clientes en un seguro de vehículo es extremadamente útil para la empresa, ya que permite planificar su estrategia de comunicación para llegar a esos clientes y optimizar su modelo de negocio e ingresos.

📖 Concepto de Seguro

Una póliza de seguro es un acuerdo mediante el cual una compañía se compromete a proporcionar una garantía de compensación por pérdidas, daños, enfermedades o muerte especificados, a cambio del pago de una prima especificada. Una prima es una suma de dinero que el cliente debe pagar regularmente a la compañía de seguros por esta garantía.

Ejemplo: Un cliente paga una prima de Rs. 5,000 cada año por una cobertura de seguro de salud de Rs. 200,000. Si el cliente se enferma y necesita hospitalización, la compañía de seguros cubrirá los costos de hospitalización hasta Rs. 200,000. El concepto de probabilidades es clave: de 100 clientes que pagan una prima de Rs. 5,000, solo unos pocos (2-3) serían hospitalizados ese año, compartiendo así el riesgo entre todos.

🔬 Contexto y Motivación

Al igual que el seguro médico, existe el seguro de vehículos, donde cada año el cliente debe pagar una prima a la compañía de seguros para que, en caso de accidente del vehículo, la compañía proporcione una compensación (llamada "suma asegurada") al cliente.

La predicción de interés de los clientes en un seguro de vehículo permite a la compañía:

  • Planificar estrategias de comunicación dirigidas a clientes potenciales
  • Optimizar el modelo de negocio y los ingresos
  • Ofrecer productos personalizados según las características del cliente
  • Maximizar la retención de clientes mediante ofertas relevantes

El dataset incluye información sobre demografía (género, edad, tipo de código de región), vehículos (edad del vehículo, daños), póliza (prima, canal de ventas) y historial del cliente (vintage).

📊 Estructura del Fichero

  • Conjunto de entrenamiento (Train Data): 11 variables + objetivo (Response)
  • Conjunto de prueba (Test Data): 11 variables (sin Response)
  • Archivo de envío (Submission): id + Response (probabilidad predicha)
  • Métrica de evaluación: ROC_AUC (Área bajo la curva ROC)
📋 Diccionario de Variables
Variable Definición Tipo Notas
A. Identificador (A excluir del modelo)
id ID único del cliente Entero Sin valor predictivo. Excluir del modelo.
B. Datos Demográficos
Gender Género del cliente Categórica -
Age Edad del cliente Numérico -
Region_Code Código único de la región del cliente Categórica -
C. Licencia y Vehículo
Driving_License ¿El cliente tiene licencia de conducir? Binaria 0 = No tiene DL, 1 = Ya tiene DL
Previously_Insured ¿El cliente ya tiene seguro de vehículo? Binaria 1 = Ya tiene seguro, 0 = No tiene seguro
Vehicle_Age Edad del vehículo Categórica -
Vehicle_Damage ¿El cliente dañó su vehículo en el pasado? Binaria 1 = Sí tuvo daños, 0 = No tuvo daños
D. Póliza y Ventas
Annual_Premium Monto que el cliente debe pagar como prima anual Numérico En unidades monetarias locales
Policy_Sales_Channel Código anonimizado del canal de contacto con el cliente Categórica Ej: Agentes, Correo, Teléfono, En persona, etc.
Vintage Número de días que el cliente ha estado asociado con la compañía Numérico Antigüedad del cliente en días
E. Variable Objetivo
Response ¿El cliente está interesado en el seguro de vehículo? Binaria (Target) 1 = Interesado, 0 = No interesado

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Interesado vs. No interesado)
  • Métrica de evaluación: ROC_AUC Score
  • Tipo de características: Mixtas (Numéricas, Categóricas, Binarias)
  • Valores faltantes: No reportados
  • Área de aplicación: Finanzas, Seguros, Marketing, Cross-Selling
  • Contexto: Venta cruzada (cross-selling) de seguros de vehículos a clientes existentes de seguro de salud

📋 Notas de Uso

Este conjunto de datos está diseñado para predecir el interés en seguros de vehículos (problema de venta cruzada). Se recomienda:

  • Excluir la variable id del modelado por ser un identificador único sin valor predictivo
  • La variable Gender requiere codificación (Label Encoding o One-Hot Encoding)
  • La variable Vehicle_Age puede ser categórica y requiere codificación
  • Region_Code y Policy_Sales_Channel son variables categóricas con muchos valores únicos; considerar:
    • One-Hot Encoding (si el número de categorías es manejable)
    • Frequency Encoding o Target Encoding para categorías con alta cardinalidad
  • Estandarizar/normalizar las características numéricas (Age, Annual_Premium, Vintage)
  • Las variables Driving_License, Previously_Insured y Vehicle_Damage pueden utilizarse directamente como 0/1
  • La métrica de evaluación es ROC_AUC, por lo que se debe optimizar esta métrica y trabajar con probabilidades (no solo predicciones de clase)
  • La división del conjunto de prueba es 40% para la leaderboard pública y 60% para la leaderboard privada (clasificación final)
  • El envío final debe incluir código para reproducir la solución (obligatorio)
  • El archivo de solución debe contener las probabilidades de la clase positiva (Response = 1)

💡 Importancia en la Industria de Seguros

La venta cruzada (cross-selling) es una estrategia clave en la industria de seguros para:

  • Incrementar el valor de vida del cliente (LTV) ofreciendo productos adicionales a clientes existentes
  • Reducir costos de adquisición al vender a clientes existentes en lugar de adquirir nuevos
  • Mejorar la retención al ofrecer productos personalizados y relevantes
  • Aumentar los ingresos mediante la diversificación de la cartera de productos por cliente

La capacidad de predecir qué clientes estarán interesados en un seguro de vehículo permite a la compañía optimizar sus campañas de marketing, asignar recursos de manera más eficiente y mejorar la experiencia del cliente al ofrecer productos relevantes en el momento adecuado.

📖 Cómo citar la fuente original

Health Insurance Cross Sell Prediction Dataset. Kaggle. https://www.kaggle.com/datasets/anmolkumar/health-insurance-cross-sell-prediction

📚 Referencias Adicionales

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Health Insurance Cross Sell)

  • Limpieza inicial y eliminación de variables no predictivas:
    • Eliminación de la columna id (identificador único de cliente) por no aportar valor predictivo y para evitar sobreajuste.
    • Verificación de calidad de datos: Confirmación de ausencia de valores nulos en el dataset original.
    • Implementación de imputación con moda (categóricas) y mediana (numéricas) como medida preventiva.
  • Codificación específica de variables categóricas:
    • Gender: Mapeo manual ('Male' → 0 = Masculino, 'Female' → 1 = Femenino).
    • Vehicle_Damage: Mapeo manual ('No' → 0 = Sin daño, 'Yes' → 1 = Con daño previo) — variable clave que indica riesgo e interés potencial.
    • Vehicle_Age: Mapeo ordinal con jerarquía lógica ('< 1 Year' → 0, '1-2 Year' → 1, '> 2 Years' → 2) preservando la antigüedad del vehículo.
    • Region_Code y Policy_Sales_Channel: Preservación como códigos numéricos enteros (anónimos proporcionados por la compañía).
  • Preservación de variables numéricas originales:
    • Age (Edad en años) — variable demográfica clave.
    • Driving_License (0 = No tiene licencia, 1 = Sí tiene licencia).
    • Previously_Insured (0 = No tiene seguro de vehículo, 1 = Ya tiene seguro) — indicador de cliente existente en el segmento de vehículos.
    • Annual_Premium (Prima anual - Precio del seguro).
    • Vintage (Días de antigüedad del cliente con la compañía).
  • Codificación de la variable objetivo:
    • Preservación de Response en su formato binario original: 0 = No interesado, 1 = Interesado (Clase Positiva).
    • Documentación detallada en leyenda sobre el significado de la variable objetivo para venta cruzada.
  • Generación de documentación completa:
    • Creación del archivo leyenda_insurance.txt con semántica completa de la variable objetivo y todas las variables predictoras.
    • Documentación del mapeo ordinal de Vehicle_Age con jerarquía lógica (0 → < 1 año, 1 → 1-2 años, 2 → > 2 años).
    • Descripción de variables binarias y su significado (Driving_License, Previously_Insured, Vehicle_Damage).
    • Nota sobre variables de código anónimo (Region_Code, Policy_Sales_Channel).
  • Optimización y formato de salida:
    • Conversión de Region_Code y Policy_Sales_Channel a tipo int para eliminar decimales.
    • Guardado en formato CSV con separador punto y coma (;) para compatibilidad internacional.
    • Preservación de las instancias originales del dataset de entrenamiento.

📊 Resultado: Dataset de clientes de seguros (≈381,000 registros) con 10 variables predictoras (demográficas, de vehículo, de póliza y de antigüedad) y 1 variable objetivo binaria (Response). Desbalance extremo (~88% no interesados / ~12% interesados en seguro de vehículo) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de venta cruzada (cross-selling) en el sector asegurador, donde la predicción de interés en productos adicionales es clave para la estrategia comercial.

🏢 Fuente: Health Insurance Cross Sell (Kaggle) - Datos de compañía aseguradora.

🚗 Variable clave de interés: Vehicle_Damage (daño previo del vehículo) — fuerte predictor de intención de compra de seguro vehicular.

📋 Variables comerciales: Previously_Insured (cliente ya asegurado en vehículos), Annual_Premium (prima anual), Vintage (antigüedad como cliente).

📁 Leyenda disponible: Archivo leyenda_insurance.txt con mapeo semántico completo de Gender, Vehicle_Damage, Vehicle_Age (ordinal), y descripción de variables numéricas.

🎯 Variable objetivo: Response (1 = Interesado en seguro de vehículo, 0 = No interesado).

🧹 Limpieza aplicada: Eliminación de ID, verificación de nulos, codificación de categóricas con mapeos manuales específicos para el contexto asegurador.

📋 Diccionario de Datos Detallado

Variable Descripción Clínica / Comercial Tipo Rango / Categorías Unidad ¿Objetivo?
Region_Code Código de región geográfica del cliente (anónimo) Categórico 0-50 (ver leyenda) N/A No
Policy_Sales_Channel Canal de captación de la póliza (anónimo) Categórico 1-163 (ver leyenda) N/A No
Age Edad del cliente Numérico 20 - 83 años No
Vehicle_Age Antigüedad del vehículo (ordinal) Numérico 0: <1 año, 1: 1-2 años, 2: >2 años N/A No
Annual_Premium Prima anual del seguro de salud Numérico 2,630 - 90,123 moneda local No
Vintage Antigüedad del cliente en la compañía Numérico 10 - 297 días No
Gender Género del cliente Binario 0: Masculino, 1: Femenino N/A No
Lic Licencia de conducir (Driving License) Binario 0: No tiene, 1: Sí tiene N/A No
Previously_Insured Cliente ya asegurado en seguro de vehículo Binario 0: No tiene, 1: Ya tiene N/A No
Vehicle_Damage Historial de daños del vehículo Binario 0: No, 1: Sí N/A No
Response Interés en seguro de vehículo (objetivo) Binario 0: No interesado, 1: Interesado N/A
11 Variables totales
4 Numéricas
2 Categóricas
5 Binarias
Objetivo: Venta Cruzada (Response)
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 Health Insurance Cross Sell. Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados y la optimización de estrategias comerciales.

Region_Code Categórica

Códigos de región geográfica (anónimos)

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
43
44
45
46
47
48
50
⚠️

Nota: Códigos anónimos proporcionados por la compañía. No se dispone de mapeo a ubicaciones reales.

Policy_Sales_Channel Categórica

Códigos de canal de venta (anónimos)

1
3
7
8
11
12
13
14
15
16
18
23
25
26
29
37
52
60
61
106
109
122
124
125
131
135
136
147
148
150
151
152
154
155
156
157
158
159
160
163
⚠️

Nota: Códigos anónimos que representan diferentes canales de venta (agente, web, correo, etc.)

Vehicle_Age Categórica
Código Significado
0Menos de 1 año (Vehículo nuevo)
1Entre 1 y 2 años
2Más de 2 años
💡

Interpretación: Vehículos más viejos (código 2) tienen mayor probabilidad de interés en seguro.

Variables Binarias Binario

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

Gender Género (0: Masculino, 1: Femenino)
Lic Licencia de conducir (0: No tiene, 1: Sí tiene)
Previously_Insured Ya tiene seguro de vehículo (0: No, 1: Sí)
Vehicle_Damage Vehículo con daños previos (0: No, 1: Sí)
Response 🎯 Variable Objetivo: Interés en seguro de vehículo (0: No, 1: Sí)
ℹ️

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

📊
Variables categóricas: 2
  • Region_Code (48 códigos anónimos)
  • Policy_Sales_Channel (40 códigos anónimos)
🎯
Variables binarias: 5
  • Gender, Lic, Previously_Insured, Vehicle_Damage
  • 🎯 Response (Objetivo - Interés en seguro de vehículo)
📈
Variables numéricas: 4
  • Age (Edad en años)
  • Vehicle_Age (Antigüedad del vehículo - ordinal 0-2)
  • Annual_Premium (Prima anual)
  • Vintage (Días de antigüedad del cliente)
⚠️
Recomendaciones de Marketing:
  • Target principal: Clientes sin seguro de vehículo (Previously_Insured = 0)
  • Factor clave: Vehicle_Damage - Clientes con daños previos son más propensos a comprar
  • Vehículos viejos: Vehicle_Age = 2 (>2 años) mayor interés
  • Canal de venta: Algunos canales tienen mayor tasa de conversión (explorar)
  • Vintage: Clientes con mayor antigüedad pueden tener mayor fidelidad
  • Annual_Premium: Prima más alta puede indicar mayor capacidad de gasto

🔬 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

  • Previously_Insured == 1 → Response = 0 (Cliente asegurado → no interesado)
  • Driving_License == 1 → Age ≥ 18 (Licencia → mayoría de edad)
  • Vehicle_Age == 0 → Vehicle_Damage = 0 (Vehículo nuevo → sin daños)
  • Driving_License == 0 → Response = 0 (Sin licencia → sin interés en seguro)
  • Age > 30 → Annual_Premium < 60000 (Conductor experimentado → prima no extrema)
  • Age < 22 → (Vehicle_Damage = 1) OR (Previously_Insured = 1)
  • Vehicle_Age == 2 → (Vehicle_Damage = 1) OR (Previously_Insured = 1)

⚙️ 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 índiceTabDSFidelity.

📊 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 1052 0.776 0.822 0.850 7.251 0.187 0.279 0.088 0.958 50.951 0 1052 0.405
Smote 1 1052 0.742 0.790 0.785 2.883 0.204 0.386 0.130 0.953 51.446 0.060 601 0.439
Borderline SMOTE 1 1052 0.744 0.783 0.785 2.283 0.198 0.231 0.138 0.946 50.417 0.066 600 0.422
ADASYN 1.002 1053 0.749 0.784 0.770 2.406 0.199 0.375 0.131 0.950 50.229 0.062 600 0.420
SMOTE RSB* Adaptado 1.015 1044 0.803 0.800 0.780 5.380 0.202 0.295 0.102 0.958 50.721 0.059 600 0.448
SMOTE RSB* Adaptado + Reglas 1.015 1044 0.800 0.807 0.790 5.892 0.205 0.339 0.104 0.961 50.732 0.060 600 0.421
OOF PSO para Balanceo 7.013 601 0.787 0.816 0.865 9.186 0.012 1.000 0.000 0.998 55.492 0.000 600 0.414 🏆
OOF PSO para Balanceo + Reglas 1 1052 0.773 0.819 0.855 4.636 0.341 0.000 0.194 0.790 55.358 0.121 519 0.407
Mejor seleccionado: OOF PSO para Balanceo (TabDSFidelity: 9.186, AUC: 0.787, F1: 0.816, MIA: 0.414). 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 5.813 9791 0.775 0.819 0.845 8.962 0.214 0.585 0.035 0.961 72.597 0.640 0 0.407
SMOTE RSB* + Ruido Gaussiano + Reglas 6.649 9791 0.766 0.828 0.860 9.030 0.214 0.585 0.041 0.956 208.362 0.640 0 0.414 🏆
CTGAN 9.536 9999 0.745 0.827 0.870 7.586 0.284 0.029 0.026 0.934 341.685 0.112 0 0.474
CTGAN + Reglas del Dominio 10.480 9999 0.760 0.814 0.860 7.557 0.284 0.029 0.029 0.935 467.570 0.110 0 0.439
TVAE 10.533 9999 0.702 0.824 0.865 6.755 0.334 0.208 0.179 0.898 170.317 0.114 0 0.462
TVAE + Reglas del Dominio 10.533 9999 0.657 0.816 0.865 6.045 0.334 0.208 0.182 0.884 294.567 0.116 0 0.422
OOF PSO para Aumento 1 10000 0.795 0.667 0.600 1.867 0.611 0.000 1.025 0.767 121.406 0.284 0 0.449
OOF PSO para Aumento + Reglas 1.001 10000 0.819 0.662 0.595 2.000 0.611 0.000 1.039 0.750 251.707 0.300 0 0.409
SMOTE RSB* Refinado 1.005 9929 0.815 0.846 0.835 8.881 0.262 0.240 0.102 0.945 76.127 0.551 0 0.431
SMOTE RSB* Refinado + Reglas 1.064 9929 0.801 0.829 0.815 8.352 0.262 0.240 0.089 0.937 204.881 0.551 0 0.376
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio (TabDSFidelity: 9.030, AUC: 0.766, F1: 0.828, MIA: 0.414). 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 5.873 10392 0.763 0.809 0.850 6.877 0.204 0.610 0.032 0.963 141.421 0.640 0 0.410
SMOTE RSB* + Ruido Gaussiano + Reglas 6.669 10392 0.749 0.844 0.875 8.930 0.204 0.610 0.037 0.958 276.385 0.640 0 0.410 🏆
CTGAN 9.352 10600 0.699 0.811 0.855 4.907 0.266 0.040 0.023 0.937 406.078 0.102 125 0.438
CTGAN + Reglas del Dominio 10.205 10600 0.732 0.811 0.855 5.416 0.266 0.040 0.026 0.938 531.676 0.100 125 0.422
TVAE 10.253 10600 0.704 0.814 0.860 5.032 0.312 0.222 0.137 0.915 234.560 0.106 125 0.427
TVAE + Reglas del Dominio 10.253 10600 0.685 0.809 0.850 4.198 0.312 0.222 0.139 0.905 364.979 0.107 125 0.417
OOF PSO para Aumento 1.089 10601 0.764 0.809 0.800 1.858 0.569 0.000 0.773 0.770 187.440 0.266 125 0.430
OOF PSO para Aumento + Reglas 1.090 10601 0.772 0.803 0.790 1.333 0.569 0.000 0.785 0.753 319.547 0.281 125 0.419
SMOTE RSB* Refinado 1.095 10530 0.816 0.828 0.820 7.204 0.249 0.276 0.092 0.949 145.458 0.550 0 0.424
SMOTE RSB* Refinado + Reglas 1.155 10530 0.789 0.835 0.820 7.068 0.249 0.276 0.080 0.941 267.364 0.550 0 0.413
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio (TabDSFidelity: 8.930, AUC: 0.749, F1: 0.844, MIA: 0.410). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_28
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
OOF PSO para Balanceo
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio
⭐ Mejor Aumentado
SMOTE RSB* + Ruido Gaussiano + Reglas del Dominio
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 Vehicle Insurance Cross-Sell Prediction (Version 1). figshare. https://doi.org/10.6084/m9.figshare.32934557.v1