Aprendizaje automático en Dodo. Cómo lanzar una nueva dirección si eres desarrollador

Debajo del corte está la historia de cómo apareció el área de aprendizaje automático en el Dodo. Spoiler: lo lancé. Los detalles técnicos de Hardcore no estarán aquí, asegúrese de dedicarles un artículo por separado. Hoy se trata más sobre la motivación y el apoyo de los colegas.



Preparación


Encontré el tema del aprendizaje automático tres veces hasta que salió algo que valió la pena.

Escuela rusa


La primera vez que me encontré con el aprendizaje automático en el HSE, obtuve una segunda torre en dirección a Big Data Systems cuando conseguí un trabajo en Dodo. Después de pasar por este enorme tema publicitario en una tangente, no entendí por qué había pasado tres años de mi vida. Y aún más, no pensé en cómo esto podría ser útil en la empresa. No estaba preparado para este desafío del destino entonces.

Viaje checo


La segunda vez que me encontré con este tema en Praga, en el hackathon de Microsoft Machine Learning cerrado. Junto con muchachos de otras compañías, trabajamos en la tarea de pronosticar la demanda en Dodo durante las vacaciones y los días pico. Regresé con un modelo confeccionado que predice la demanda. Fue después de este hackathon que aparecieron los pensamientos que podría aplicar los conocimientos adquiridos en la empresa. Ahí estaba.

Bueno, ¿tienes una modelo en Jupyter, y qué? ¿Cómo usarlo? Todos los intentos de explicar esto a las empresas se enfrentaron a una dura realidad, por lo que está claro que habrá muchos pedidos en días festivos y días pico. Las pizzerías para adultos pueden predecir las ventas en función de los datos del año pasado, y las nuevas tuvieron problemas sin ellas. Hemos pospuesto los intentos de desarrollar el aprendizaje automático. Pero la idea de que podemos hacer más con los datos está demasiado arraigada en mi cabeza y no quería salir de allí. Ahora estaba listo para el desafío, pero la compañía no.

Sueño americano


La tercera reunión se volvió fatídica. Nuestro equipo tuvo una tarea difícil pero interesante: desarrollar un módulo de pizza personalizado para los EE. UU. Aquí es cuando puedes pedir pizza con cualquier conjunto de ingredientes, crear tu propia receta. Todo debía resolverse en el proyecto: desde los cambios en la arquitectura de la base de datos hasta el código del cliente en el sitio. Nos aferramos a la tarea y desarrollamos un producto que considero una verdadera victoria. La evaluación principal quedó floja por parte de Alena, nuestra CEO en los Estados Unidos.



Hicimos el módulo, pero vi un problema en el escalado. ¿Qué pasa si la funcionalidad no aparece en una o dos pizzerías en los estados, sino en una red grande? ¿Cómo gestionar un producto así, planificar existencias? Decidí que este caso podría demostrar la necesidad del desarrollo del aprendizaje automático en Dodo. Sentí que esta vez tanto yo como la compañía estábamos listos para lanzar una nueva dirección.

Uno a uno con autos


En el fondo, comencé a analizar las ventas de pizza estadounidense personalizada. Utilizando algoritmos de agrupamiento, fue posible mostrar que todas las recetas creadas por los usuarios se basan en seis conjuntos básicos de ingredientes más un par de al azar. Incluso un informe simple basado en este algoritmo permitiría el pronóstico de ventas semi-manuales y el inventario del plan. Debido a la falta de burocracia y la capacidad de reconstruir sobre la marcha, se nos dio luz verde para comenzar a participar en esta dirección.

El director técnico y yo entendimos y discutimos más de una vez que tendría que dejar el equipo actual y comenzar a desarrollar una nueva dirección, para demostrar que lo necesitábamos. Necesitaba sumergirme en una nueva esfera a un ritmo rápido. Comprendí que si no funciona, hay dos formas. El primero es volver al desarrollo en otro equipo de Dodo. El segundo es actualizar su currículum en HH y buscar un nuevo trabajo. No quería ni lo uno ni lo otro. Estuve en este estado durante unos tres meses, hasta que me enganché al módulo de ventas adicional.

Primer proyecto


Otro spoiler: resultó que para ejecutar ML no es necesario encontrarse con algo complicado. Obviamente, ¿no es así? Pero es muy difícil de entender al comienzo del viaje.

El módulo, que sugiere agregar un producto adicional al pedido, no está controlado directamente por nadie. Eso significa que puedo hacer lo que quiera con él. Cherry on the cake: una oportunidad para aumentar las ventas con la ayuda de ofertas más personalizadas. Anteriormente, el módulo funcionaba simplemente: si se agregaba pizza al pedido, la categoría de bebidas se mostraba en ventas adicionales, si pizza y bebida, luego postres, etc.

La indiferencia de un gran número de personas ha demostrado una vez más que trabajo en una empresa en la que absolutamente todos pueden brindar apoyo. Pasé horas trabajando en datos y ofertas adicionales con un colega de marketing. Logramos agrupar a todos los usuarios de acuerdo con sus preferencias de gusto y lealtad, para que cada grupo haga ofertas estáticas basadas en los mejores productos del clúster.

Figuras y pruebas


Arruiné el registro de productos adicionales y lancé nuevas ofertas en una muestra de 2 millones de usuarios.

Una muestra de usuarios es solo una pequeña parte de las ventas. Era necesario avanzar hacia clientes no autorizados y nuevos. He incluido suficientes artículos y literatura sobre el filtrado colaborativo y varios algoritmos de oferta para los usuarios. La idea de recomendaciones basadas en los productos en la canasta ganó. Las recomendaciones basadas en ítems y una medida de convergencia del coseno formaron la base de un modelo nuevo, aunque simple, pero que ya funciona.

En diciembre, lanzamos el módulo de Recomendaciones basadas en elementos. Las estadísticas han demostrado que los compradores pueden estar interesados ​​en productos completamente diferentes, no solo en bebidas. Quizás fue después de esto que el Dodo creyó que los datos y el desarrollo del aprendizaje automático les permitirían competir en los futuros mercados sobrecargados.

Algunas estadísticas


10 productos más vendidos en el sitio


10 productos de aplicaciones móviles más vendidos


Crecimiento semanal de ventas

Trailer técnico


A continuación se presentan algunos detalles técnicos sobre por qué el modelo se basa en una medida de similitud de coseno. Esta es una vista previa del artículo, que se lanzará en un par de meses. Si no le gustan las matemáticas, no dude en pasar a la última sección.

La tabla inicial a continuación muestra el número de pedidos con los productos comprados de cada usuario. Podemos determinar la similitud de las compras de un usuario con otro, para esto necesitamos calcular la distancia entre los vectores de los usuarios.


Tabla de ventas al cliente

La distancia dependerá de la métrica seleccionada. El cálculo del espacio euclidiano incluye el peso y la magnitud del vector:

donde ayb son dos vectores de cliente diferentes de la tabla. Veamos cómo se verá esta distancia en un ejemplo abstracto.

Supongamos que miramos el historial de tres clientes: a, by c. Construyamos una matriz de sus compras.


Una vez calculadas las distancias euclidianas entre los clientes, obtenemos los siguientes valores:

d (a, b) = 16,22;
d (b, c) = 13,38;
d (a, c) = 13,64.

Estos valores indican que los clientes byc son los más cercanos entre sí. Pero si nos fijamos en los datos de origen, la imagen es lo contrario. Los clientes ayb prefieren pedir más Pepperoni y ocasionalmente otros productos, mientras que el cliente c prefiere la pizza Supreme. Podemos concluir que la magnitud del vector tiene un efecto negativo para calcular las distancias entre los clientes. La medida de similitud del coseno solo tiene en cuenta el ángulo entre los vectores, descartando la importancia de la magnitud del vector:



Calculando la distancia usando esta fórmula, obtenemos:
d (a, b) = 0,9183;
d (b, c) = 0,5848;
d (a, c) = 0,7947;

Vemos que los clientes ayb están más cerca uno del otro. Prefieren un conjunto de productos sin tener en cuenta la diferencia en el número de pedidos realizados. Esta lógica está de acuerdo con nuestra opinión experta y sugiere que las preferencias de los clientes ayb son las más cercanas entre sí.

Este es un trailer, detalles en dos meses.

Busca tu


Ahora estamos en la etapa de formar un equipo en el que habrá especialistas en organizar el almacenamiento de datos, desarrollar modelos de aprendizaje automático y ponerlos en producción. Pero lo más importante, ahora entendemos mejor por qué necesitamos todo esto. Somos libres de hacer cosas realmente geniales, desde organizar un sistema de logística inteligente y planificación de inventario hasta ideas fantásticas para automatizar pizzerías usando tecnologías de Visión por Computador.

Cree en ti mismo y en tus puntos fuertes, incluso si el resultado no es visible en el horizonte. Me gustaría terminar el artículo con el pensamiento de otra persona, una cita de Max Weber de su informe a los estudiantes de la Universidad de Munich: "No puedes hacer nada con tristeza y expectativa, y debes actuar de manera diferente, debes volver a tu trabajo y satisfacer la" demanda del día ", como ser humano, tan profesionalmente Y este requisito será simple y claro si todos encuentran su propio demonio y lo obedecen, tejiendo el hilo de su vida ". Encuentra el tuyo.

Source: https://habr.com/ru/post/442280/


All Articles