Como ensinamos um carro a conversar com milhões de pessoas

O marketing no X5 é um monte de dados. Pyaterochka, por exemplo, envia mais de 30 milhões de comunicações todos os meses, e esse número está crescendo constantemente. Várias ofertas podem ser enviadas para um cliente de cada vez, e é importante escolher quais delas corretamente. As ações da loja devem ser interessantes para o cliente e economicamente justificadas para o varejista. Nesta postagem, mostraremos como começamos a determinar ofertas realmente populares usando o aprendizado de máquina e a eliminar o efeito de spam.



Para melhorar a comunicação com os clientes de Pyaterochka, Perekrestok e Karusel, uma grande equipe trabalha no X5 Retail Group.

Agora, a manutenção desse sistema requer o trabalho de dezenas de pessoas e sistemas: acúmulo preciso de dados no Oracle, análise de dados e criação de campanhas no SAS, configuração de regras de bônus no Comarch. Todos os dias, os analistas tomam decisões sobre como escolher a oferta mais relevante no momento, escolhendo entre uma enorme variedade de opções, com base em dados históricos dos resultados das ações. Também estamos trabalhando para garantir que as comunicações sejam endereçadas e não tenham nada a ver com spam.

Pensamos em como traduzir o processo de seleção de uma oferta relevante para o cliente no modo automático usando o aprendizado de máquina, para que:

  • informações acumuladas sobre clientes e campanhas anteriores
  • o próprio sistema aprendeu com novos dados
  • o planejamento foi calculado mais de um passo adiante

Então chegamos à realização de sistemas auto-organizados e a era do desenvolvimento do sistema de Aprendizagem por Reforço no X5 começou.

Um pouco sobre o aprendizado por reforço
* RL (Aprendizagem por Reforço) é aprendizagem reforçada. Uma das maneiras de aprendizado de máquina, durante as quais o sistema de teste (agente) é treinado, interagindo com um determinado ambiente.

A teoria da aprendizagem reforçada opera em dois conceitos: ação e estado. Com base no estado do objeto, o algoritmo decide sobre a escolha das ações. Como resultado da ação perfeita, o objeto cai em um novo estado e assim por diante.



Supondo que:

  • agente - cliente
  • ação - comunicação com o cliente
  • state - state (conjunto de métricas) do cliente
  • função objetivo - comportamento adicional do cliente (por exemplo, aumentar a receita ou responder a uma campanha de destino)

... então o sistema descrito deve resolver a meta estabelecida e os próprios agentes (clientes) escolherão suas ações (recompensas e campanhas) por seu conforto e relações significativas com a loja.

O que a mente mundial oferece à RL
Primeiro, procuramos exemplos de soluções para esses problemas, descritos em fontes abertas.
Encontraram alguns exemplos interessantes:

Sobre ferramentas:


Sobre a aplicação da RL em tarefas de marketing semelhantes:


Mas todos eles não se encaixavam no nosso caso ou não inspiravam confiança.

Etapa 1. Soluções de protótipo

Portanto, decidimos desenvolver nossa abordagem.

Para minimizar os riscos e não entrar em uma situação em que o sistema foi desenvolvido por um longo tempo sem uso real e, em seguida, não decolou, decidimos começar com um protótipo que não implementaria o método RL em sua forma pura, mas teve um resultado comercial compreensível.

A base das implementações básicas do aprendizado reforçado é a matriz estado-ação-resultado, que é atualizada toda vez que novas informações são recebidas do ambiente.

Para reduzir o espaço de estado, como parte do protótipo, foi feita uma transição do cliente para o segmento, onde todos os clientes foram divididos em 29 grupos com base nos parâmetros:

  • verificação média
  • frequência de compras
  • estabilidade do cesto
  • enchimento de cestas
  • lealdade do cliente (a proporção do número de semanas com compras pelo número de semanas durante as quais uma pessoa participou do programa de lealdade da loja)

Assim, a tarefa foi reduzida ao aprendizado de uma matriz da seguinte forma:



No cruzamento, a matriz deve ser preenchida com o valor da função de destino.

Na primeira versão do algoritmo, a resposta específica à campanha foi selecionada como uma função do alvo.

O primeiro protótipo que desenvolvemos em algumas semanas em SQL (Oracle) e Python. Como tínhamos dados históricos de comunicações, pudemos preencher parcialmente a matriz com o peso estimado dos pares "oferta a oferta". Infelizmente, para alguns pares, não há dados suficientes. Isso não nos impediu: almejamos testes de combate.

O Departamento de Marketing de Pyaterochka nos confiou dados de dois milhões de clientes para 10 semanas de experimentos. No momento, esses clientes estavam desconectados de todas as outras comunicações. Identificamos metade dos clientes no grupo de controle, nos demais grupos testamos o protótipo.

A teoria da RL nos disse que não devemos apenas escolher a melhor ação, mas também continuar aprendendo. Portanto, toda vez que testamos uma campanha aleatória em uma pequena porcentagem de clientes. Dessa forma, os demais clientes receberam a melhor oferta (a melhor campanha). Assim, obtivemos nossa implementação do método ε - ganancioso de escolher a oferta mais ideal.



Após três lançamentos do sistema, ficou claro que a escolha da melhor campanha de resposta não leva a um aumento na RTO específica por campanha (esse indicador é a principal medida da eficácia de qualquer campanha direcionada em qualquer organização).

Ao alterar a função da meta (e, portanto, o algoritmo para escolher a melhor campanha) diretamente para a RTO incremental, aprendemos que as campanhas mais bem-sucedidas desse ponto de vista não são lucrativas em termos de ROI.

Então, para o oitavo lançamento do sistema, alteramos a função da meta pela terceira vez, agora no ROI.

Conclusões do desenvolvimento do protótipo

Abaixo estão os gráficos de desempenho dos principais indicadores:

  • Resposta líquida do cliente à comunicação
  • RTO incremental
  • Marginalidade







Você pode notar que até o último lançamento, a eficiência do protótipo (em RTO incremental) excedeu o resultado médio das campanhas lançadas por analistas e, se considerarmos apenas os “melhores” segmentos e ofertas, a diferença é mais que o dobro.

Para o futuro, tiramos as seguintes conclusões para nós mesmos:

  1. Conversar com uma empresa de KPI com antecedência pode não ser suficiente. Os KPIs de um cliente comercial também estão mudando. (Então passamos da RTO para a marginalidade).
  2. Metas indiretas (no nosso caso, a resposta) são boas, mas mais cedo ou mais tarde você será solicitado a levar em consideração os indicadores diretos de desempenho.
  3. Os melhores pares foram encontrados na campanha do segmento, que mostram consistentemente bons resultados. Essas campanhas foram lançadas em toda a base e geram receita regularmente.

Total:

  1. circuito funciona
  2. vale a pena considerar os custos do cliente (a vitória no IRTI não garantiu o crescimento do ROI)
  3. Eu gostaria de levar em consideração o histórico de respostas
  4. agora não é tão assustador ir ao nível do cliente

Etapa 2. Terminamos o sistema

Inspirados nos resultados da primeira etapa, decidimos finalizar o sistema e fazer as seguintes melhorias funcionais:

1) passe da escolha de uma oferta para um segmento de clientes à escolha de uma oferta individualmente para um cliente, descrevendo-a com um conjunto de métricas:

  • Sinalizador de resposta da última oferta
  • A proporção entre a tomada de força do cliente por 2 semanas e a tomada de força por 6 semanas
  • A proporção do número de dias entre a última compra e a distância média entre transações
  • Número de semanas desde a última comunicação
  • A proporção entre a quantidade de bônus usada por mês e a quantidade de RTO por mês
  • Atingir a meta nas duas semanas anteriores
  • Sinalizadores de resposta a ofertas com diferentes tipos de recompensas
  • escolha não 1, mas uma cadeia de duas campanhas subsequentes

2) esclarecer a função da meta, acrescentando a ela, além da resposta, o crescimento da TDF :).

Agora, escolhendo uma oferta individual para o cliente, focamos no valor esperado da função objetivo Q1:

  • Q = 1 se o cliente respondeu à campanha e seu RTO de duas semanas durante o episódio cresceu m%
  • Q = 0, se o cliente NÃO respondeu à campanha e seu RTO de duas semanas durante o episódio cresceu m%
  • Q = 0, se o cliente respondeu à campanha e seu RTO de duas semanas durante o episódio cresceu menos que m%
  • Q = -1, se o cliente NÃO respondeu à campanha e seu RTO de duas semanas durante o episódio cresceu MENOS do que em% m

Agora, o piloto da segunda abordagem está em pleno andamento, mas já superamos os resultados anteriores.

O que vem a seguir

Felizmente, os resultados encantam não apenas a equipe de implementação e desenvolvimento, mas também os clientes corporativos; portanto, no futuro, além das melhorias funcionais, está planejado a criação de sistemas semelhantes que funcionem para marketing on-line e em tempo real.

Além disso, um leitor atento perceberá que até agora não usamos a RL em sua forma mais pura, mas apenas em seu conceito. Mesmo assim, mesmo com essa simplificação, observamos um resultado positivo e agora estamos prontos para seguir em frente, complicando nosso algoritmo. Pelo nosso exemplo, queremos inspirar outras pessoas a irem "do simples ao complexo".

A edição Habr X5 agradece à empresa Glowbyte Consulting pela ajuda na preparação de um post. O piloto foi concluído por uma equipe combinada de seis especialistas de Pyaterochka e Glowbyte.

A propósito, procuramos um gerente de desenvolvimento de produtos de Big Data, especialista em dados, especialista em análise e gerente de programa de fidelidade.

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


All Articles