CD_45 Original + Derivados

CD_45: Telco Customer Churn

Conjunto de datos de telecomunicaciones para la predicción del abandono de clientes. Integra información demográfica, servicios contratados y facturación.

📈 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.

🏆 MEJOR RENDIMIENTO

📊 Conjunto Original

Clase Precisión Recall F1-Score Soporte
Clase 0 0.85 0.92 0.89 147
Clase 1 0.71 0.57 0.63 53
Accuracy 0.82
Macro Avg 0.78 0.74 0.76 200
Weighted Avg 0.82 0.82 0.82 200
AUC-ROC: 0.86
F1-Score (weighted): 0.82
Accuracy: 0.82
⬇️ Degradación
⬇ -0.09 AUC ⬇ -0.07 F1 ⬇ -0.07 Acc

🔮 Conjunto Sintético

Clase Precisión Recall F1-Score Soporte
Clase 0 0.84 0.81 0.83 147
Clase 1 0.53 ⬇ -0.18 0.58 ⬆ +0.01 0.55 ⬇ -0.08 53
Accuracy 0.75 ⬇ -0.07
Macro Avg 0.68 ⬇ -0.10 0.70 ⬇ -0.04 0.69 ⬇ -0.07 200
Weighted Avg 0.76 ⬇ -0.06 0.75 ⬇ -0.07 0.75 ⬇ -0.07 200
AUC-ROC: 0.77 ⬇ -0.09
F1-Score (weighted): 0.75 ⬇ -0.07
Accuracy: 0.75 ⬇ -0.07

📊 Resumen de Degradación en Clase Minoritaria (Clase 1)

🎯
Precisión
Original: 0.71
Sintético: 0.53
⬇ -0.18
📈
Recall
Original: 0.57
Sintético: 0.58
⬆ +0.01
⚖️
F1-Score
Original: 0.63
Sintético: 0.55
⬇ -0.08

📚 Fuente Original del Conjunto

Telco Customer Churn Dataset

v1.0
IBM Sample Data Sets
Disponible en repositorios públicos

📄 Resumen (Abstract)

El conjunto de datos de Rotación de Clientes de Telecomunicaciones (Telco Customer Churn) contiene información sobre 7,043 clientes de una empresa de telecomunicaciones. Cada fila representa un cliente y cada columna contiene atributos del cliente. El objetivo es predecir el comportamiento para retener a los clientes, analizando todos los datos relevantes y desarrollando programas de retención de clientes enfocados. La variable objetivo es Churn, que indica si el cliente abandonó la empresa en el último mes.

📱 Contexto del Dominio

La rotación de clientes (churn) es uno de los desafíos más significativos en la industria de las telecomunicaciones. El costo de adquirir un nuevo cliente es 5 a 7 veces mayor que retener a uno existente. Este dataset permite:

  • Identificar factores predictivos de la rotación de clientes
  • Comprender cómo servicios contratados, información de cuenta y datos demográficos afectan la retención
  • Desarrollar modelos predictivos para identificar clientes en riesgo
  • Implementar programas de retención enfocados en clientes de alto riesgo

El dataset incluye información sobre:

  • Clientes que abandonaron en el último mes (variable Churn)
  • Servicios contratados (teléfono, múltiples líneas, internet, seguridad en línea, respaldo, protección de dispositivos, soporte técnico, streaming)
  • Información de cuenta (antigüedad, contrato, método de pago, facturación electrónica, cargos mensuales y totales)
  • Datos demográficos (género, rango de edad, pareja, dependientes)

📊 Descripción de Datos

El dataset contiene 7,043 instancias con 21 atributos (20 variables predictoras y 1 variable objetivo). Las características son de tipo mixto (categóricas, binarias, numéricas).

📋 Variables del Dataset
Variable Tipo Descripción Categorías / Unidades
A. Identificador (A excluir del modelo)
customerID ID Identificador único del cliente Sin valor predictivo. Excluir del modelo.
B. Datos Demográficos
gender Categórica Género del cliente Male / Female
SeniorCitizen Binaria Indica si el cliente es adulto mayor 1 = Sí, 0 = No
Partner Categórica ¿Tiene pareja? Yes / No
Dependents Categórica ¿Tiene dependientes? Yes / No
C. Servicios Contratados
PhoneService Categórica ¿Tiene servicio de teléfono? Yes / No
MultipleLines Categórica ¿Tiene múltiples líneas? Yes / No / No phone service
InternetService Categórica Tipo de servicio de internet DSL / Fiber optic / No
OnlineSecurity Categórica Seguridad en línea Yes / No / No internet service
OnlineBackup Categórica Respaldo en línea Yes / No / No internet service
DeviceProtection Categórica Protección de dispositivos Yes / No / No internet service
TechSupport Categórica Soporte técnico Yes / No / No internet service
StreamingTV Categórica Streaming de TV Yes / No / No internet service
StreamingMovies Categórica Streaming de películas Yes / No / No internet service
D. Información de Cuenta
Tenure Numérica Meses que el cliente ha estado con la empresa meses
Contract Categórica Tipo de contrato Month-to-month / One year / Two year
PaperlessBilling Categórica Facturación electrónica Yes / No
PaymentMethod Categórica Método de pago Electronic check / Mailed check / Bank transfer / Credit card
MonthlyCharges Numérica Cargo mensual unidades monetarias
TotalCharges Numérica Cargo total acumulado unidades monetarias
E. Variable Objetivo
Churn Binaria (Target) Indica si el cliente abandonó la empresa en el último mes Yes = Abandonó
No = Permanece

📋 Características del Dataset

  • Tipo de problema: Clasificación binaria (Churn = Yes/No)
  • Dimensión: Multivariante (7,043 × 21)
  • Tipo de características: Mixtas (Categóricas, Binarias, Numéricas)
  • Valores faltantes: Sí (TotalCharges)
  • Área de aplicación: Telecomunicaciones, Marketing, Retención de Clientes
  • Versión: IBM Sample Data Sets (actualizado 2019)

📖 Fuente y Actualización

Este dataset fue originalmente publicado como parte de los IBM Sample Data Sets y ha sido actualizado por la comunidad de IBM:

Nueva versión de IBM (2019): Telco Customer Churn - IBM Community

⚖️ Ética y Privacidad

El conjunto de datos ha sido anonimizado para proteger la privacidad de los clientes. La variable customerID es un identificador sin relación con información personal identificable. 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, sin divulgación de información que permita la reidentificación de clientes.

📋 Notas de Uso

Este conjunto de datos es ideal para predicción de rotación de clientes y análisis de retención. Se recomienda:

  • Excluir customerID del modelado por ser un identificador sin valor predictivo
  • Manejar valores perdidos en TotalCharges (imputación por media o mediana, o asignar 0)
  • La variable SeniorCitizen ya está codificada como 0/1
  • Codificar variables categóricas:
    • Binarias (gender, Partner, Dependents, PhoneService, PaperlessBilling): Label Encoding (Yes/No → 1/0)
    • MultipleLines, InternetService, Contract, PaymentMethod: One-Hot Encoding
    • Servicios de internet (OnlineSecurity, OnlineBackup, etc.): One-Hot Encoding o mantener como categorías con "No internet service"
  • TotalCharges puede derivarse como MonthlyCharges × Tenure (aproximadamente)
  • Estandarizar/normalizar variables numéricas (Tenure, MonthlyCharges, TotalCharges)
  • La variable objetivo Churn está codificada como Yes (abandonó) y No (permanece)
  • Las variables de servicios contratados suelen ser predictores importantes del churn
  • El tipo de contrato (Month-to-month) es frecuentemente un factor clave en la rotación
  • Utilizar validación cruzada estratificada debido al posible desbalanceo entre clases (generalmente más clientes permanecen que se van)

💡 Importancia en la Industria de Telecomunicaciones

La predicción de rotación de clientes (churn prediction) es una de las aplicaciones más valiosas del aprendizaje automático en la industria de las telecomunicaciones. El costo de la rotación es significativo:

  • El costo de adquirir un nuevo cliente es 5 a 7 veces mayor que retener a uno existente
  • La reducción del churn en un 5% puede aumentar las ganancias entre un 25% y un 95%
  • Los clientes leales tienden a comprar más servicios y son más rentables a largo plazo
  • La predicción temprana permite intervenciones proactivas (ofertas especiales, mejor servicio, etc.)

Este dataset ha sido fundamental para la investigación en análisis de retención de clientes y predicción de churn, demostrando el valor del análisis predictivo en la retención de clientes en el sector de telecomunicaciones.

📖 Cómo citar la fuente original

Telco Customer Churn Dataset. IBM Sample Data Sets. Kaggle. https://www.kaggle.com/datasets/blastchar/telco-customer-churn

📚 Referencias Adicionales

🔄 Transformaciones Aplicadas

Modificaciones realizadas al conjunto original (Telco Customer Churn)

  • Limpieza inicial y eliminación de variables no predictivas:
    • Eliminación de la columna customerID (identificador único de cliente) por no aportar valor predictivo y para evitar sobreajuste.
    • Reducción de la dimensionalidad del dataset para mejorar la eficiencia del modelo.
  • Corrección de la variable 'TotalCharges':
    • Conversión forzada de TotalCharges a tipo numérico utilizando pd.to_numeric(..., errors='coerce') para manejar valores no numéricos (espacios en blanco).
    • Imputación de valores NaN resultantes con 0 (corresponde a clientes con tenure=0, sin cargos acumulados).
    • Documentación del proceso de corrección para transparencia metodológica.
  • Codificación de la variable objetivo:
    • Transformación de Churn de texto a binaria: 'No'0 (Cliente retenido), 'Yes'1 (Cliente se marchó).
    • Documentación del objetivo: predicción de cancelación de servicios de telecomunicaciones.
  • Codificación de variables binarias:
    • Transformación de 5 variables a binarias (0/1) con mapeo 'Yes'→1, 'No'→0: Partner, Dependents, PhoneService, PaperlessBilling.
    • Gender: Mapeo 'Male'→1, 'Female'→0.
    • Documentación detallada de cada mapeo en la leyenda.
  • Codificación de variables nominales con múltiples categorías:
    • Transformación de 10 variables categóricas a valores numéricos mediante Label Encoding: MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract, PaymentMethod.
    • Generación de mapeo completo (código → valor original) en la leyenda para todas las variables nominales.
    • Preservación de la semántica original a través de la documentación.
  • Submuestreo estratificado para reducción del dataset:
    • Reducción del dataset a 1,000 ejemplos representativos mediante muestreo estratificado.
    • Uso de train_test_split con parámetro stratify para preservar exactamente la proporción original de clases (desbalance de churn).
    • Semilla fija (random_state=42) para garantizar reproducibilidad científica de la muestra.
    • Verificación de integridad con diferencia máxima < 1% en proporción de clases.
  • Generación de documentación completa:
    • Creación del archivo leyenda_telco_churn.txt con semántica completa de la variable objetivo y todas las variables predictoras.
    • Documentación de la corrección de TotalCharges (conversión y imputación con 0).
    • Mapeo de variables binarias (Partner, Dependents, PhoneService, PaperlessBilling, gender).
    • Mapeo completo de variables nominales codificadas (10 variables) con sus valores originales.
    • Descripción de variables numéricas: tenure (meses), MonthlyCharges, TotalCharges, SeniorCitizen.
    • Contextualización del dataset: predicción de cancelación de servicios de telecomunicaciones.
    • Estadísticas finales: total de instancias, tasa de churn y ratio de desbalance.
  • Preservación de la estructura y calidad de datos:
    • Mantenimiento de las 7,043 instancias (clientes) originales para el dataset completo.
    • Dataset reducido de 1,000 ejemplos estratificados para experimentación eficiente.
    • Dataset final con 19 variables predictoras (mixtas: binarias, nominales codificadas y numéricas) y 1 variable objetivo binaria.
    • Guardado en formato CSV con separador punto y coma (;) para compatibilidad internacional.

📊 Resultado: Dataset de 7,043 clientes de telecomunicaciones (con versión reducida estratificada de 1,000 ejemplos) con 19 variables predictoras (demográficas, de servicios contratados, de facturación y de antigüedad) y 1 variable objetivo binaria (Churn). Desbalance moderado (~73% clientes retenidos / ~27% clientes que se marcharon) — escenario ideal para validación de técnicas de generación de datos sintéticos y evaluación del índice TabDSFidelity en contextos de retención de clientes y predicción de abandono en telecomunicaciones, donde factores como tipo de contrato, servicios contratados, cargos mensuales y antigüedad son determinantes.

📱 Fuente: Telco Customer Churn Dataset (IBM Watson Analytics) - Datos de clientes de una compañía de telecomunicaciones.

📊 Variables de servicios: PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies.

📋 Variables de contrato y facturación: Contract (Mensual, Un año, Dos años), PaymentMethod, PaperlessBilling, MonthlyCharges, TotalCharges.

👤 Variables demográficas: gender, SeniorCitizen, Partner, Dependents, tenure (meses de antigüedad).

📁 Leyenda disponible: Archivo leyenda_telco_churn.txt con mapeo completo de variables binarias, nominales (10 variables codificadas) y descripción de variables numéricas.

🎯 Variable objetivo: Churn (1 = Cliente se marchó, 0 = Cliente retenido).

🧹 Limpieza aplicada: Eliminación de customerID, corrección de TotalCharges (conversión y imputación con 0), codificación de target, mapeo de variables binarias, Label Encoding de 10 variables nominales, reducción estratificada a 1,000 ejemplos.

📋 Diccionario de Datos Detallado

Variable Descripción de Telecomunicaciones Tipo Rango / Categorías Unidad ¿Objetivo?
MultipleLines Servicio de líneas telefónicas múltiples Categórico 0: No, 1: Sin servicio telefónico, 2: Sí N/A No
InternetService Tipo de servicio de Internet Categórico 0: DSL, 1: Fibra óptica, 2: Sin Internet N/A No
OnlineSecurity Servicio de seguridad en línea Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
OnlineBackup Servicio de respaldo en línea Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
DeviceProtection Servicio de protección de dispositivos Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
TechSupport Servicio de soporte técnico Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
StreamingTV Servicio de TV por streaming Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
StreamingMovies Servicio de películas por streaming Categórico 0: No, 1: Sin Internet, 2: Sí N/A No
Contract Tipo de contrato (duración) Categórico 0: Mes a mes, 1: 1 año, 2: 2 años N/A No
PaymentMethod Método de pago del cliente Categórico 0: Transferencia bancaria, 1: Tarjeta crédito, 2: Cheque electrónico, 3: Cheque postal N/A No
tenure Antigüedad del cliente en la compañía Numérico 0 - 72 meses No
MonthlyCharges Cargo mensual del cliente Numérico 18.95 - 118.75 moneda No
TotalCharges Cargo total acumulado del cliente Numérico 0 - 8,672.45 moneda No
gender Género del cliente Binario 0: Femenino, 1: Masculino N/A No
SeniorCitizen Cliente de la tercera edad (≥ 65 años) Binario 0: No, 1: Sí N/A No
Partner Cliente tiene pareja/persona significativa Binario 0: No, 1: Sí N/A No
Dependents Cliente tiene personas a cargo Binario 0: No, 1: Sí N/A No
PhoneService Cliente tiene servicio telefónico Binario 0: No, 1: Sí N/A No
PaperlessBilling Cliente usa facturación electrónica Binario 0: No, 1: Sí N/A No
Churn Abandono del cliente (objetivo) Binario 0: No, 1: Sí N/A
20 Variables totales
3 Numéricas
10 Categóricas
7 Binarias
Objetivo: Abandono (Churn)
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 Abandono de Clientes de Telecomunicaciones (Telco Churn). Comprender estas codificaciones es fundamental para la correcta interpretación de los resultados de retención de clientes.

Servicios de Telecomunicaciones 10 Categóricas

Variables de servicios contratados

MultipleLines:
0: No, 1: Sin servicio telefónico, 2: Sí
InternetService:
0: DSL, 1: Fibra óptica, 2: Sin Internet
OnlineSecurity:
0: No, 1: Sin Internet, 2: Sí
OnlineBackup:
0: No, 1: Sin Internet, 2: Sí
DeviceProtection:
0: No, 1: Sin Internet, 2: Sí
TechSupport:
0: No, 1: Sin Internet, 2: Sí
StreamingTV:
0: No, 1: Sin Internet, 2: Sí
StreamingMovies:
0: No, 1: Sin Internet, 2: Sí
⚠️

Dependencia condicional: Para variables de servicios en línea (OnlineSecurity, OnlineBackup, etc.), el código 1 ("Sin Internet") solo aplica cuando InternetService = 2.

Contract Categórica (Ordinal)
Código Significado Riesgo Churn
0Month-to-month (Mes a mes)✗ Muy Alto
1One year (1 año)✓ Bajo
2Two year (2 años)✓ Muy Bajo
🚨

Factor clave: Los contratos mes a mes tienen la tasa de abandono más alta. Contratos a largo plazo reducen significativamente el churn.

PaymentMethod Categórica (Nominal)
Código Significado Riesgo Churn
0Bank transfer (Transferencia bancaria automática)✓ Bajo
1Credit card (Tarjeta de crédito automática)✓ Bajo
2Electronic check (Cheque electrónico)✗ Alto
3Mailed check (Cheque postal)⚠ Moderado
💳

Observación: Los métodos de pago automáticos (transferencia bancaria y tarjeta de crédito) tienen menor churn que métodos manuales.

Variables Binarias Binario

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

gender Género (0: Femenino, 1: Masculino)
SeniorCitizen Tercera edad ≥65 años (0: No, 1: Sí)
Partner Tiene pareja (0: No, 1: Sí)
Dependents Tiene dependientes a cargo (0: No, 1: Sí)
PhoneService Servicio telefónico (0: No, 1: Sí)
PaperlessBilling Facturación electrónica (0: No, 1: Sí)
Churn 🎯 Variable Objetivo: Abandono (0: No, 1: Sí)
ℹ️

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

📊
Variables categóricas: 10
  • MultipleLines (3 niveles)
  • InternetService (3 niveles)
  • OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies (3 niveles cada una)
  • Contract (3 niveles - ordinal)
  • PaymentMethod (4 niveles)
🎯
Variables binarias: 7
  • gender, SeniorCitizen, Partner, Dependents
  • PhoneService, PaperlessBilling
  • 🎯 Churn (Objetivo - Abandono)
📈
Variables numéricas: 3
  • tenure (Antigüedad en meses)
  • MonthlyCharges (Cargo mensual)
  • TotalCharges (Cargo total acumulado)
⚠️
Recomendaciones de Retención:
  • Factor crítico: Contract - Clientes con contrato mes a mes (0) tienen 3-4x más churn que los de 2 años
  • Antigüedad: tenure < 12 meses es período de alto riesgo de abandono
  • Servicios adicionales: OnlineSecurity = 2 y TechSupport = 2 reducen significativamente el churn
  • Facturación: PaperlessBilling = 1 se asocia con mayor churn (clientes más digitales)
  • Pago: PaymentMethod = 2 (cheque electrónico) es el método con mayor churn
  • Servicios de streaming: StreamingTV = 2 y StreamingMovies = 2 pueden aumentar el churn si no hay satisfacción
  • TotalCharges: Corregido para nuevos clientes (tenure=0 → TotalCharges=0)

🔬 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

  • PhoneService == 0 → MultipleLines = 1 (Sin servicio telefónico → múltiples líneas = No)
  • PhoneService == 1 → MultipleLines ≠ 1 (Con servicio telefónico → múltiples líneas ≠ No)
  • InternetService == 2 (Fibra óptica) → OnlineSecurity = 1
  • InternetService == 2 → OnlineBackup = 1
  • InternetService == 2 → DeviceProtection = 1
  • InternetService == 2 → TechSupport = 1
  • InternetService == 2 → StreamingTV = 1
  • InternetService == 2 → StreamingMovies = 1
  • InternetService ≠ 2 → TechSupport ≠ 1
  • InternetService ≠ 2 → StreamingTV ≠ 1
  • InternetService == 1 (DSL) → MonthlyCharges > 65
  • InternetService == 2 (No) → MonthlyCharges < 30
  • tenure == 1 → TotalCharges ≤ 200
  • tenure == 0 → TotalCharges = 0
  • Contract == 2 (Dos años) → tenure > 0
  • PaymentMethod == 2 (Electrónico) → PaperlessBilling = 1
  • PhoneService e InternetService son mutuamente excluyentes (No ambos en estado "No")
  • Contract == 2 (Dos años) → Churn = 0
  • SeniorCitizen == 1 → InternetService ≠ 0 (Tiene internet)
  • StreamingTV == 2 (Sí) → StreamingMovies = 2 (Sí)

⚙️ 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 882 0.809 0.759 0.760 5.246 0.166 0.072 0.016 0.974 66.356 0 882 0.510
Smote 1 882 0.823 0.762 0.755 5.909 0.269 0.131 0.021 0.960 66.961 0.033 617 0.525
Borderline SMOTE 1 882 0.806 0.766 0.760 4.704 0.270 0.247 0.018 0.966 58.970 0.036 620 0.508
ADASYN 1.023 872 0.813 0.777 0.770 6.743 0.262 0.394 0.018 0.964 56.737 0.034 610 0.507 🏆
SMOTE RSB* Adaptado 1.387 759 0.815 0.760 0.755 6.101 0.210 0.472 0.007 0.983 53.827 0.022 612 0.514
SMOTE RSB* Adaptado + Reglas 1.387 759 0.810 0.740 0.740 3.916 0.208 0.497 0.007 0.983 54.071 0.021 611 0.533
OOF PSO para Balanceo 1.313 777 0.820 0.745 0.770 4.981 0.264 0.005 0.024 0.877 64.230 0.048 600 0.519
OOF PSO para Balanceo + Reglas 1.018 882 0.824 0.767 0.790 5.512 0.349 0.000 0.324 0.783 66.545 0.102 182 0.513
Mejor seleccionado: ADASYN (TabDSFidelity: 6.743, AUC: 0.813, F1: 0.777, MIA: 0.507). 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.051 9957 0.795 0.771 0.765 9.458 0.473 0.306 0.014 0.947 82.357 0.851 0 0.530 🏆
SMOTE RSB* + Ruido Gaussiano + Reglas 1.294 9957 0.797 0.747 0.745 8.128 0.473 0.306 0.267 0.934 224.472 0.851 0 0.510
CTGAN 1.010 10000 0.788 0.740 0.725 5.527 0.559 0.000 0.045 0.910 443.741 0.149 0 0.542
CTGAN + Reglas del Dominio 1.286 10000 0.783 0.730 0.715 3.944 0.559 0.000 0.285 0.895 588.398 0.170 0 0.511
TVAE 1.096 9998 0.780 0.744 0.740 4.914 0.640 0.033 0.033 0.935 209.954 0.103 0 0.501
TVAE + Reglas del Dominio 1.059 9998 0.780 0.731 0.725 3.727 0.640 0.014 0.279 0.919 351.019 0.127 0 0.521
OOF PSO para Aumento 1 10000 0.791 0.703 0.685 2.715 0.770 0.000 0.189 0.581 130.270 0.128 1 0.516
OOF PSO para Aumento + Reglas 1 10000 0.798 0.684 0.665 2.095 0.770 0.000 0.522 0.640 270.835 0.148 0 0.517
SMOTE RSB* Refinado 1.000 9985 0.799 0.754 0.750 9.264 0.476 0.366 0.014 0.948 83.197 0.801 0 0.538
SMOTE RSB* Refinado + Reglas 1.250 9985 0.796 0.720 0.715 6.949 0.475 0.362 0.269 0.936 227.085 0.801 0 0.473
Mejor seleccionado: SMOTE RSB* + Ruido Gaussiano (TabDSFidelity: 9.458, AUC: 0.795, F1: 0.771, MIA: 0.530). 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.049 10829 0.783 0.741 0.735 6.082 0.452 0.308 0.013 0.950 155.832 0.851 0 0.525
SMOTE RSB* + Ruido Gaussiano + Reglas 1.270 10829 0.794 0.770 0.765 7.844 0.452 0.308 0.060 0.938 295.980 0.851 0 0.524
CTGAN 1.011 10872 0.762 0.723 0.710 2.367 0.517 0.000 0.040 0.916 519.658 0.140 124 0.510
CTGAN + Reglas del Dominio 1.263 10872 0.772 0.721 0.710 2.540 0.517 0.000 0.075 0.902 661.931 0.160 123 0.530
TVAE 1.086 10870 0.768 0.722 0.715 2.663 0.588 0.056 0.032 0.938 282.404 0.094 123 0.483
TVAE + Reglas del Dominio 1.052 10870 0.758 0.730 0.725 2.414 0.588 0.026 0.072 0.925 423.102 0.116 123 0.464
OOF PSO para Aumento 1.002 10872 0.799 0.756 0.745 3.963 0.705 0.000 0.144 0.612 203.361 0.119 124 0.506
OOF PSO para Aumento + Reglas 1.002 10872 0.799 0.751 0.745 3.615 0.705 0.000 0.250 0.674 340.979 0.137 123 0.524
SMOTE RSB* Refinado 1.002 10857 0.800 0.757 0.755 7.795 0.455 0.364 0.014 0.951 156.286 0.801 0 0.529
SMOTE RSB* Refinado + Reglas 1.230 10857 0.805 0.796 0.795 9.737 0.455 0.362 0.062 0.940 302.277 0.801 0 0.473 🏆
Mejor seleccionado: SMOTE RSB* Refinado + Reglas del Dominio (TabDSFidelity: 9.737, AUC: 0.805, F1: 0.796, MIA: 0.473). Nota: Ratio <= 1.5 = Conjunto Balanceado.

📈 Diagrama del Proceso de Generación

Conjunto Original
CD_45
Balanceo
(8 métodos)
↓ Selección por TabDSFidelity
⭐ Mejor Balanceado
ADASYN
Generación Sintética
(10 métodos)
↓ Evaluación TabDSFidelity
⭐ Mejor Sintético
SMOTE RSB* + Ruido Gaussiano
⭐ Mejor Aumentado
SMOTE RSB* Refinado + 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 Customer Churn Prediction in Telecommunications (Version 0). figshare. https://doi.org/10.6084/m9.figshare.32946392