📊 Pipeline completo de Data Science: desde un dataset con datos crudos hasta un modelo integrador de Machine Learning sobre 11.964 transacciones retail en 22 países de LatAm.
Supertienda es una cadena de artículos de oficina con presencia en 22 países de Latinoamérica. Este proyecto construye un pipeline end-to-end de Data Science sobre sus datos de ventas 2019–2023, con el objetivo de responder preguntas de negocio concretas y generar modelos predictivos accionables.
El volumen total analizado es de USD 44.107.727 distribuido en 11.964 transacciones y 794 clientes únicos.
- 🌎 ¿En qué países opera Supertienda y cómo se distribuyen geográficamente las ventas?
- 👥 ¿Quiénes son los clientes de mayor valor y cómo segmentarlos para acciones diferenciadas?
- 📦 ¿Qué productos se venden juntos? ¿Cómo capitalizar el cross-selling?
- 💰 ¿Qué región genera mayores ingresos y cómo proyectar ventas a 2024?
⚠️ ¿Qué transacciones presentan comportamiento anómalo y qué impacto tienen en la rentabilidad?
- Fuente: Kaggle — "Supertienda" (retail de artículos de oficina en LatAm)
- Formato original:
.xlsx, cargado desde Google Drive viagdown - Registros: 11.964 transacciones — 2019 a 2023
- Cobertura: 22 países, 4 regiones (Norte, Centro, Sur, Caribe)
| Problema | Descripción | Impacto |
|---|---|---|
| Valores nulos en campos geográficos | Registros sin país o región asignada | Distorsión en análisis geoespacial |
| Duplicados lógicos | Transacciones con mismo ID pero campos distintos | Doble conteo en métricas de ventas |
| Outliers extremos en Descuento | Descuentos > 80% mezclados con transacciones normales | Contaminación en modelos de regresión |
| Tipos de datos inconsistentes | Fechas como string, montos como texto con comas | Imposibilidad de operar numéricamente |
| Ganancia negativa sin contexto | 34% de transacciones con pérdida | Señal real de negocio, no error — requería validación |
Cada decisión de limpieza tuvo una razón de negocio explícita:
Decisión: Eliminación de filas sin país/región (no imputación). Justificación: El análisis geoespacial y la segmentación regional son ejes centrales del proyecto. Imputar con la moda hubiera introducido sesgo geográfico artificial que distorsionaría los rankings por país.
Decisión: Conservar el registro con fecha más reciente ante duplicados de ID de orden. Justificación: En retail, una orden puede ser modificada (devolución parcial, ajuste de precio). El registro más reciente refleja el estado final del negocio.
Decisión: Conversión estricta con pd.to_datetime() y pd.to_numeric() con manejo de errores.
Justificación: Los modelos de series temporales (Prophet, XGBoost con lags) requieren fechas como índice continuo. Un solo registro mal tipado rompe el pipeline temporal completo.
Decisión: No eliminar transacciones con ganancia negativa. Justificación: El 34% de pérdidas es una señal de negocio crítica, no un error de datos. Son exactamente el insumo del Eje 1 (detección de anomalías) y el target implícito del Eje 5 (rentabilidad). Eliminarlas hubiera invalidado toda la lógica del proyecto.
Decisión: Construcción de features RFM (Recency, Frequency, Monetary) + ratio de anomalías por cliente + cluster membership. Justificación: Los modelos de clustering y clasificación no operan sobre texto ni IDs. Las features RFM son el estándar de la industria retail para capturar el comportamiento de compra en dimensiones accionables.
| Herramienta | Uso | Por qué esta y no otra |
|---|---|---|
| 🐍 Python 3 | Lenguaje principal | Ecosistema ML más maduro; compatibilidad nativa con todas las librerías utilizadas. R hubiera limitado las opciones de modelos colaborativos (ALS) y geoespaciales. |
| 🐼 Pandas / NumPy | Limpieza y manipulación | Estándar de facto para datos tabulares en Python. Alternativas como Polars son más rápidas pero tienen menor integración con Scikit-learn y Prophet. |
| 📈 Matplotlib / Seaborn / Plotly | Visualizaciones | Combinación deliberada: Seaborn para EDA rápido (menos código), Plotly para gráficos interactivos entregables al negocio. Tableau o Power BI hubieran requerido herramientas externas al notebook. |
| 🤖 Scikit-learn | Isolation Forest, K-Means, Random Forest | API unificada y pipelines reproducibles. Permite encadenar los 5 ejes con un contrato de código consistente. |
| ⚡ XGBoost / LightGBM | Predicción y modelo integrador | Boosting sobre Random Forest para capturar no-linealidades en las features de lag temporal. LightGBM es más eficiente en memoria con datasets medianos; se mantuvo ambos para comparación. |
| 🔮 Prophet | Serie temporal | Diseñado explícitamente para series con estacionalidad semanal/anual y datos faltantes — exactamente el perfil de ventas retail. ARIMA hubiera requerido stationarity y manejo manual de estacionalidad. |
| 🎯 implicit (ALS) | Filtrado colaborativo | Optimizado para feedback implícito (transacciones, no ratings explícitos). Surprise o LightFM son alternativas pero no están optimizadas para matrices tan sparse como la de 794 clientes × 17 subcategorías. |
| 🎯 mlxtend (Apriori) | Reglas de asociación | Implementación directa del algoritmo clásico de market basket analysis. No requería la complejidad de FP-Growth dado el tamaño acotado del catálogo (17 subcategorías). |
| 🗺️ GeoPandas / Folium | Mapas interactivos | Folium genera HTML embebible en notebooks — ideal para presentar cobertura geográfica a stakeholders no técnicos sin infraestructura adicional. |
| 🗄️ SQLite3 | Almacenamiento relacional | Cero infraestructura, portabilidad total. Para un análisis académico/exploratorio, PostgreSQL o BigQuery hubieran sido sobredimensionados. |
| ☁️ Google Colab + Drive | Entorno de ejecución | GPU gratuita para entrenamiento, acceso directo al dataset en Drive. El trabajo colaborativo y la reproducibilidad sin instalación local justifican la elección frente a un entorno local. |
Problema de negocio: El 34% de transacciones con pérdida sugería descuentos excesivos o devoluciones no registradas. Se necesitaba identificarlas automáticamente.
¿Por qué Isolation Forest? Es un algoritmo no supervisado: no requiere etiquetar "qué es anómalo" a priori, lo cual es imposible en este dataset. Es eficiente en alta dimensionalidad y robusto ante outliers multivariados (Venta + Ganancia + Descuento simultáneos). Alternativas como LOF (Local Outlier Factor) son más costosas computacionalmente y sensibles a la escala.
Parámetro clave: contamination = 0.05 — se fijó en 5% basado en la distribución de pérdidas observada en el EDA previo, no arbitrariamente.
- 598 anomalías detectadas (5% del total)
- Pérdida media en anomalías: -$1.842 vs -$89 en normales
- Descuento medio en anomalías: 42% vs 15% en normales
- Top subcategorías anómalas: Copiadoras (142), Teléfonos (98), Sillas (76)
Problema de negocio: Supertienda trataba igual a todos los clientes. Se necesitaban segmentos accionables para campañas diferenciadas (retención, upselling, reactivación).
¿Por qué K-Means? Con 794 clientes y 8 dimensiones RFM, K-Means ofrece clusters interpretables y centros de cluster que pueden ser directamente comunicados al equipo de marketing como "perfil promedio del segmento". Alternativas como DBSCAN generan clusters de forma arbitraria difíciles de explicar a stakeholders no técnicos.
Elección de K=3: Determinada por el método del codo (Elbow) + Silhouette Score. Se probaron K=2 a K=6; K=3 maximizó la coherencia interna (Silhouette = 0.2322) con la menor complejidad interpretativa.
- 🏆 Alto valor (181 clientes): ticket $5.713, ganancia $8.496, ratio anomalías 21%
- 📊 Estándar (463 clientes): ticket $3.264, ganancia $1.799, ratio anomalías 7%
- 🌱 Base (150 clientes): ticket $2.520, ganancia $1.327, ratio anomalías 4%
Problema de negocio: Planificación de inventario y presupuesto 2024 requería proyecciones mensuales con intervalos de confianza.
¿Por qué dos modelos? Se adoptó una estrategia de comparación explícita:
- Prophet captura estacionalidad automáticamente y es interpretable (tendencia + estacionalidad + holidays). Ideal como baseline.
- XGBoost con features de lag captura patrones no-lineales que Prophet no modela (e.g., efecto de anomalías pasadas sobre ventas futuras).
Split temporal: Train 2019–2022 → Test 2023. Deliberadamente cronológico (no aleatorio) para evitar data leakage temporal — error frecuente en series de tiempo.
- XGBoost gana: MAPE < 10% — aceptable para planificación operativa
- Feature más importante:
lag_12(mismo mes del año anterior) — confirma estacionalidad anual fuerte - Q4 proyectado como pico: Nov/Dic dominantes históricamente
Problema de negocio: El ticket promedio podía aumentarse si se recomendaban productos complementarios en el momento de compra.
¿Por qué dos enfoques?
-
ALS (filtrado colaborativo implícito): Aprende patrones latentes de co-compra entre clientes. Funciona bien con matrices sparse como la de este dataset. Se eligió
implicitsobre otras librerías por su optimización específica para feedback implícito. -
Apriori (reglas de asociación): Genera reglas explícitas y accionables ("si compra X, ofrecer Y") que pueden implementarse en un sistema de punto de venta sin infraestructura de ML. Complementa ALS con interpretabilidad directa.
-
Top par: Papelería → Accesorios (Lift 1.82, Confianza 68%)
-
3 clusters temáticos identificados: Tecnología / Oficina / Mobiliario
Problema de negocio: Predecir qué clientes serán rentables en el próximo período para priorizar esfuerzo comercial.
¿Por qué un modelo integrador? Los 4 ejes anteriores generaron señales parciales (cluster, anomalías, predicción de ventas, patrones de compra). El Eje 5 combina todas esas señales en una sola predicción de rentabilidad — convirtiendo el pipeline en un sistema coherente y no en análisis aislados.
¿Por qué Random Forest + LightGBM? Random Forest es robusto ante features correlacionadas (ganancia y venta lo están) y proporciona importancia de features estable. LightGBM se incluyó como verificación: si ambos modelos coinciden en AUC = 1.00, la separación de clases es real y no un artefacto de un algoritmo específico.
Nota sobre AUC = 1.00: La separación perfecta en el test set se explica porque la variable target (alta rentabilidad) está altamente correlacionada con la ganancia histórica acumulada — que es una feature del modelo. En producción, esto requeriría reentrenamiento periódico con datos de períodos anteriores solamente.
- Variables más importantes: ganancia total histórica (100%), venta total (85%), cluster K-Means (58%)
- 4 segmentos de acción: A-Premium / B-Potenciales / C-Riesgo / D-No rentables
- 🥇 Región Norte lidera ingresos con $13.007.800 (impulsada 100% por México)
- 🏆 Copiadoras y Teléfonos acumulan $8.639.145 cada una — top subcategorías
- 👤 Consumidor Final representa el 52.97% del total ($23.362.708)
⚠️ El 34% de las transacciones tienen ganancia negativa — área crítica de optimización
| Archivo | Descripción |
|---|---|
📓 Supertienda (Final).ipynb |
Notebook principal — pipeline completo (5 ejes) |
📝 Supertienda.ipynb |
Versión de desarrollo / borrador |
📄 Supertienda.pdf |
Presentación original del dataset |
🤖 Reporte Claude - Informe Supertienda.pdf |
Informe generado con asistencia de IA |
🗺️ Roadmap - Modelos ML Supertienda.pdf |
Hoja de ruta de modelos ML |
Proyecto desarrollado como trabajo final de Data Science I y II — Coderhouse 2025.
"Este análisis no solo provee insights sobre el desempeño actual — sienta las bases para predicción de ventas, segmentación de clientes e implementación de sistemas de recomendación en producción." 🏆