Saltar para o conteúdo

Use Case

Predicción de múltiples productos en la industria de la construcción

Paulo Maia · 9 de noviembre de 2021

En este artículo cubriremos un caso de uso en la industria de la construcción relacionado con la predicción de los materiales necesarios para la construcción y el tiempo en que serán requeridos. En la industria de la construcción existe una gran incertidumbre entre el momento del pedido y el momento en que se ejecuta realmente, debido a varios factores que describiremos en detalle a continuación.

Problema empresarial

Consideremos el caso en el que queremos comprar materiales para la industria pesada de un proveedor, pero solo disponemos de una estimación general de la cantidad que necesitaremos. No estamos seguros del momento exacto y las características de los materiales que se necesitarán, ya que puede haber retrasos en el proyecto, y cambios entre el pedido y la ejecución. Tenemos clientes que están ejecutando construcciones y nos contactan con pedidos preliminares con sus requisitos.

Necesitamos conocer varios aspectos de este proceso:

  • ¿Cuándo ejecutará este cliente específico el pedido?
  • ¿Qué características de material serán preferibles para este cliente?
  • ¿Cuáles son los mejores materiales para mantener en stock ahora y en qué cantidad? El cliente necesita un tiempo fijo (por ejemplo, 4 semanas) para fabricarlos y transportarlos a un almacén. Si mantenemos poco stock, retrasaremos la construcción. Si tenemos demasiado, los materiales no utilizados pueden deteriorarse y ocuparán valiosa capacidad de almacenamiento.

Entidades de datos

Consideremos las siguientes entidades de datos y los datos históricos asociados para este problema:

Para cada agente implicado en el proceso, hay factores que causan incertidumbre en las cuestiones descritas anteriormente. Podemos sobreestimar o subestimar la cantidad y calidad de los materiales requeridos (tanto por información imprecisa de los planos de construcción como por incertidumbres internas en las estimaciones). Los constructores pueden desperdiciar o utilizar de forma más eficiente cierto material. El retraso entre el pedido y la ejecución depende de la complejidad del proceso de construcción, la época del año (¡festivos!), y cuellos de botella de los proveedores, entre otros.

Características relevantes

Hay algunas características relevantes que se pueden extraer para facilitar la predicción de este problema:

  • Construction x Material: Cantidad y tipo de cada material necesario en el momento del pedido y el momento de ejecución para una cierta construcción. Esto nos indica qué construcciones sobrestimaron y subestimaron ciertos materiales, y cuál fue el retraso entre el pedido y la ejecución. Se utilizará para construir los objetivos de nuestro problema.
  • Builder/Supplier: Estadísticas de las diferencias históricas en cantidad y características de materiales entre el momento del pedido y el momento de ejecución (por ejemplo, pidió 3 toneladas de cemento, solo necesitó 2,5 en los últimos 3 meses, en promedio)
  • Time: Época del año (mes, trimestre, temporada, …) y características históricas sobre la diferencia entre momento del pedido y momento de ejecución.

Modelado

Por razones de simplificación, asumamos que solo queremos predecir un material: por ejemplo, vigas necesarias para una unidad única en la construcción.

Necesitamos determinar:

  • Número de vigas requeridas
  • Tiempo hasta la ejecución del pedido, después de ser pedido con algunas características iniciales

Opción 1: Modelo de regresión multitarea

En este enfoque inicial, tomamos las características en el momento del pedido e intentamos predecir el número de vigas necesarias y el número de días entre el pedido y la ejecución. Esto se realiza utilizando un modelo multitarea con dos tareas de regresión.

Las ventajas de este enfoque son que es fácil de configurar, los objetivos son fáciles de interpretar, hace el modelo más robusto y podría mejorar el rendimiento. Sin embargo, hay varias desventajas:

  • Existe un conjunto de plantillas definidas para las vigas (SKU, Stock Keeping Unit) y el modelo podría estar prediciendo configuraciones de vigas que no existen.
  • Proceso de decisión difícil: No hay forma de medir la confianza en la predicción cuando solo tienes un valor.
  • Convergencia difícil: el dominio de valores posibles es muy grande, y no es fácil saber si una predicción es buena o no.

Opción 2: Clasificación multitarea

Alternativamente, podemos construir un modelo de clasificación multitarea, donde consideramos dos tareas:

  • Si las vigas de ejecución en nuestra hipótesis coinciden con cierta viga en stock. Esto significa que tendremos que crear muestras artificiales en nuestro conjunto de datos: 1 fila positiva y N filas negativas, donde N es el número de vigas posibles.
  • Probabilidad de que el número de días entre la fecha actual y la ejecución sea menor que N semanas. Esto requerirá generar fechas aleatorias entre fecha de pedido y fecha de ejecución. El valor de N se determina según las necesidades de producción y transporte a almacenes por parte de nuestro cliente.

La siguiente tabla muestra un ejemplo de cómo se vería este muestreo artificial:

Sampling Date: Fechas muestreadas aleatoriamente entre order_date y execution_date

Execution Beam Width (hypothesis): La comparación que estamos realizando. Estos son los valores de las vigas que están en stock.

Execution Beam Width: Lo que realmente sucedió. Utilizamos la comparación con "Execution Beam Width (hypothesis)" como objetivo.

En azul se muestran las filas donde el objetivo es positivo, y en naranja donde son negativas. Por ejemplo, una fecha de muestreo de 25/2/2021 está lo suficientemente cerca de nuestra fecha de ejecución para considerarla como objetivo positivo para la predicción, mientras que 20/2/2021 no. En términos de vigas de ejecución, el objetivo es positivo cuando los pedidos previos y la ejecución coinciden.

Arquitectura del modelo

Respecto a la arquitectura del modelo, podemos construir un modelo de dos flujos: separamos las características pertenecientes al retraso entre el pedido y la ejecución, y la diferencia entre el material pedido y ejecutado, ya que tendremos múltiples filas con características similares, y esto le indica al modelo que las trate de manera diferente de forma explícita.

La arquitectura propuesta es relativamente simple: un conjunto de capas densas y dropout, seguido por una operación de agregación (por ejemplo, concatenación). Después, otro conjunto de capas Dense/Dropout transforma este espacio latente concatenado. En la base se añaden dos capas softmax diferentes, una para cada tarea.

En comparación con la Opción 1, esta arquitectura tiene la ventaja de permitir un proceso de decisión basado en la confianza de la predicción y solo predecir artículos que el cliente puede producir. Sin embargo, la complejidad del proceso es mayor: necesitas crear muestras de entrenamiento positivas y negativas, y es más difícil de configurar.

También podemos añadir penalizaciones personalizadas en nuestra función de pérdida según el problema empresarial. Si predecimos 30 vigas en un edificio que necesita 20, está bien. Si necesita más, no será suficiente. Cuando el modelo no predice el mismo material, pero uno compatible, podemos penalizarlo menos. Cuando no lo es, penalizarlo más.

Proceso de decisión

Construir un modelo de clasificación multitarea nos permite crear un proceso de decisión basado en el valor esperado. Es decir, la probabilidad P de necesitar K unidades de un producto tiene un valor esperado de P x K unidades.

Para saber qué materiales mantener en stock para las próximas N semanas, el valor esperado para todas las construcciones que se han pedido y aún no se han ejecutado puede ser sumado.

Medición del impacto

¿Qué métricas serían importantes de medir?

Internamente, para construir y evaluar el modelo, puedes usar métricas de Machine Learning:

  • Classification: PR AUC, ROC AUC, …
  • Regression: Mean Absolute Error, Mean Squared Error…

Pero esto no dice nada sobre lo bien que el modelo predice la cantidad que necesitas almacenar. También necesitas medir métricas empresariales:

  • Cuántos productos predijimos o producimos en exceso porque nadie los compró
  • Cuántos productos no predijimos o producimos a tiempo, lo que provocó un retraso adicional en la construcción

Conclusión

Este artículo ha mostrado diferentes formas en que puedes pensar en problemas de predicción de productos, donde hay muchos productos con características similares.

Solo cubrimos el caso específico de predicción de un único tipo de producto (vigas) con diferentes características. Sin embargo, esto podría generalizarse para diferentes productos, como la cantidad de cemento necesaria, adaptando el modelo. Dado que no hay "SKUs de cemento", y cualquier cantidad predicha es válida, puedes reemplazar la clasificación sigmoid con una capa linear, y crear un modelo de regresión junto con clasificación binaria para el retraso temporal.