Aprendizado de máquina em Dodo. Como iniciar uma nova direção, se você é um desenvolvedor

Sob o corte, está a história de como a área de aprendizado de máquina apareceu no Dodo. Spoiler: Eu lancei. Os detalhes técnicos não estarão aqui, não se esqueça de devotar um artigo separado para eles. Hoje é mais sobre a motivação e apoio dos colegas.



Preparação


Eu me deparei com o tópico do aprendizado de máquina três vezes, até que algo valeu a pena.

Escola de russo


A primeira vez que me deparei com o aprendizado de máquina no HSE - consegui uma segunda torre na direção do Big Data Systems quando consegui um emprego no Dodo. Depois de passar por esse enorme tópico de hype em uma tangente, não entendi por que havia passado três anos da minha vida. E ainda mais, não pensei em como isso poderia ser útil na empresa. Eu não estava pronto para esse desafio do destino então.

Viagem checa


A segunda vez que me deparei com esse tópico em Praga, no hackathon de aprendizado de máquina fechado da Microsoft. Juntamente com pessoas de outras empresas, trabalhamos na tarefa de prever a demanda no Dodo durante os feriados e os dias de pico. Voltei com um modelo pronto que prevê demanda. Foi após esse hackathon que pensei que eu seria capaz de aplicar o conhecimento adquirido na empresa. Lá estava.

Bem, você tem um modelo em Jupyter, e daí? Como usá-lo? Todas as tentativas de explicar isso aos negócios foram confrontadas com uma dura realidade: e, portanto, fica claro que haverá muitos pedidos em feriados e dias de pico. As pizzarias adultas são capazes de prever vendas com base nos dados do ano passado e as novas tiveram problemas sem elas. Adiamos as tentativas de desenvolver o aprendizado de máquina. Mas a idéia de que podemos fazer mais com os dados está muito firme na minha cabeça e não queria sair de lá. Agora eu estava pronto para o desafio, mas a empresa não estava.

Sonho americano


A terceira reunião tornou-se fatídica. Nossa equipe teve uma tarefa difícil, mas interessante: desenvolver um módulo de pizza personalizado para os EUA. É quando você pode pedir pizza com qualquer conjunto de ingredientes e criar sua própria receita. Tudo precisava ser elaborado no projeto: das mudanças na arquitetura do banco de dados ao código do cliente no site. Nós agarramos a tarefa e desenvolvemos um produto que considero uma verdadeira vitória. A avaliação principal foi interrompida por Alena, nossa CEO nos Estados Unidos.



Fizemos o módulo, mas vi um problema no dimensionamento. E se a funcionalidade não aparecer em uma ou duas pizzarias nos estados, mas em uma rede grande? Como gerenciar esse produto, planejar estoques? Decidi que este caso poderia provar a necessidade do desenvolvimento de aprendizado de máquina no Dodo. Eu senti que desta vez eu e a empresa estávamos prontos para lançar uma nova direção.

Um a um com carros


No fundo, comecei a analisar as vendas de pizza personalizada americana. Usando algoritmos de agrupamento, foi possível mostrar que todas as receitas criadas pelos usuários são baseadas em seis conjuntos básicos de ingredientes, além de alguns aleatórios. Mesmo um relatório simples com base nesse algoritmo permitiria prever vendas semi-manuais e planejar o inventário. Devido à falta de burocracia e à capacidade de reconstruir em movimento, recebemos luz verde para começar a nos engajar nessa direção.

O diretor técnico e eu entendemos e discutimos mais de uma vez que eu precisaria deixar a equipe atual e começar a desenvolver uma nova direção, para mostrar que precisávamos dela. Eu precisava mergulhar em uma nova esfera em um ritmo acelerado. Entendi que, se não der certo, há duas maneiras. O primeiro é retornar ao desenvolvimento em outra equipe do Dodo. O segundo é atualizar seu currículo no HH e procurar um novo emprego. Eu não queria nem um nem outro. Fiquei nesse estado por cerca de três meses, até ficar viciado no módulo de vendas adicional.

Primeiro projeto


Outro spoiler: descobriu-se que, para executar o ML, você não precisa se deparar com algo complicado. Obviamente, não é? Mas é muito difícil de entender no início da jornada.

O módulo, que sugere adicionar um produto adicional ao pedido, não é controlado diretamente por ninguém. Isso significa que posso fazer o que quiser com ele. Cereja no bolo - uma oportunidade de aumentar as vendas com a ajuda de ofertas mais personalizadas. Anteriormente, o módulo funcionava de maneira simples: se pizza fosse adicionada ao pedido, a categoria de bebidas era exibida em vendas adicionais, se pizza e bebida, sobremesas e assim por diante.

A indiferença de um grande número de pessoas mostrou mais uma vez que trabalho em uma empresa em que o suporte pode ser fornecido por absolutamente todos. Passei horas trabalhando em dados e ofertas adicionais com um colega de marketing. Conseguimos agrupar todos os usuários de acordo com suas preferências de gosto e lealdade, para cada grupo fazer ofertas estáticas com base nos principais produtos do cluster.

Figuras e provas


Estraguei o registro de produtos adicionais e lancei novas ofertas em uma amostra de 2 milhões de usuários.

Uma amostra de usuários é apenas uma pequena parte das vendas. Era necessário avançar em direção a novos clientes não autorizados. Eu disponibilizei artigos e literatura suficientes sobre filtragem colaborativa e vários algoritmos de oferta para os usuários. A ideia de recomendações baseadas nos produtos da cesta ganhou. As recomendações baseadas em itens e uma medida cosseno de convergência formaram a base de um novo modelo, embora simples, mas já em funcionamento.

Em dezembro, lançamos o módulo Recomendações Baseadas em Itens. As estatísticas mostraram que os compradores podem realmente estar interessados ​​em produtos completamente diferentes, não apenas em bebidas. Talvez tenha sido depois disso que o Dodo acreditasse que os dados e o desenvolvimento do aprendizado de máquina lhes permitissem competir nos futuros mercados sobrecarregados.

Algumas estatísticas.


10 produtos mais vendidos no site


10 produtos de aplicativos para dispositivos móveis mais vendidos


Crescimento semanal das vendas

Reboque técnico


Abaixo estão alguns detalhes técnicos sobre por que o modelo é baseado em uma medida de cosseno de similaridade. Esta é uma prévia do artigo, que será lançado em alguns meses. Se você não gosta de matemática, sinta-se à vontade para pular para a última seção.

A tabela inicial abaixo mostra o número de pedidos com as mercadorias compradas de cada usuário. Podemos determinar a semelhança das compras de um usuário com outro - para isso, precisamos calcular a distância entre os vetores do usuário.


Tabela de vendas ao cliente

A distância dependerá da métrica selecionada. O cálculo do espaço euclidiano inclui o peso e a magnitude do vetor:

onde aeb são dois vetores de clientes diferentes da tabela. Vamos ver como essa distância ficará em um exemplo abstrato.

Suponha que examinemos o histórico de três clientes - a, bec. Vamos construir uma matriz de suas compras.


Tendo calculado as distâncias euclidianas entre os clientes, obtemos os seguintes valores:

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

Esses valores indicam que os clientes bec estão mais próximos um do outro. Mas se você olhar para os dados de origem, a imagem é o oposto. Os clientes aeb preferem pedir mais Pepperoni e, ocasionalmente, outros produtos, enquanto o cliente c prefere a pizza Supreme. Podemos concluir que a magnitude do vetor tem um efeito negativo para o cálculo das distâncias entre clientes. A medida de semelhança do cosseno apenas leva em consideração o ângulo entre os vetores, descartando a significância da magnitude do vetor:



Calculando a distância usando esta fórmula, obtemos:
d (a, b) = 0,9183;
d (b, c) = 0,5848;
d (a, c) = 0,7947;

Vemos que os clientes aeb estão mais próximos um do outro. Eles preferem um conjunto de mercadorias sem levar em consideração a diferença no número de pedidos feitos. Essa lógica concorda com a nossa opinião de especialistas e sugere que as preferências dos clientes aeb estão mais próximas umas das outras.

Este é um trailer, detalhes em dois meses.

Procure seu


Agora, estamos no estágio de formar uma equipe na qual haverá especialistas em organizar o armazenamento de dados, desenvolver modelos de aprendizado de máquina e colocá-los em produção. Mas o mais importante, agora entendemos melhor por que precisamos de tudo isso. Somos livres para fazer coisas realmente legais, desde a organização de um sistema de logística inteligente e planejamento de inventário até idéias fantásticas para automatizar pizzarias usando as tecnologias Computer Vision.

Acredite em si mesmo e em seus pontos fortes, mesmo que o resultado não seja visível no horizonte. Gostaria de terminar o artigo com o pensamento de outra pessoa - uma citação de Max Weber de seu relatório para estudantes da Universidade de Munique: "Você não pode fazer nada com tristeza e expectativa, e precisa agir de maneira diferente - você precisa se voltar para o seu trabalho e atender à" demanda do dia "- como ser humano, tão profissionalmente. E esse requisito será simples e claro se todos encontrarem seu próprio demônio e obedecerem a ele, tecendo o fio de sua vida. ” Encontre o seu.

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


All Articles