Hoy trabaje en una solución para este reto de Kaggle:
Forecasting Sticker Sales
Playground Series - Season 5, Episode 1
El objetivo: predecir las ventas de stickers en distintos países usando un conjunto de datos sintético.
La competencia, parte de la Kaggle Playground Series, se basa en predecir múltiples años de ventas de stickers de marca Kaggle, vendidos en tiendas ficticias de países reales. Aunque el dataset es completamente sintético, contiene muchos de los efectos que se observan en datos del mundo real, como el efecto de fines de semana, días festivos y estacionalidad.
Dataset
Se proporcionan tres archivos principales:
train.csv: Contiene el conjunto de entrenamiento, con datos de ventas para cada combinación de fecha, país, tienda y artículo.
test.csv: Es el conjunto de prueba; el reto consiste en predecir las ventas (num_sold) para cada combinación de fecha, país, tienda y artículo. Es importante destacar que el leaderboard público se puntúa con el primer año de los datos y el privado con el resto.
sample_submission.csv: Un archivo de ejemplo que muestra el formato correcto de envío, con columnas “id” y “num_sold”.
La competencia se evaluaba en función del Error Porcentual Absoluto Medio (MAPE), lo que implicaba que se debía prestar especial atención a la precisión de las predicciones.
Metodología y estrategia
Para abordar el problema, seguí los siguientes pasos:
Preprocesamiento de datos:
Comencé cargando los archivos de entrenamiento, prueba y el de submission desde las rutas de Kaggle. Convertí la columna de fecha a formatodatetime
para poder extraer información temporal, y ordené los datos por fecha dentro de cada grupo (definido por país, tienda y producto).Ingeniería de características:
Extraje variables como elaño
, mes, día, día de la semana y si era fin de semana a partir de la fecha. Además, calculé algunos estadísticos (promedio, mediana y desviación estándar) por grupo para tener un panorama del comportamiento histórico de las ventas. También generé características de series temporales utilizando lags (por ejemplo, los valores de hace 7 y 28 días) y ventanas móviles (rolling windows) para capturar las tendencias y fluctuaciones en las ventas.División de datos para validación temporal:
Para simular la predicción en el futuro, separé los últimos 180 días de los datos de entrenamiento como conjunto de validación. Esto me permitió entrenar el modelo con datos históricos y evaluar su rendimiento en un escenario más cercano a lo que se encontrará en la práctica.Entrenamiento del modelo:
Utilicé LightGBM para entrenar el modelo, ajustando sus parámetros y usando callbacks para detener el entrenamiento si las mejoras se estancaban. Durante este proceso, implementé una función personalizada para calcular el MAPE, lo que me permitió monitorear el desempeño del modelo de manera directa. Al final, el modelo alcanzó un MAPE de aproximadamente 6.25% en el conjunto de validación.Forecasting iterativo:
Dado que el conjunto de prueba abarca un horizonte futuro considerable, implementé un método de forecasting iterativo. Esto significa que, para cada grupo (por país, tienda y producto), el modelo va actualizando la "historia" con las predicciones previas y utiliza esa información para predecir el siguiente día. Es un proceso paso a paso que me permitió extender las predicciones a lo largo del tiempo.Generación de submission:
Finalmente, preparé el archivo de envío en el formato requerido por Kaggle, que debía contener las columnas "id" y "num_sold". Este archivo es el que se entrega a la plataforma para evaluar la solución.
Resultados
Los resultados obtenidos fueron satisfactorios. Durante el entrenamiento, el modelo se detuvo en la iteración 1575 y se logró un MAPE de aproximadamente 6.25% en el conjunto de validación. Esto significa que, en promedio, el error en las predicciones fue de solo un 6.25%, un resultado muy bueno en términos de precisión.
Puntos importantes:
La ingeniería de características fue fundamental para capturar la dinámica de las ventas.
La división de datos en función del tiempo permitió simular un escenario real de predicción.
El forecasting iterativo ayudó a extender las predicciones de manera confiable.
Un MAPE del 6.25% indica que la solución es precisa y competitiva.
Conclusión
Trabajar en este proyecto me permitió profundizar en técnicas de modelado y forecasting, y me demostró que, con un enfoque cuidadoso en el preprocesamiento y la ingeniería de características, se pueden obtener resultados muy buenos. Mi recomendación es que, si tienen la oportunidad de trabajar en un proyecto similar, dediquen tiempo a entender bien sus datos y a experimentar con diferentes estrategias de validación.
Espero que este artículo les haya resultado claro y útil. Los invito a revisar el notebook, probar estas técnicas y adaptarlas a sus propios retos.