Precificação Dinâmica usando Aprendizado por Reforço e Redes Neurais

Um sistema inteligente que pode aumentar o lucro do seu e-commerce. Premiado como um dos 3 melhores projetos de Data Science no programa da Correlation One e do Softbank.

Reslley Gabriel
Data Hackers
5 min readMar 3, 2021

--

Precificação Dinâmica. Imagem por Fonte. Utilizada com permissão.

O principal objetivo desse projeto foi aumentar os lucros de um e-commerce, desenvolvendo um sistema de precificação dinâmica adaptável as variações de oferta e demanda.

O sistema de precificação deve ser capaz de manipular o preço final de um produto, de forma precisa e escalável, reagindo as flutuações do mercado.

Primeiramente, criamos um ambiente de simulação com o intuito de imitar a flutuação de pedidos baseado em algumas variáveis. Depois, treinamos um agente para que ele escolhesse a melhor política de preços usando aprendizado por reforço profundo (Deep Reinforcement Learning).

Preparação dos Dados e Arquitetura do Sistema

A arquitetura do sistema de precificação dinâmica consiste em três partes principais: A base de dados criada em PostgreSQL e armazenada no Amazon RDS, a API Flask e o dashboard feito com Dash e armazenado no Amazon EC2.

A API Flask utiliza o framework RESTful que lida com as requisições HTTP. Ela tem duas funções principais, aplicar o algoritmo de aprendizado por reforço e prover acesso aos dados no formato JSON.

Arquitetura do Sistema. Imagem do autor.

Antes de começar a análise e criação do modelo de precificação foi necessário um processo extenso de limpeza dos dados. O principal objetivo foi combinar as bases de dados (exportadas em arquivos .csv) em um formato de série temporal. Desta forma, para cada produto do e-commerce nós coletamos:

  • Preço do concorrente (quando disponível)
  • Preço médio
  • Média do valor de frete
  • Número de pedidos
  • Tipo do produto
  • Grupo do produto

Durante o processo de extração, transformação e carregamento dos dados, alguns ajustes foram realizados para garantir a qualidade das informações. Por exemplo, quando analizamos os preços de concorrentes percebemos que o banco de dados continha alguns produtos sendo vendidos por R$0,00 durante curtos períodos de tempo. Como é bastante improvável que algum produto seja ofertado de graça, tais registros foram excluídos da base de dados.

Dos valores restantes, ainda removemos alguns outliers causados por erros de digitação (por exemplo: produtos cujo preço normal é R$199.99 sendo ofertados por R$19.99). Isso foi feito excluindo os registros que estavam fora do escopo de 3 desvios padrões da média de preço de um produto.

Agrupando os Produtos

Fazer um modelo de precificação para cada produto individual é bastante complexo. Quando a venda de um novo produto se inicia não existem dados históricos suficientes para que consigamos formatar uma série temporal.

Por outro lado, criar um único modelo de precificação que sirva para todos os produtos também não é a melhor estratégia. Tais modelos seriam muito fracos, visto que “misturariam” produtos com comportamentos de venda muito distintos.

Para resolver esse problema criamos uma abordagem híbrida. Clusterizamos os produtos utilizando uma combinação de características como tipo, grupo e preço.

Representação do Agrupamento. Imagem por Fonte. Utilizada com permissão.

Para cada combinação de grupo + tipo de produtos, categorizamos em 4 possíveis faixas de preço (A, B, C ou D), de acordo com o respectivo quartil.

Utilizando essa abordagem conseguimos diminuir a esparsidade dos dados e também precificar produtos novos (com séries temporais curtas) baseado em produtos similares.

Usando Aprendizado por Reforço

Treinar uma solução de aprendizado por reforço usando um cenário real geralmente leva bastante tempo e, como o agente não tem nenhuma experiência no começo do processo, ele pode tomar decisões ruins e acabar causando erros / perdas indesejadas.

Para evitar esses problemas nós testamos a crição de um ambiente simulado usando diferentes modelos: Regressão Linear, Árvores de Decisão, Florestas de Decisão Aleatória, Máquina de Vetores de Suporte, eXtreme Gradient Boost e até o Facebook Prophet.

Escolhemos utilizar a Regressão Linear como simulador devido sua maior interpretabilidade. Depois, aplicamos um método de aprendizado por reforço chamado Deep Q-Learning.

Ciclo do Aprendizado por Reforço. Imagem por Fonte.

Em resumo, um agente escolhe ações baseado no estado atual do seu ambiente. Após tomar a ação uma recompensa é dada ao agente, avaliando o quão boa foi a decisão dele. Experimentando as ações e avaliando as recompensas durante um tempo o agente é treinado a fazer as melhores decisões.

Se mapearmos esses conceitos ao problema de precificação no e-commerce temos o seguinte:

  • Ambiente: site ou marketplace (Amazon, por exemplo)
  • Estado: menor preço praticado, nível de estoque, datas (dia da semana, dia do mês, ano, feriados, etc), valores de frete, e muitos outros.
  • Agente: algoritmo de precificação dinâmica
  • Ação: aumentar ou abaixar o preço de um produto, ou oferecer frete grátis
  • Recompensa: Lucro total gerado pelas ações do agente

Utilizamos uma Rede Neural totalmente conectada com 4 camadas de 30 nós. A camada de entrada recebe a informação do estado (preços praticados no e-commerce, parâmetros de data, estoque, valores de frete, preços de concorrentes) e a camada de saída consiste em 10 ações possíveis: alterar o preço de venda através da multiplicação do custo do produto por incrementos de 2.5 pontos percentuais.

Desta forma, o agente nunca vende um produto com preço menor do que o custo e consegue achar o equilíbrio perfeito entre aumentar as vendas e aumentar o lucro.

Resultados

Para comparar os resultados, tanto a política de preços original quanto o algoritmo de precificação dinâmica foram avaliados no ambiente de simulação.

Analisando os resultados financeiros, o agente de aprendizado por reforço superou a política de preços original em 3,48%. Além do aumento no lucro, a satisfação e engajamento dos vendedores com a plataforma de e-commerce pode melhorar, visto que terão resultados positivos.

Outra melhoria identificada é a otimização do fluxo de precificação de produtos, considerando que realizar alterações de preços manuais e individuais demandam bastante tempo.

Resultado da Precificação Dinâmica. Imagem do autor.

Essa abordagem de precificação pode ser aplicada também em diversos outros setores e indústrias, como turismo, transporte e agronegócio.

Espero que tenha gostado e se tiver qualquer dúvida pode entrar em contato conosco.

Obrigado pela leitura!

Co-autores: Francisco Magioli, Henrique Nascimento, Leonardo Gomes Cardoso e Renato Candido.

--

--

Reslley Gabriel
Data Hackers

Co-founder & CTO at Snackin’ | MSc in Computer Science & AI