Um guia sobre como usar a previsão contrafactual para estimar o custo-benefício de promoções passadas na loja no varejo.
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:
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 reais, menos 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 data, modelagem), 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):
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:
Abordagem proposta
A abordagem que usamos para criar nossa ferramenta é a seguinte:

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:
2. Defina um granularidade para o caso de uso:
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:
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:
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
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:
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.

BLOG







