Overview

¿Podemos predecir cuánto deberíamos producir la próxima temporada? En Mango, uno de los mayores retos es asegurar que cada tienda tenga la cantidad exacta de prendas para satisfacer la demanda de los clientes. Este problema combina varias complejidades:

  • Predecir ventas a 9 meses vista.
  • Estimar productos que aún no existen.
  • Trabajar con series temporales muy cortas (productos que solo se venden 16 semanas).
  • Identificar tendencias emergentes y eliminar productos en declive.

Nuestro objetivo en este datathon fue demostrar que un equipo pequeño de estudiantes de IA puede construir un motor de demanda que compita con sistemas profesionales.

Inspiration

Mango nos lanzó un desafío para predecir la demanda completa de productos que aún no existen. Cada prenda tiene una vida muy corta, cambia según la temporada, y cualquier error se traduce en quedarse sin stock o saturar almacenes. Como estudiantes, nos atrajo la complejidad del problema y la posibilidad de aplicar todas nuestras habilidades en un caso real.

What it does

Creamos un modelo híbrido que combina tres fuentes de información:

  1. Embeddings de imagen → reducidos con PCA para capturar similitudes visuales entre productos pasados y nuevos.
  2. Atributos del producto → familia, tipo de prenda, tejido, silueta, ocasión, colores, etc.
  3. Historial multi-temporada → patrones de ventas y demanda agregada por familia y categoría.

Nuestro pipeline genera un conjunto amplio de features:

  • Ratios y estadísticas por familia/categoría.
  • Transformaciones logarítmicas de variables numéricas.
  • Datos temporales: semana y mes de phase_in, vida útil, tamaños y número de tiendas.

Entrenamos dos modelos CatBoost con Quantile Loss y finalmente hicimos un ensemble ponderado entre ambos.

How we built it

  • Limpieza y unificación de datos: selección de atributos, imputación y estandarización.
  • Procesamiento de embeddings: parseo manual de distintos formatos + PCA a 20 componentes para evitar ruido y sobreajuste.
  • Feature Engineering “a lo bruto”: estadísticas por familia, ratios normalizados, datos temporales y de distribución.
  • Cross-validation con TimeSeriesSplit: simula temporadas reales y evita mirar datos del futuro.
  • Modelos Finalistas: dos CatBoost con distintos alphas y learning rates, entrenados y retrain con datos completos.
  • Blending final (Ensemble): 60% modelo A (más estable) + 40% modelo B (más agresivo).

Challenges we ran into

Embeddings inconsistentes → escribimos un parser tolerante.

Series temporales cortas → difícil capturar estacionalidad.

Categóricas de alta cardinalidad → riesgo de ruido, mitigado con CatBoost.

Sobreajuste por explosión de features → PCA y transformaciones log.

Computación limitada → optimizamos early stopping, evitamos redes pesadas.

Accomplishments that we're proud of

Logramos un buen score en Kaggle y hemos considerado que hemos trabajo muy bien en equipo.

What we learned

Feature engineering vale más que diez modelos complejos.

En forecasting real, es peor subestimar que sobreestimar.

Combinar modelos simples y estables supera intentar afinar uno solo.

Procesar datos reales duele, pero enseña muchísimo.

What's next for Oink Oink

Integrar embeddings visuales propios entrenados por nosotros.

Probar modelos TabNet / LightGBM con tuning automático.

Añadir interpretabilidad para entender qué atributos generan más demanda.

Automatizar el pipeline completo para producción real.

Share this project:

Updates