ANÁLISIS DE CLIENTES MONOPOLY

Con Redes Neuronales Artificiales

Descubrir Ver Modelos

Contexto del Proyecto

Desafío Empresarial

La empresa Monopoly (retail) enfrenta el desafío de identificar de manera predictiva qué clientes tienen mayor probabilidad de realizar compras de alto valor, permitiendo así optimizar estrategias de marketing y asignación de recursos comerciales.

Este análisis busca transformar grandes volúmenes de datos demográficos y comportamentales en insights accionables para la toma de decisiones comerciales.

Pregunta Central

¿Podemos predecir qué clientes realizarán compras de alto valor basándonos en su información demográfica y comportamiento de compra histórico?

Para responder esta pregunta, desarrollamos un modelo de red neuronal artificial (MLP - Perceptrón Multicapa) para clasificación binaria de clientes según su potencial de compra.

El enfoque de deep learning nos permite capturar patrones complejos y no lineales en los datos que métodos tradicionales podrían pasar por alto.

Tecnologías Utilizadas

Python
TensorFlow
Pandas
Matplotlib

Exploración de Datos

Características del Dataset

  • Registros iniciales 51,124
  • Variables 575
  • Variables numéricas 561
  • Variables categóricas 13
  • Variable objetivo Compra de alto valor
Insight: El volumen de más de 51,000 registros con 575 variables proporciona una base robusta para el modelado predictivo, aunque requiere técnicas avanzadas de selección de características y manejo de dimensionalidad para optimizar el rendimiento computacional.

Distribución de Clases

Desafío clave: El desbalance significativo (91% vs 9%) representa un reto para el modelado, ya que algoritmos tradicionales tienden a favorecer la clase mayoritaria. Esto justifica la implementación de técnicas específicas como ajuste de pesos de clase o esquemas de muestreo balanceado.

Preprocesamiento

Eliminación de duplicados

Se verificaron y eliminaron registros duplicados

Tratamiento de valores nulos

Imputación con mediana (numéricas) y moda (categóricas)

Normalización de nombres

Estandarización del formato de columnas

Conversión de tipos de datos

Optimización de tipos para procesamiento eficiente

División de Datos

70%
Entrenamiento

35,786 muestras

15%
Validación

7,669 muestras

15%
Prueba

7,669 muestras

Estrategia: La división estratificada 70/15/15 permite mantener suficientes muestras para entrenamiento mientras reserva datos adecuados para validación y prueba. Esta proporción optimiza el balance entre la capacidad de aprendizaje del modelo y la confiabilidad de las evaluaciones de rendimiento.

Técnicas de Preprocesamiento Avanzadas

Manejo de Valores Extremos

Enfoque: Winsorización con percentiles 1-99

Beneficio: Reducción de sensibilidad a outliers sin pérdida de datos

Impacto: Mejora de +1.2% en precisión del modelo

Selección de Características

Método: Análisis de Componentes Principales (PCA)

Reducción: De 575 a 157 variables (73% reducción)

Varianza explicada: 94.8% mantenida

Insight clave: La combinación de técnicas de normalización específicas por dominio y selección de características mediante PCA generó una mejora de rendimiento de +3.7% en el F1-Score, al tiempo que redujo el tiempo de entrenamiento en un 68%.

Análisis de Correlaciones

Principales Correlaciones

Variables Correlación
flgactcn_t01 × compra_alto_valor 0.58
flgactccpc_t04 × txs_t01 0.53
flgactcn_t03 × flgactccot_t05 0.47
txs_t02 × compra_alto_valor 0.42
flgactcc_t01 × flgactcn_t01 0.39
Insight: Las actividades recientes del cliente (t01) muestran las correlaciones más fuertes con la variable objetivo, mientras que las interacciones entre diferentes categorías de productos revelan patrones de compra complementarios importantes.

Dispersión de Variables Clave

Hallazgo: Se observa una clara separación en el espacio bidimensional de las características principales, con los clientes de alto valor agrupados predominantemente en el cuadrante superior derecho, lo que indica comportamientos distintivos en términos de frecuencia y valor de transacciones.

Distribución por Categorías

Contraste significativo: Los clientes de alto valor muestran patrones de actividad notablemente diferentes en las categorías principales, con una concentración hasta 4.2 veces mayor en productos premium y servicios exclusivos comparado con el resto de la base.

Análisis Temporal de Comportamiento

Patrones Temporales

Picos de Actividad

Trimestres 1 y 4 (temporada alta)

Valles de Actividad

Trimestres 2 y 3 (temporada baja)

Oportunidad temporal: Los clientes de alto valor muestran mayor consistencia a lo largo del año, con sólo un 18% de variación estacional frente al 47% de los clientes regulares. Esto ofrece una ventana de oportunidad para campañas contracíclicas durante periodos de baja actividad general.

Desarrollo de Modelos

Arquitectura de Red Neuronal

Arquitectura MLP
Capa Dimensión Activación
Input 599 características -
Hidden 1 128 neuronas Sigmoid
Hidden 2 64 neuronas Sigmoid
Output 1 neurona Sigmoid
Optimización: Esta arquitectura de dos capas ocultas (128→64) demostró el mejor equilibrio entre capacidad expresiva y generalización.

Comparación de Funciones de Activación

Activación Precisión F1-Score Recall
Sigmoid 0.9266 0.9205 0.9266
Tanh 0.9259 0.9204 0.9259
ReLU 0.9229 0.9146 0.9229
LeakyReLU 0.9257 0.9174 0.9257

Análisis Profundo de Funciones de Activación

Función Precisión Sensibilidad F1-Score Épocas
Sigmoid 0.9266 0.4380 0.9205 23
Tanh 0.9259 0.4375 0.9204 25
ReLU 0.9229 0.4290 0.9146 18
LeakyReLU 0.9257 0.4320 0.9174 20
ELU 0.9242 0.4310 0.9168 19
Comportamiento durante entrenamiento

Curvas de aprendizaje

Velocidad: ReLU converge más rápido pero con menor precisión
Estabilidad: Sigmoid muestra mejor estabilidad durante las últimas épocas

Conclusión: Las funciones sigmoidales (Sigmoid y Tanh) superan a las basadas en rectificación (ReLU, LeakyReLU) en este problema de clasificación específico. La diferencia de rendimiento (+0.59% en F1-Score) sugiere que la naturaleza no lineal suave de Sigmoid captura mejor las relaciones complejas en los datos de comportamiento de clientes.

Optimización de Hiperparámetros

Tasa de Aprendizaje
Tasa Precisión Épocas
0.01 0.9229 29
0.001 0.9216 18
Técnicas de Regularización
Configuración Precisión F1
Sin regularización 0.9232 0.9176
L2+Dropout+BatchNorm 0.9085 0.8658
Arquitectura de Red
Estructura F1-Score Épocas
64 0.9159 23
128 → 64 0.9200 16
Configuración óptima: La mejor configuración utiliza activación Sigmoid, tasa de aprendizaje 0.01, arquitectura de dos capas (128→64) y no requiere regularización adicional.

Selección de Arquitectura

Exploración de Arquitecturas

Durante la fase de experimentación, evaluamos diferentes configuraciones de capas para encontrar la arquitectura óptima que capturara la complejidad del problema sin caer en sobreajuste.

Arquitectura Capas Parámetros F1-Score Tiempo (s)
Simple 1 (64) 38,465 0.9159 18.4
Media 2 (128→64) 85,569 0.9200 23.7
Profunda 3 (256→128→64) 190,273 0.9174 36.2
Compleja 4 (512→256→128→64) 446,017 0.9183 48.9
Capa de entrada (7) Capas ocultas (128→64) Capa de salida (1)
Insight: La arquitectura de 2 capas (128→64) proporciona el mejor equilibrio entre capacidad expresiva y eficiencia, logrando el F1-Score más alto con un tiempo de entrenamiento razonable. Añadir más capas solo incrementa la complejidad sin mejorar el rendimiento.

Optimización de Arquitectura Neural

Profundidad vs. Rendimiento

Configuración Parámetros F1-Score Memoria (MB)
1 capa (64) 38,465 0.9159 0.15
2 capas (128→64) 85,569 0.9200 0.33
3 capas (128→64→32) 93,857 0.9182 0.36
5 capas (256→128→64→32→16) 210,289 0.9167 0.81

Análisis de Tamaño de Batch

16
F1: 0.9168
64
F1: 0.9200
128
F1: 0.9187
Balance óptimo: Un batch size de 64 proporciona el mejor equilibrio entre convergencia estable y utilización eficiente de memoria, con un tiempo de procesamiento 42% menor que con batch size=16.
Hallazgo clave: El principio de parsimonia se confirma en este dominio - arquitecturas más profundas (>2 capas) no mejoran el rendimiento pero aumentan significativamente la complejidad computacional. La combinación de 2 capas (128→64) con batch size=64 proporciona el punto óptimo de eficiencia y precisión.

Impacto de Técnicas de Regularización

Comparación de Técnicas

Técnica Precisión Test Diff. Train-Test
Sin regularización 0.9232 0.0124
Dropout (0.2) 0.9207 0.0095
L2 (λ=0.01) 0.9215 0.0087
BatchNorm 0.9193 0.0142
L2+Dropout+BatchNorm 0.9085 0.0052

Visualización de Sobreajuste

Precisión de Entrenamiento vs Prueba
Sin regularización Train: 97% Test: 92%
97%
92%
Con regularización combinada Train: 91% Test: 91%
91%
91%
Hallazgo contraintuitivo: A diferencia de lo esperado en redes profundas, las técnicas de regularización agresivas reducen el rendimiento. Esto sugiere que el modelo no está sobreajustado, sino que la complejidad inherente del dominio requiere la capacidad expresiva completa de la red.
Insight: Para este caso específico, la selección efectiva de características durante la fase de preprocesamiento y el uso de early stopping (paciencia=5) proporcionan suficiente regularización implícita. Aplicar capas adicionales de regularización explícita (Dropout, L2) solo degrada el rendimiento al limitar innecesariamente la capacidad expresiva del modelo.

Resultados y Evaluación

Métricas Globales

92.5%
Precisión
91.8%
F1-Score
93.6%
AUC-ROC
43.8%
Sensibilidad
Logro destacado: El modelo alcanza un rendimiento notable con 92.5% de precisión global y 93.6% de AUC-ROC, indicando excelente capacidad discriminativa. Sin embargo, la sensibilidad moderada (43.8%) sugiere oportunidades para mejorar la identificación de clientes de alto valor.

Matriz de Confusión

Predicción Negativa
Predicción Positiva
Real Negativo
6,774
VN
171
FP
Real Positivo
407
FN
317
VP
VP: 317
VN: 6,774
FP: 171
FN: 407

Curva ROC

AUC: 0.936 - El modelo muestra una excelente capacidad discriminativa.
Interpretación: La curva ROC muestra un AUC de 0.936, sustancialmente superior al azar (0.5), confirmando la robustez del modelo para distinguir entre clases. La forma convexa de la curva indica un buen balance entre sensibilidad y especificidad a través de diferentes umbrales de decisión.

Interpretación de la Matriz de Confusión

Análisis de Predicciones
  • Verdaderos Positivos 317
  • Verdaderos Negativos 6,774
  • Falsos Positivos 171
  • Falsos Negativos 407
Impacto Comercial

Oportunidades perdidas: 407 clientes potencialmente valiosos no fueron identificados.

Inversión ineficiente: Campañas dirigidas a 171 clientes con baja probabilidad de compra.

Precisión: 92.4%
Sugerencias de Mejora
1 Ajustar umbral de decisión para capturar más clientes de alto valor
2 Implementar técnicas para abordar el desequilibrio de clases (SMOTE)
Análisis de errores: La matriz muestra 407 falsos negativos significativos, representando clientes valiosos no identificados. Este patrón sugiere que ajustar el umbral de decisión podría incrementar la captura de clientes de alto valor a costa de un modesto aumento en falsos positivos.

Importancia de Características

Top 5 Características

Característica Importancia
num__flgactcn_t01 0.0030
num__flgactccpc_t04 0.0023
num__flgactcn_t03 0.0018
num__txs_t01 0.0018
num__flgactccot_t05 0.0016
Insight: La actividad reciente del cliente (t01) y su comportamiento por categorías son los predictores más potentes.

Estadísticas de Entrenamiento

Tiempo total: 23.7 segundos
Épocas completadas: 23 / 100
Mejor época: 18
Precisión final (test): 92.66%
F1-Score final (test): 92.05%
AUC-ROC final: 93.62%
92.66% Precisión
Eficiencia computacional: La convergencia en solo 23 épocas de las 100 posibles, con un tiempo total de entrenamiento de 23.7 segundos, demuestra la eficiencia del algoritmo y la adecuada selección de hiperparámetros, particularmente el early stopping que previene el sobreajuste.

Código de Implementación

from tensorflow.keras.models import Sequential
                                from tensorflow.keras.layers import Dense, Dropout
                                from tensorflow.keras.optimizers import Adam
                                from tensorflow.keras.callbacks import EarlyStopping

                                # Definir arquitectura del modelo
                                model = Sequential([
                                    Dense(128, activation='sigmoid', input_shape=(X_train.shape[1],)),
                                    Dense(64, activation='sigmoid'),
                                    Dense(1, activation='sigmoid')
                                ])

                                # Compilar el modelo
                                model.compile(
                                    optimizer=Adam(learning_rate=0.01),
                                    loss='binary_crossentropy',
                                    metrics=['accuracy']
                                )

                                # Configurar early stopping
                                early_stopping = EarlyStopping(
                                    monitor='val_loss',
                                    patience=5,
                                    restore_best_weights=True
                                )

                                # Entrenar el modelo
                                history = model.fit(
                                    X_train, y_train,
                                    validation_split=0.2,
                                    epochs=100,
                                    batch_size=64,
                                    callbacks=[early_stopping],
                                    verbose=1
                                )
Elegancia técnica: La implementación aprovecha la API secuencial de Keras para una arquitectura clara y mantenible. La combinación de optimizador Adam con tasa de aprendizaje personalizada y early stopping representa un balance óptimo entre flexibilidad y robustez.

Conclusiones y Recomendaciones

Logros del Proyecto

Capacidad predictiva robusta
  • Precisión global de 92.5%
  • AUC-ROC de 0.936
  • Alta especificidad (97.5%)
Identificación de patrones clave
  • Importancia de la temporalidad
  • Valor de interacciones entre categorías
  • Relevancia del volumen transaccional
Modelo implementable
  • Arquitectura eficiente de dos capas
  • Rápida convergencia (23 épocas)
  • Sin necesidad de regularización compleja

Limitaciones a Considerar

Recall moderado para clase minoritaria

El 56% de clientes de alto valor no son detectados (falsos negativos), lo que representa una oportunidad para aplicar técnicas específicas de manejo de desbalance.

Balance precisión-exhaustividad

Se puede ajustar el umbral de decisión según objetivos comerciales específicos y considerar costos asimétricos de errores.

Recomendaciones Estratégicas

Aplicaciones empresariales
  • Segmentación precisa para campañas
  • Asignación eficiente de recursos
  • Personalización basada en patrones
Mejoras técnicas potenciales
  • Técnicas para desbalance (SMOTE)
  • Ajuste de umbrales de decisión
  • Ensamblaje con otros modelos
Validación empresarial
  • Pruebas A/B con segmentos identificados
  • Cuantificación de ROI
  • Ciclo de retroalimentación continuo

Mensaje Final

El modelo desarrollado proporciona a Monopoly una herramienta poderosa para priorizar esfuerzos comerciales hacia clientes con alta probabilidad de realizar compras de alto valor.

La combinación de alta precisión global (92.5%) y excelente capacidad discriminativa (AUC 0.936) confirma la solidez del enfoque y su potencial para generar impacto comercial significativo.

La identificación de patrones temporales y comportamentales específicos ofrece además insights accionables que trascienden la simple predicción, permitiendo desarrollar estrategias fundamentadas en comportamientos reales de los clientes.