Al pasar de la entrega de comida a domicilio a nuevos segmentos de productos, como la alimentación, el autoservicio y el comercio minorista, surgen nuevos retos, como garantizar la disponibilidad de existencias para satisfacer los pedidos. Como empresa, siempre queremos que los clientes reciban todos los artículos que han pedido. En el caso de los pedidos de restaurantes, esto es fácil de hacer porque los comerciantes ofrecen menús relativamente pequeños y es poco común que los platos no estén disponibles. Sin embargo, a medida que DoorDash expande su negocio a nuevos mercados verticales, como las tiendas de comestibles, el inventario se convierte en un problema. Las tiendas de comestibles tienen inventarios con cientos de miles de SKU que requieren que los Dashers -nuestro nombre para los conductores de entrega- entren en las tiendas y compren los artículos necesarios para cumplir con una entrega. Esta experiencia de compra de los Dasher plantea dos retos únicos:
(1) el artículo solicitado no está disponible o no se encuentra, y/o
(2) el Dasher no puede encontrar un buen sustituto para un artículo agotado en nombre del cliente
A continuación, nos adentraremos en los detalles de cómo resolvemos el segundo problema con el aprendizaje automático recomendando las sustituciones pertinentes.
Por qué necesitamos un modelo de recomendaciones de sustitución
Antes de iniciar el desarrollo de cualquier proyecto de aprendizaje automático en DoorDash, buscamos entender -desde los primeros principios- cómo un modelo predictivo podría mejorar la experiencia del cliente. Naturalmente, queremos crear una experiencia fluida para los clientes que garantice que reciben una sustitución aceptable si lo que pidieron originalmente está agotado o no se puede encontrar. El cliente obtiene algo equivalente a lo que pidió, lo que significa, por ejemplo, que tiene todos los ingredientes que necesita para cocinar su receta. Además, DoorDash no tiene que reembolsar el coste del artículo original y el comerciante no pierde ninguna venta.
Solución de chat heredada
Antes de lanzar un producto de recomendaciones para sustituciones, la experiencia del cliente estaba llena de fricciones. Cuando un artículo estaba agotado, los Dashers tenían que llamar o enviar un mensaje de texto a los clientes mientras estaban en la tienda para discutir opciones alternativas y acordar un artículo de sustitución. Aunque este método podía dar lugar a una buena sustitución, consumía mucho tiempo y era agotador tanto para el cliente como para el Dasher. Así que nos propusimos crear una forma sencilla de recopilar las preferencias de sustitución de un cliente con antelación. De este modo, los Dasher podían satisfacer las necesidades del cliente sin necesidad de comunicaciones de ida y vuelta. Para crear esta experiencia de forma eficaz, necesitábamos mostrar a los clientes recomendaciones de sustitución de alta calidad generadas mediante programación con un modelo de aprendizaje automático.
La evolución de nuestro algoritmo de recomendaciones
Nuestro modelo de recomendaciones evolucionó con el tiempo junto con nuestro menú de IU de sustitución, como se muestra en la figura 1. Empezamos con un enfoque no supervisado, luego pasamos a la clasificación binaria y, finalmente, optamos por un modelo de recomendación de aprendizaje profundo.
Fase 1: Enfoque no supervisado
Cuando DoorDash lanzó por primera vez estos nuevos productos verticales, no disponíamos de muchos datos etiquetados que indicaran lo que los clientes creían que eran buenas o malas sustituciones. Para resolver ese problema, empezamos con un enfoque no supervisado que aprovechaba nuestros metadatos de artículos. Encontramos una técnica sencilla pero eficaz para identificar artículos similares mediante la similitud coseno TF-IDF basada en el nombre del artículo. Además, nuestro equipo de catálogo creó una taxonomía bien definida que nos permitía aplicar una heurística sobre la puntuación de similitud basada en texto para restringir las recomendaciones a las categorías pertinentes. Este enfoque, por ejemplo, recomendaba con éxito otros productos de Coca-Cola cuando los clientes pedían un paquete de 12 unidades de Coca-Cola, como se muestra en la figura 2.
Fase 2: Clasificación binaria con LightGBM
Una vez establecido el modelo inicial no supervisado, el equipo se propuso recopilar más datos etiquetados. En estrecha colaboración con los equipos de producto e ingeniería, lanzamos una función que pedía a los consumidores que valoraran las sustituciones sugeridas como "pulgares arriba" o "pulgares abajo". Esto nos proporcionó los datos necesarios para establecer un bucle de comentarios de los clientes, un paso fundamental en nuestro camino hacia las recomendaciones. Después de recopilar suficientes datos, pasamos a un enfoque de aprendizaje supervisado. Esto requería crear un clasificador binario para predecir la probabilidad de que cualquier artículo de nuestro catálogo fuera un buen sustituto de un artículo pedido. Decidimos utilizar LightGBM para esta fase debido a su rendimiento relativamente alto con un ajuste mínimo de hiperparámetros y a su historial de éxito en muchas aplicaciones de aprendizaje automático en DoorDash.
La incorporación de los comentarios de los clientes nos permitió identificar sustituciones más relevantes que iban más allá de artículos superficialmente "similares". En la figura 3, ampliamos nuestro ejemplo anterior de Coca-Cola. Los clientes que han pedido un paquete de 12 unidades de Coca-Cola prefieren sustituirlo por un paquete de 12 unidades de Pepsi o Dr. Pepper que por una botella de dos litros de Coca-Cola. Resulta que la cantidad es más importante que la fidelidad a la marca cuando los clientes hacen pedidos al por mayor.
Fase 3: Modelo de recomendaciones de aprendizaje profundo
El equipo creó funciones de producto para mostrar estas recomendaciones a más clientes y en más superficies a medida que mejoraba la calidad de las recomendaciones. Como resultado, pudimos recopilar un volumen cada vez mayor de comentarios de los clientes. A medida que aumentaban los datos, exploramos el uso de un modelo de recomendación de aprendizaje profundo implementado en PyTorch. Introducido por primera vez por Facebook hace varios años, este modelo combina principios de enfoques basados en el filtrado colaborativo y el análisis predictivo. En concreto, las características categóricas (o, en este contexto, los elementos de nuestro catálogo) se procesan como incrustaciones y hay un MLP inferior que codifica nuestra característica densa. A continuación, las interacciones de las características se calculan explícitamente y los resultados se procesan para discernir un MLP superior, que se introduce en una función sigmoidea para obtener una puntuación de probabilidad.
Este enfoque se basa en disponer de incrustaciones de alta calidad. Afortunadamente, pudimos aprovechar el trabajo existente del equipo de ML de DoorDash, que ya había estado desarrollando incrustaciones semánticas de elementos. Estas incrustaciones proporcionan una representación más rica de un elemento que el vector TF-IDF basado en texto sin procesar, ya que las incrustaciones se han entrenado a partir de los comportamientos de búsqueda de los usuarios de DoorDash. Este enfoque nos ayudó a identificar mejores recomendaciones para los artículos que son más difíciles de sustituir, como los artículos que tienen menos comentarios históricos de los clientes debido a un volumen de compras relativamente menor. Por ejemplo, como se muestra en la Figura 4, el modelo LightGBM recomendó maíz enlatado como sustituto de judías verdes enlatadas. El modelo de aprendizaje profundo, sin embargo, recomendó guisantes enlatados, porque las incrustaciones de elementos representan con precisión que las judías son más similares a los guisantes que el maíz.
Medir la calidad y el impacto de las recomendaciones
Uno de nuestros mayores retos desde el principio fue medir la calidad de nuestras recomendaciones de sustitución y cuantificar las mejoras. Aunque utilizábamos un modelo no supervisado, aprovechamos las revisiones manuales para medir la calidad de las recomendaciones. Para ello, identificamos los artículos más vendidos en todas las categorías de productos y seleccionamos las sustituciones ideales para crear un conjunto de datos "de oro". Después comparamos qué porcentaje de las recomendaciones del algoritmo coincidían con las sustituciones seleccionadas por los humanos.
Una vez que pasamos a un modelo supervisado, pudimos utilizar métricas de precisión de clasificación estándar como AUC para comparar diferentes iteraciones del modelo fuera de línea. Y lo que es más importante, pudimos aplicar una infraestructura de experimentación para evaluar nuestros modelos en función del impacto en la experiencia del cliente. En concreto, realizamos un seguimiento de las métricas de entrada, como la tasa de aprobación del cliente (que representaba la relevancia de nuestras recomendaciones) y la cobertura (porcentaje de artículos pedidos con recomendaciones). En última instancia, nuestro objetivo era mejorar los resultados empresariales clave y la satisfacción del cliente, incluida la frecuencia con la que sustituíamos artículos que no se encontraban y la valoración que los clientes hacían de esas sustituciones. Como resultado de la estrecha colaboración y el esfuerzo interfuncional entre ML, producto e ingeniería a lo largo del tiempo, fuimos capaces de mejorar nuestras métricas de negocio en una cantidad sustancial.
Conclusión
Los equipos de científicos de datos que intentan crear algoritmos de recomendación a menudo se encuentran con el clásico problema del arranque en frío. Esto suele ocurrir cuando una empresa se establece por primera vez o cuando se expande a nuevas categorías de productos o servicios. Los científicos de datos tienen que superar muchos retos para realizar mejoras paso a paso, incluida la creación de una solución MVP mientras trabajan con equipos multifuncionales para recopilar los datos que necesitan.
En estas situaciones, los científicos de datos de DoorDash aplican el pensamiento de primeros principios para comprender el problema exacto que debe resolverse con un modelo de ML. Dependiendo del contexto del problema, las técnicas clásicas como el filtrado colaborativo pueden no ser el mejor enfoque. Aprendimos dos cosas importantes: (1) no subestimar las soluciones sencillas y (2) si los datos etiquetados son escasos, puede merecer la pena invertir en recopilar metadatos de elementos.
Los próximos pasos incluyen invertir en metadatos más completos para las categorías prioritarias. Por ejemplo, los productos agrícolas y la carne son más difíciles de sustituir y los clientes suelen ser más sensibles a estas categorías. Además, podemos incorporar cosas nuevas, como atributos de producto -por ejemplo, "ecológico" o "kosher"-, así como incrustaciones de imágenes de artículos. También tenemos previsto desarrollar recomendaciones personalizadas, porque hemos observado que los clientes tienen preferencias de sustitución muy individualizadas.
Agradecimientos
En DoorDash, los proyectos de aprendizaje automático en fase inicial como este a menudo implican una amplia colaboración interfuncional. Un agradecimiento especial a Cam Miller, Kurt Smith, Thibault de Waziers, Emmanuel Chimezie, ThulasiRam Peddineni, Eun Ro, Meaghan Davis, Ben Friedman y muchos otros que han contribuido.