Ir al contenido

Blog


Por qué las buenas previsiones consideran la aportación humana como parte del modelo

24 de febrero de 2021

|
Brian Seo

Brian Seo

En DoorDash, acertar con las previsiones es fundamental para el éxito de nuestro negocio basado en la logística, pero los datos históricos por sí solos no bastan para predecir la demanda futura. Tenemos que asegurarnos de que hay suficientes Dashers, nuestro nombre para los conductores de entrega, en cada mercado para la entrega de pedidos a tiempo. Y aunque parece que la demanda de comida a domicilio de la gente debería ser tan regular como el número de comidas que hacen al día, hay mucha variación en la frecuencia con la que los consumidores deciden hacer pedidos a DoorDash, lo que dificulta una previsión precisa. 

Debido a la variación de los datos históricos que utilizamos para entrenar nuestros modelos, a menudo necesitamos añadir diferentes tipos de aportaciones humanas a nuestras previsiones para hacerlas más precisas. Por ejemplo, la aportación de nuestro equipo de marketing es útil porque DoorDash está constantemente probando nuevas estrategias de marketing, y estos miembros del equipo ya saben qué impacto esperar. Cada vez que hay un día festivo, una promoción importante o incluso algo de lluvia, el comportamiento de nuestros consumidores puede cambiar drásticamente de forma inesperada. Aunque nuestros modelos tienen en cuenta la mayoría de estos eventos, cualquier evento grande que rompa tendencias puede tener un impacto negativo significativo en la precisión futura de nuestro modelo de previsión y ser perjudicial para la experiencia general del usuario. 

La rareza de estos acontecimientos también hace que sea poco práctico codificarlos en nuestros modelos. En muchos casos, predecir con exactitud puede depender tanto de la capacidad de diseñar un modelo de aprendizaje automático (ML) increíble como de preguntar a nuestros equipos de marketing qué creen que va a ocurrir la semana que viene y averiguar cómo incorporar esa evaluación a nuestra previsión.

En general, hemos descubierto que el mejor enfoque consiste en separar nuestro flujo de trabajo de predicción en pequeños módulos. Estos módulos se dividen en dos categorías: preprocesar los datos o realizar un ajuste sobre nuestra predicción inicial. Cada módulo tiene un alcance limitado y se centra en un factor específico que contribuye a la variación de nuestra previsión, como el tiempo o las vacaciones. Este enfoque modular también tiene la ventaja de crear componentes más fáciles de digerir y comprender.

Una vez que hemos sentado las bases para construir un modelo que estime correctamente la trayectoria de nuestro negocio, nuestras partes interesadas y socios comerciales añaden un nivel adicional de precisión. La creación de canales que faciliten la ingestión y aplicación rápidas de las aportaciones de los socios comerciales contribuye en gran medida a garantizar la eficacia de dichas aportaciones. Esta línea de desarrollo suele pasarse por alto y, en general, debería considerarse parte del propio modelo de previsión.

Tratamiento previo de los datos

El preprocesamiento consiste en suavizar y eliminar todas las irregularidades de los datos para que el modelo ML pueda inferir los patrones correctos. Por ejemplo, supongamos que tenemos una campaña de marketing sostenida que hace que el número de pedidos semanales aumente un 10% durante las semanas siguientes. Si esperábamos un crecimiento estacional del 5%, deberíamos atribuir este crecimiento adicional a la campaña de marketing y ajustar la demanda de las semanas siguientes para que sea menor a medida que la campaña de marketing pierde fuerza.

El suavizado puede hacerse utilizando algoritmos para detectar automáticamente y transformar los valores atípicos en valores más normales o sustituyendo manualmente los baches de nuestros datos de entrenamiento por valores derivados con algún método sencillo. Utilizar un algoritmo para suavizar los datos puede funcionar muy bien, pero no es la única forma de preprocesar los datos. A menudo hay algunos elementos de las series que no se pueden suavizar bien y que hay que tratar con ajustes manuales. Puede tratarse de picos puntuales debidos a condiciones meteorológicas anormales, promociones puntuales o una campaña de marketing sostenida que no se distingue del crecimiento orgánico.

Cómo sustituir manualmente los valores atípicos en los datos de entrenamiento puede mejorar la precisión

En DoorDash hemos aprendido que los días festivos y otros eventos influyen mucho en los hábitos alimenticios de nuestros consumidores. Asegurarnos de que estamos construyendo una previsión a partir de las tendencias subyacentes correctas es fundamental para crear una previsión precisa de la demanda. Una parte importante de la creación de un modelo predictivo es crear un conjunto de entrenamiento que reduzca la varianza y el ruido de la vida cotidiana, facilitando así que el modelo detecte tendencias en los datos. La figura 1, a continuación, muestra una serie temporal típica (una secuencia de puntos de datos ordenados por tiempo) en DoorDash.

Series temporales de entregas por día en un mercado aleatorio
Figura 1: La serie temporal muestra un patrón sinusoidal, pero con una enorme caída de la demanda en el periodo 10, donde cabría esperar un pico.

Nuestros datos parecen algo sinusoidales, una forma de onda definida por intervalos periódicos que alternan entre un pico y un valle, con los picos y los valles de la serie de ondas algo irregulares. En medio de la serie hay una enorme depresión que no se corresponde en absoluto con el patrón. Esa caída es típica de un día festivo en el que baja la demanda, pero es un caso atípico comparado con el comportamiento normal de los pedidos.

He aquí algunos métodos de preprocesamiento que podemos utilizar antes de entrenar nuestro modelo: 

  • Entrenamiento del modelo tal cual, sin tratamiento previo:
    • Entrenaremos el modelo con los datos brutos utilizando el algoritmo ETS, que incorpora el algoritmo de suavizado exponencial en la previsión.
    • Estos resultados serán nuestra línea de base para que podamos ver cómo el preprocesamiento adicional añade precisión.
  • Utilizar otro algoritmo de suavizado además del incorporado en el modelo ETS:
    • En este caso utilizamos el filtro de Kalman de tsmoothie, un algoritmo del paquete que ayuda a suavizar los datos de series temporales. Elegimos este algoritmo específicamente porque incorpora parámetros que ayudan a ajustar la estacionalidad y las tendencias.
  • Realice algunos ajustes manuales en el conjunto de entrenamiento:
    • Este método utiliza la intuición humana para reconocer que, por cada caída, se produjo un amplio cambio en el comportamiento de los consumidores. Estos cambios están causados por una combinación de vacaciones y promociones que no son una varianza aleatoria. Para el ejemplo actual, la mejor solución es sustituir la semana atípica por la semana más reciente anterior a la caída como aproximación a lo que debería haber ocurrido.
  • Utilice tanto ajustes manuales como un algoritmo de suavizado:
    • Este último método utiliza el método de ajuste manual y suaviza el resultado a posteriori.
Efectos de distintos métodos de suavizado en una serie temporal
Figura 2: Los tres enfoques arrojaron resultados ligeramente diferentes en relación con los datos brutos. Sin embargo, el filtro de Kalman por sí solo fue el que menos suavizó el periodo atípico.

Los tres métodos introdujeron cambios notables en comparación con la forma de los datos brutos, como se muestra en la figura 2. El filtro Kalman no pudo aproximarse del todo a la forma sinusoidal de la caída extrema, pero suavizó un poco la curva. El filtro Kalman no consiguió aproximarse del todo a la forma sinusoidal de la caída extrema, pero suavizó un poco la curva. Los ajustes manuales también hicieron un gran trabajo de aproximación a la forma, pero no aplanaron el pico del día 32. Los ajustes manuales combinados con el filtro de Kalman no fueron suficientes. Los ajustes manuales combinados con el filtro Kalman muestran un comportamiento ligeramente diferente en los picos y los valles y muestran un patrón de onda sinusoidal más normal en general.

Los resultados

Tras preprocesar los datos de entrenamiento y entrenar un modelo, podemos ver que cada método arroja una predicción notablemente diferente.

Previsión de entregas por método de pretratamiento
Figura 3: Aunque el filtro de Kalman por sí solo se aproxima mejor a la forma de los datos reales, no acierta con la magnitud en las series de prueba.
MétodoReducción de errores en relación con la ausencia de preprocesamiento (cuanto mayor sea, mejor)
Ajustado manualmente19%
Filtro Kalman15%
Filtro Kalman + Ajuste manual35%
Figura 4: La combinación del filtro de Kalman y los ajustes manuales produjo una disminución significativa del error en relación con cualquiera de los dos métodos por separado.

Vemos que tanto el filtro Kalman como el método de ajuste manual produjeron mejoras con respecto a los datos no tratados. Pero en este caso la combinación de los ajustes manuales y el filtro de Kalman acabó dando un resultado aún mejor que cualquiera de los dos métodos por separado. Este ejemplo demuestra que empleando un par de sencillos métodos de preprocesamiento podemos obtener una mayor precisión en nuestros modelos.

Ajustar las predicciones del pronóstico para mejorar la precisión 

Ajustar nuestras predicciones implica la integración de módulos individuales más pequeños que tienen en cuenta diversos factores que influyen en el volumen de pedidos de DoorDash, entre los que destacan el tiempo y las vacaciones. Aunque podemos intentar crear modelos que tengan en cuenta factores como el tiempo o las vacaciones, siempre habrá acontecimientos que marquen tendencias que no puedan modelarse. Recurrir a la aportación humana puede mejorar la precisión del modelo en esta fase.

¿Por qué no construir un modelo mejor con más datos?

Construir un modelo más grande y mejor acaba no siendo práctico porque realmente no es posible dar cuenta de todos los casos de uso. Por ejemplo, en septiembre de 2019 regalamos un millón de Big Macs. DoorDash en ese momento había estado dando promociones a los clientes regularmente, pero nunca a esa escala. No había una buena manera de manejar este nuevo escenario con un modelo que predice el efecto de las promociones, ya que la escala y el alcance eran completamente diferentes de nuestras promociones habituales, que son las que habríamos utilizado para los datos de entrenamiento.

Crecimiento durante la promoción Un millón de Big Macs
Figura 5: La semana de la promoción "Un millón de Big Macs" dio lugar a un crecimiento sin precedentes que se sumó al que ya estábamos experimentando.

Al principio pensamos que se trataba de un acontecimiento aislado y que no era necesario diseñar una promoción tan poco frecuente, pero este tipo de eventos siguieron sucediéndose. Unos meses más tarde, nos asociamos con Chase para ofrecer DashPasses a muchos de los titulares de sus tarjetas de crédito y, como resultado, recibimos una afluencia masiva de tráfico. 

Ante un acontecimiento de esta envergadura, sólo podíamos tomar una de estas tres opciones:

  • Espere que el impacto de los grandes eventos promocionales no sea tan grande como para que no podamos entregar todos nuestros pedidos. 
  • Construir un modelo genérico de promoción y esperar que los resultados se generalicen a futuros valores atípicos. 
  • Obtenga información del equipo que gestiona las promociones pertinentes para aumentar nuestra precisión con intervención manual.

La primera opción es extremadamente improbable y no está en el espíritu de intentar mejorar la precisión de un modelo, ya que va en detrimento del rendimiento de nuestro equipo de marketing. La opción dos daría resultados marginales en el mejor de los casos, y dado que cada gran promoción puede ser diferente, encontrar un conjunto de características que pueda generalizar bien a eventos atípicos como estos es poco probable. A menudo, la tercera opción acaba siendo la única, porque los equipos comerciales que organizan estas promociones han dedicado mucho tiempo a evaluar su impacto y ya tienen una buena estimación del mismo.

En la práctica, comenzamos la tercera opción creando la infraestructura que permite que una previsión reciba ajustes que alteran manualmente la previsión. Aunque los ajustes pueden acabar siendo algo sencillo, como añadir 100.000 entregas más a la previsión del sábado, puede haber problemas en cascada que resolver. Por ejemplo, si adoptáramos el sencillo ejemplo anterior, tendríamos que disponer de métodos o modelos para averiguar cómo distribuir esas 100.000 entregas adicionales a todas nuestras zonas geográficas. Pero una vez que el código está en su lugar para propagar rápidamente los ajustes manuales, cada ajuste manual sólo debe sentirse como la adición de otra entrada al modelo. De este modo, podemos pedir a los equipos de negocio su opinión sobre las próximas previsiones e incorporarla fácilmente a nuestro modelo de previsión.  

Conclusión

Como la mayoría de los problemas de aprendizaje automático, la previsión requiere una comprensión real del contexto del problema antes de lanzar potencia informática y algoritmos. Una solución sencilla, como obtener información de los socios comerciales, puede acabar mejorando la precisión de la previsión tanto como el uso de una solución algorítmica compleja. Por eso, permitir la aportación de expertos o partes interesadas de la empresa puede ayudar a mejorar aún más la precisión de la previsión. 

Sobre el autor

  • Brian Seo

    Brian Seo es un científico de Datos en DoorDash, Desde febrero de 2019, donde se centra principalmente en la Previsión de la Demanda. Brian es licenciado por la Universidad de California Berkeley

Trabajos relacionados

Ubicación
San Francisco, CA; Mountain View, CA; Nueva York, NY; Seattle, WA
Departamento
Ingeniería
Ubicación
San Francisco, CA; Sunnyvale, CA
Departamento
Ingeniería
Ubicación
San Francisco, CA; Sunnyvale, CA; Seattle, WA
Departamento
Ingeniería
ID de trabajo: 3013456
Ubicación
Pune, India
Departamento
Ingeniería
Ubicación
San Francisco, CA; Seattle, WA; Sunnyvale, CA
Departamento
Ingeniería