Um guia sobre como usar a previsão contrafactual para estimar o custo-benefício de promoções passadas na loja no varejo.

Leia nosso artigo sobre

.

Durante um projeto real de três meses, desenvolvemos e industrializamos um modelo de previsão contrafactual (primeiro usando o Prophet e depois o XGBoost) para avaliar o desempenho de promoções passadas na loja de uma cadeia de lojas, para ajudar os planejadores de demanda em suas escolhas de campanhas promocionais.

Esse modelo é treinado e, em seguida, prevê vendas hipotéticas (chamadas de linha de base) no passado, caso não tivesse havido nenhuma promoção. A diferença entre as vendas reais da promoção e essa linha de base fornece as vendas incrementais, que chamamos de uplift.

Graças aos recursos temporais criados manualmente, alcançamos uma precisão de previsão de quase 90%.

Contexto empresarial

Ao planejar futuras campanhas promocionais, os planejadores de demanda precisam decidir quais sortimentos de produtos serão descontados, com um determinado mecanismo promocional (por exemplo, “-15%”, “compre 2, ganhe 1 grátis” etc.).

Essas são decisões difíceis, pois:

  • Optar por excesso de promoções seria não ser e eficaz (os clientes se acostumarão com as promoções e tenderão a esperar pela próxima).
  • Escolhendo o promoções erradas resultaria em déficits e perdas.

Para a maioria das empresas de varejo, o escolhas de campanha são feitas com base em seu conhecimento do negócio e o desempenho de promoções anteriores. No entanto, o “desempenho de promoções anteriores” é difícil de estimar. De fato, as campanhas promocionais aumentam as vendas (na maioria dos casos), mas como estimar a eficiência ou o retorno sobre o investimento (ROI) se não sabemos quais teriam sido as vendas sem uma promoção? Esse valor hipotético das vendas sem promoção pode ser chamado de linha de base. Em outras palavras, trata-se de ser capaz de estimar o vendas incrementais (ou elevação) de uma campanha promocional, correspondente ao vendas reaismenos a linha de base.

Para responder a essa pergunta, criamos uma ferramenta capaz de estimar o aumento das vendas promocionais de campanhas anteriores, com uma precisão de quase 90%.
Essa tarefa é bastante desafiadora, pois o objetivo é fazer previsões de hipotético vendas em outra situação (aqui, se a campanha promocional não tivesse ocorrido para um determinado produto). Isso pode ser chamado de “previsão contrafactual”. Este artigo baseia-se principalmente em nossa experiência em um projeto que realizamos para uma rede de lojas francesa.

Seu objetivo é descrever a abordagem que usamos, dar dicas e advertências ao implementar uma solução de previsão contrafactual (Preparação datamodelagem), explique o avaliação processo e, por fim, discutir o limites e próximos passos para essa abordagem.

O que é previsão contrafactual e por que é difícil de prever?

A previsão contrafactual é o processo de prever algo na forma: O que seria X como seria se não tivesse havido Y. Em nosso caso de uso, X seria a equipe de vendas e Y seria uma campanha promocional.

Na verdade, existem vários campos onde esse processo pode ser aplicado: falta de estoque (estimar o déficit devido à falta de itens em estoque), qualquer eventos especiais que não duram muito tempo (Covid: não funciona!) para ter data suficiente para estimar esse contrafactual.

O problema da promoção pode ser abordado em três ângulos (ordenados por dificuldade crescente):

  • 1. Compreensão de promoções anteriores: estimar com uma abordagem completa o desempenho (aumento de vendas ou ROI, por exemplo) de campanhas promocionais anteriores.

  • 2. Previsão o desempenho de promoção futura campanhas de acordo com suas características (produtos com desconto, datas de início e término, mecanismo...)

  • 3. Otimização do plano de promoçõesO senhor pode fazer o seguinte: encontrar a melhor configuração de promoções futuras para maximizar uma métrica de negócios.

Neste artigo, vamos nos concentrar na primeira etapa pois esse era o objetivo do nosso projeto. No entanto, daremos alguns insights sobre como lidar com os dois próximos, nas seções a seguir.

Há dois motivos principais que tornam a tarefa de previsão contrafactual um processo desafiador:

  • Há um escassez de literatura ou exemplos sobre o assunto, embora seja muito útil no varejo e em outros setores.

  • Na previsão contrafactual, não há verdade fundamental, O senhor pode ter certeza de que o desempenho é muito bom, pois é algo que não aconteceu. Assim, a avaliação do desempenho parece bastante difícil (felizmente, criamos uma abordagem que será apresentada na seção Avaliação).

Abordagem proposta

A abordagem que usamos para criar nossa ferramenta é a seguinte:

  • 1. Trem uma previsão modelo em datas fora da promoção, O senhor pode usar a ferramenta de vendas para obter uma linha de base de como as vendas devem ser sem nenhuma promoção programada.

  • 2. Prever em todos os pontos do data (na verdade, apenas as previsões durante a promoção são usadas, mas pode ser bom manter as previsões em todos os lugares para fins de interpretação).

  • 3. Comparar que previu a linha de base para as vendas reais durante cada promoção para inferir seu aumento.

Observação importante: O objetivo é usar as previsões durante os períodos de promoção, que estão no passado. Isso ocorre porque essa tarefa é uma a posteriori análise que, ao contrário da previsão clássica, é possível treinar em datas que sejam após o período de inferência, correspondente à campanha promocional. Não há noção de vazamento de data aqui, pois tentamos explicar um fenômeno que aconteceu no passado. Portanto, o fluxo de trabalho de treinamento e inferência é o seguinte:

Implementação

Preparação do data

Para resolver o problema da promoção, é preciso usar o formato data adequado. Normalmente, temos acesso a dois tipos de data:

1. Promocional data (informações descritivas relacionadas a promoções)

2. Vendas data.

O data pré-processado é basicamente o data de vendas, enriquecido com informações de promoção (união à esquerda, veja a figura acima). Cada linha com um “Promo type” (tipo de promoção) não nulo corresponde a um dia em que o produto está em promoção.

Antes de fazer a primeira implementação, é importante avaliar a qualidade do data. Aqui estão algumas diretrizes para as verificações a serem realizadas:

1. Procure os principais problemas no séries temporais:

  • Intermitente e/ou muito baixas vendas (será difícil aprender uma linha de base).

  • As promoções duram muito tempo e/ou são muito frequentes (portanto, não há pontos data suficientes para treinar).

  • Alguns produtos estão em múltiplas promoções ao mesmo tempo (qual promoção é responsável por essas vendas incrementais?)

2. Defina um granularidade para o caso de uso:

  • Tempo granularidade: a análise será diária ou semanal?

  • Item granularidade: uma série temporal por artigo? Por família de artigos? Às vezes, o senhor não conseguirá reduzir a granularidade se o número de unidades vendidas por elemento temporal não for suficientemente alto ou se a série temporal for muito intermitente. A vendas agregadas será mais suave, com menos problemas de volume, mas às vezes falta de interpretabilidade.

Portanto, se a série temporal estiver suficientemente limpa, um bom ponto de partida é adotar a abordagem mais granular (por exemplo, produto X dia, especialmente se estiver trabalhando com o Prophet, como fizemos neste projeto).

3. Ter um escopo claro da promoçãoQuais produtos/famílias de produtos fazem parte de uma determinada promoção? As promoções são planejadas em nível nacional? (se não, não se pode, por exemplo, agregar as vendas de um produto em todas as lojas de um país).

Depois que o data tiver sido verificado e preparado, é hora de modelar.

Modelagem

Primeiras iterações e principais conclusões

Nós iniciado nossas primeiras iterações com Profeta porque isso nos permitiu ter um linha de base muito rapidamente, adicione facilmente regressores, e interpretar os resultados naturalmente (graças à sua decomposição aditiva).

Aqui está um resumo dos principais aprimoramentos de iteração que tivemos durante o projeto:

Basicamente, o principais melhorias estavam vindo do regressores acrescentamos:

  • O manuseio de eventos especiais (A Black Friday foi especificamente importante)
  • Defasagens temporais (mesmo que o modelo Prophet seja autorregressivo, adicionamos defasagens de vendas passadas e vendas futuras, o que se mostrou bastante útil para a precisão do modelo).

Por fim, a adaptação da maneira como medimos a precisão da previsão (consulte a seção Avaliação abaixo) também ajudou a ter uma maneira mais precisa de avaliar o desempenho.

Por que mudamos para o XGBoost?

Apesar do bom desempenho e da interpretabilidade do Prophet, percebemos que O XGBoost foi o mais adequado, por vários motivos:

  • Tínhamos mais de 1000 séries temporais portanto, o significado mais de 1000 modelos de Prophet para treinar.
  • O profeta tem dificuldade de compreensão relações não lineares entre os recursos e seu impacto no alvo. Esse cruzamento de características O problema está bem descrito em este artigo.
  • Chegamos ao mesmo desempenho enquanto reduzindo em um fator de 10 o tempo de treinamento.

Avaliação e limites

Avaliação

Conforme descrito acima, não há verdade fundamental na previsão contrafactual, o que torna a avaliação do desempenho mais complexa do que na previsão clássica.

No entanto, encontramos uma maneira de medir nosso desempenho, ou melhor, de estimá-lo com a maior precisão possível. Veja como:

Na previsão clássica, normalmente medimos o desempenho usando um validação cruzada estratégia (aqui, janela de expansão) em um determinado período de validação (por exemplo, o último ano do data disponível). Para esse período de validação, a janela real em que medimos o desempenho está mudando em cada dobra (“janela de avaliação”), e o data anterior é usado para os recursos de atraso (“Data usado para fazer previsões”). Em um caso de uso de promoção, adicionamos alguns data após a janela de avaliação para reproduzir o treinamento - fluxo de trabalho de inferência descrito na seção “Abordagem proposta”.

Assim, podemos aplicar essa estratégia de validação cruzada no subconjunto do data em que não há promoção, com a Precisão da Previsão (FA) como métrica.

Com essa abordagem, conseguimos chegar a um precisão de previsão de quase 90% com uma granularidade no nível da família X dia, o que é um desempenho decente, comparável ao que conseguimos em outros projetos de previsão clássica.

Embora esse desempenho possa ser satisfatório, nossa abordagem tem algumas limitações.

Limites

  • Primeiro, alguns fatores externos são não considerado. Por exemplo, campanhas de mídia. Esses fatores externos podem ter um impacto (positivo) nas vendas e, portanto, nós pode superestimar elevação gerados pela promoção estudada.
  • Em segundo lugar, o caso do promoções duradouras: De fato, o remove um número importante de datas do treinamento dataset.

  • Por último, mas não menos importante, o impacto geral da promoção poderia ser melhorado levando em conta efeitos múltiplos, como canibalização, efeito halo, efeitos de antecipação/armazenamento, que são detalhadas na última seção.

Avanços e próximas etapas

Aprimorando a modelagem

Vários efeitos podem ser adicionados para medir o impacto líquido de uma promoção:

  • Canibalização: O fato de um produto estar em promoção e, portanto, mais atraente, terá um impacto negativo sobre as vendas de um produto semelhante.

  • Halo: O fato de um produto estar em promoção e, portanto, mais atraente, terá um impacto positivo nas vendas de produtos “frequentemente comprados juntos”.

  • Antecipação: Os clientes compram menos produtos com desconto antes de uma promoção, pois sabem que os preços serão mais atraentes.

  • Armazenamento: Os clientes compram menos produtos com desconto depois de uma promoção, pois compraram mais produtos do que o normal durante a promoção.

Os dois primeiros efeitos não foram incluídos em nossa análise devido à granularidade escolhida (nível da família) e os dois últimos foram difíceis de quantificar minuciosamente com o tempo que tínhamos para esse projeto.

Em resumo, o vendas adicionais líquidas de uma promoção poderia ser representado por essa cascata:

Indo além da análise a posteriori

Como dito anteriormente, uma vez que a análise (posterior) das promoções anteriores tenha sido feita (estágio A), então é possível ir além por prever a lucratividade de futuro promoções (estágio B) e, finalmente, propor um otimização do plano de promoções (estágio C).

Obviamente, prever (estimar) a lucratividade futura de uma promoção é mais difícil do que estimar a lucratividade de uma promoção anterior, pois temos não há data disponível na promoção. A ideia é reutilização o modelo desenvolvido no estágio A usando data que não é o data histórico, mas previsão de data a partir de um modelo de previsão clássico, como segue:

Primeiro, treine o modelo de previsão clássico no data disponível (até hoje):

Em seguida, faça as previsões com esse modelo (o período a ser previsto deve abranger o intervalo de recursos temporais que serão usados pelo “modelo de linha de base”):

Por fim, use o modelo de linha de base treinado usando recursos temporais com base nas previsões do primeiro modelo e estime a linha de base, que fornecerá o aumento de vendas:

É claro que esse processo tem mais incerteza por construção, já que os erros dos dois modelos empilhados serão correlacionados.

Por fim, para poder otimizar o plano de promoções, a estratégia consiste em usar o que foi feito na etapa anterior para escolher o melhor combinação de parâmetros de promoção a fim de otimizar a métrica de negócios como o ROI.

Conclusão

Usando previsão contrafactual para solucionar problemas de negócios é o não é uma tarefa comum que podem ser encontrados na literatura.

No entanto, vimos que poderia ser um ferramenta poderosa para resolver o problema da avaliação completamente o desempenho de promoções anteriores, por previsão de vendas hipotéticas (linha de base) se não tivesse havido nenhuma promoção. Também exploramos recomendações para a engenharia de recursos para um modelo autorregressivo (Prophet) ou gradiente de aumento (XGBoost). Por fim, detalhamos algumas diretrizes para refinar ainda mais a análise e também ir além da análise a posteriori.

Agradeço aos colegas cientistas do data que trabalharam comigo neste projeto: Kasra e Ombeline. Agradeço também aos Artefactors que revisou este artigo.

Média Blog por Artefact.

Este artigo foi publicado inicialmente no Medium.com.
Siga-nos em nosso Medium Blog !