/DATATHON-ENTEL-2022---Reto2

Reto 2: Forecasting de abastecimiento de equipos

Primary LanguageJupyter Notebook

Desarrollado por: Insight ML 🏆

Integrantes
  • Renato Castro Cruz icon | LinkedIn
  • Cristian Lazo Quispe icon | LinkedIn

Descripción del reto

El reto consiste en desarrollar un algoritmo que prediga la demanda de un modelo en un punto de venta de acuerdo a su gama semanalmente, sin usar herramientas, aplicaciones y/o API de paga y además de no generar gastos. Esto es una restricción muy importante

Descripción del dataset

Se va a predecir a nivel de semana y se tiene los siguientes archivos:
Files
  • train.csv - Data de entrenamiento. Desde la semana 1 (17/05/2021-23/05/2021) hasta la semana 50 (25/04/2022- 1/05/2022)
  • test.csv - Data de test. Desde la semana 51 (2/05/2022-8/05/2022) hasta la semana 60 (4/07/2022-10/07/2022)
  • test_sample.csv - Un ejemplo de submission en el formato correcto
  • Z_MARCA - Marca del equipo
  • Z_GAMA - Gama del equipo
  • Z_MODELO - ModeloZ_MODELO - Modelo
  • Z_DEPARTAMENTO - Departamento del Perú del punto de venta
  • Z_PUNTO_VENTA - Punto de venta a abastecer
  • SEMANA_XX - Semana de abastecimiento de acuerdo con el modelo, punto de venta y gama

Target

Se pide determinar la demanda semanal de un modelo en un punto de venta de acuerdo a su gama.

Evaluación

Se evaluará a los participantes en función del RMSE, de menor a mayor. Durante la competencia se reportarán resultados sobre un subconjunto del set de evaluación (50%), pero los resultados finales se calcularán sobre los datos restantes (50%)

Formato del Kaggle Submission

Para todos los participantes, los archivos subidos deberán tener las siguientes columnas: ID yDemanda. Tener en cuenta que el valor de "Demanda" hace referencia al valor forecasteado. Al mismo tiempo, la estructura de la variable "ID" es Modelo|Punto de venta|Gama|# Semana.

El formato del archivo será el siguiente:
ID,Demanda
XXXX|PDV1|XXXX|Semana 55,1
XXXX|PDV1|XXXX|Semana 56,2
XXXX|PDV1|XXXX|Semana 57,3

Leaderboard de nuestra propuesta 🏆

Nuestra solución logró el primer puesto en ambos leaderboards tanto público como privado demonstrando que nuestro modelo es robusto y no tuvo problemas de overfitting.

Procedimiento

  1. Instalar con pip install -r requirements.txt las librerías necesarias para correr los scripts de Python/o/Notebooks. (Ver Recomendación 1)
  2. En la carpeta notebooks, correr el notebook 1.Preprocessing.ipynb o el script Preprocessing.py. (Ver Recomendación 3)
  3. En la carpeta notebooks, correr el notebook 2.Modeling_Prophet_Ratios.ipynb o el script Modeling_Prophet_Ratios.py. (Ver Recomendación 2)
  4. En la carpeta notebooks/Forecasting_por_semanas, correr el notebook 3.PreprocesamientoTemporal.ipynb y 4.CreacionDatasetTemporal.ipynb o sus scripts .py homólogos (Ver Recomendación 2).
  5. Alternativamente si se desea ahorrar el uso de memoria RAM y tiempo (2 horas aprox.) para el procesamiento temporal de la data, puede omitir el paso 3 y descargar todos los archivos de la siguiente ruta: https://drive.google.com/drive/u/1/folders/1ZYyjUH2FAHhVYJ9avH_GFFhOjAP_ekRV
  6. En la carpeta notebooks/Forecasting_por_semanas, correr los notebooks 5.Entrenamiento_modelo1.ipynb, 6.Entrenamiento_modelo2.ipynb y 7.Ensamblaje_de_modelos.ipynb en ese orden o correr sus scripts homólogos. (Ver Recomendación 2)
  7. Los valores de la predicción del forecasting se encontrarán en la carpeta Results con el nombre submission_model_final.csv

Recomendaciones

  1. Se recomienda instalar las librerías desde una terminal como anaconda prompt en Windows o Linux/MAC terminal ya que correrlo desde los notebooks puede tener problemas.
  2. Se recomienda correr el proyecto usando los notebooks para sacarle provecho a todo el análisis realizado y la propuesta del modelo.
  3. En el caso del notebook Preprocessing si gusta puede optar por el script Preprocessing.py ya que no se tiene mucho análisis de datos.

Lenguajes de Programación, Librerías, Frameworks a usar

Lenguajes de Programación:
Frameworks y librerías:
Recursos que nos ayudaron en el desarrollo del proyecto:
Kaggle Competitions:
Videos: