Churn Prediction + A/B Testing + Uplift Modeling

Data Scientist • Solo

Repositório churn_ab_uplift_pipeline no GitHub
Tipo
Retention Science
Churn · A/B · Uplift
Stack
Python · XGBoost · Optuna · Scikit-learn
SHAP · Scipy · Streamlit Cloud
Período
Dashboard usado pelo time comercial

Dashboard usado pelo time comercial: lista de clientes priorizados, com filtro de orçamento e exportação em Excel.

O problema

Um e-commerce com 4.300 clientes tinha um problema comum: quem ficava 90 dias sem comprar dificilmente voltava sozinho. A empresa já rodava uma campanha de retenção (cupom de 10% + e-mail), mas não sabia se ela realmente funcionava, nem para quem valia a pena usá-la. O orçamento por contato era limitado a R$ 15.

O objetivo

Responder três perguntas que a empresa não conseguia sozinha: quem está prestes a sair, se a campanha realmente reduz esse risco, e, o mais importante, para quem vale a pena gastar o orçamento.

A solução

Um pipeline de três camadas, cada uma respondendo o que a anterior não resolve:

  • Um modelo prevê quem está em risco de sair.
  • Um teste A/B mede, com rigor estatístico, se a campanha reduz esse risco.
  • Um modelo de uplift descobre para quem a campanha realmente funciona, e para quem ela não faz diferença.

O resultado é um dashboard onde o time comercial define o orçamento disponível e recebe automaticamente a lista de clientes prioritários para contatar.

A decisão que fez diferença

Ao testar a campanha, o modelo separou os clientes em quatro grupos, dependendo de como cada um reage ao cupom:

  • Persuadible: só volta a comprar se receber o cupom. É o alvo certo da campanha.
  • Sure Thing: voltaria a comprar de qualquer jeito. Mandar cupom pra esse grupo é gastar orçamento à toa.
  • Lost Cause: está de saída, e o cupom não muda isso.
  • Sleeping Dog: o achado mais interessante. Pra esse grupo, o cupom na verdade aumenta a chance de cancelamento, em vez de reter, a campanha empurra o cliente pra fora.

Descobrir os Sleeping Dogs foi o que mudou a estratégia: em vez de mandar cupom pra todo mundo em risco, o sistema passou a excluir automaticamente esse grupo do contato, economizando orçamento e evitando um efeito colateral que ninguém tinha percebido antes.

Distribuição dos clientes nos quatro grupos

Os 1.134 clientes em risco, segmentados nos quatro grupos segundo a resposta esperada à campanha.

Resultado do teste A/B

Resultado do teste A/B: a campanha reduziu o churn de forma estatisticamente comprovada.

Explicando as decisões do modelo

Uma lista de clientes não basta: o time precisa justificar por que cada um foi incluído, e a área de risco precisa confiar que o modelo não está se apoiando num sinal errado.

Adicionei uma camada de explicabilidade que mostra, para cada cliente, quais fatores pesaram na decisão, e uma visão geral do que o modelo mais considera. A análise revelou algo que os números médios escondiam: o fator mais importante, o tempo de relacionamento do cliente, não age numa direção só. Há uma janela de risco nos primeiros meses e uma proteção forte que só aparece depois de um tempo de casa. Isso virou uma recomendação concreta de monitoramento para produção.

No dashboard, o time seleciona um cliente e vê, em linguagem de negócio, os fatores que o colocaram na lista.

Painel de explicação por cliente no dashboard

O time seleciona um cliente e vê os fatores que o colocaram na lista, em linguagem de negócio.

Resultado

74% dos clientes em risco
identificados corretamente
51,7% de ROI por ciclo
validado com teste A/B
221,5% de ROI no grupo que mais
responde à campanha

Leia mais projetos