Projeto concluído, do CSV ao deploy: clusterização de 1.115 lojas que termina em meta por loja e R$ na mesa

Uma rede de varejo aplicava +5% de meta para todas as 1.115 lojas. A loja de esquina batia a meta sem esforço; a loja com concorrente a 300 metros desistia em março. Este é o mapa de um projeto de clusterização que começa nessa injustiça e termina em duas ferramentas na mão da operação: a meta de cada loja e o enquadramento de lojas novas.

28,3%
da variação da venda explicada pelos grupos, contra 2,8% do tipo de loja
0,888
ARI tirando 20% das lojas — o primeiro modelo deu 0,755 e reprovou
R$ 51,4 mi
por ano se as lojas abaixo dos pares recuperarem 25% da distância

O case usa uma rede de varejo fictícia sobre uma base pública de vendas diárias de 1.115 lojas. A arquitetura, o código e todos os números são reais.

📚

O projeto em quatro formatos: esta série conta a narrativa em nove partes; o classificador de lojas coloca o modelo treinado para rodar no seu navegador, com uma loja por vez ou uma base inteira; o carrossel em PDF (11 páginas) resume tudo em uma leitura de dois minutos; e o repositório no GitHub ↗ traz os notebooks das seis fases, o plano de metas, o classificador de lojas novas e a documentação técnica completa.

A série, parte a parte

Do problema ao dado

Modelagem e avaliação

Do modelo à decisão

Os cinco grupos, em uma tabela

K-Means com k = 5 sobre seis features — venda média por dia, ticket médio, efeito da promoção, volatilidade, sazonalidade e distância ao concorrente — em log1p e padronizadas:

GrupoLojasVenda/dia (R$)Ticket (R$)Efeito da promoçãoDistância mediana
Bairro competitivo de cesta pequena2925.7198,4345,4%840
Destino de cesta grande4147.08411,3534,9%5.835
Sazonal656.3128,2432,0%2.640
Dependente de promoção1656.1259,7870,8%4.150
Alto fluxo, cesta pequena1799.5458,0426,3%770
Rede1.1156.9359,6441,4%2.325

Os critérios da fase de negócio, um a um

CritérioSituaçãoEvidência
EstávelAtendidoARI de 0,992 (semente), 0,990 (reordenação) e 0,888 (subamostra de 80%)
Melhor que o baselineAtendido, com uma ressalvaGanha em 9 de 10 métricas; perde só em domingos abertos, coluna fora do modelo
InterpretávelAtendidoCinco grupos nomeados a partir do perfil
AcionávelAtendidoMatriz grupo × área sem pares com a mesma ação
QuantificadoAtendidoR$ 51,4 mi/ano com 25% de captura; plano de metas fechando +5% (R$ 117,3 mi/ano)

Quatro conclusões que a série produziu

  • Corrigir assimetria por reflexo pode apagar o padrão que você quer encontrar. O log na sazonalidade zerou o skew e dissolveu um grupo real de 65 lojas.
  • Teste de estabilidade só vale se for difícil de passar — e se for escrito antes de ver o resultado. Foi ele que reprovou a primeira versão.
  • Média de percentuais não é crescimento em reais. As metas somavam 5,15% em média simples e 4,19% ponderadas: R$ 19 milhões de buraco.
  • Meta impossível não é ambiciosa, é desmotivadora. Sem teto, 46 lojas recebiam até 37,8%.
📋

Estado do projeto: as seis fases do CRISP-DM estão concluídas, com plano de metas e classificador de lojas novas entregues. O que ainda não é perfeito, e está registrado: silhueta de 0,202 (a estrutura existe, mas a separação entre grupos é baixa); 122 lojas de fronteira marcadas para revisão com o gestor; e o grupo Sazonal, estável mas pouco coeso, que exige 24 meses de histórico para classificar uma loja nova com segurança.

Um projeto irmão

Este é um problema sem gabarito — aprendizado não supervisionado, avaliado contra critérios de negócio. O outro case completo do blog é o oposto: Aurora, um modelo de risco de crédito, supervisionado, onde o gabarito existe e a decisão sai do custo do erro. Os dois terminam no mesmo lugar: um número que alguém fora da área de dados consegue usar.