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.
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
- 1. A meta que nasce errada em 1º de janeiro — a régua única de +5%, a pergunta que mudou e o que estava na mesa: 1.017.209 registros diários de 1.115 lojas.
- 2. Meta igual para lojas diferentes não é justiça, é ruído — quatro áreas que dependem da mesma resposta, por que é clusterização, e os cinco critérios de sucesso escritos antes do modelo.
- 3. De 1 milhão de linhas a uma linha por loja — dias fechados que zeram a média, 180 lojas com seis meses sem nenhuma linha, e as seis features que descrevem como a loja vende.
- 4. O cadastro diz como a loja foi registrada, não como ela vende — tipo e sortimento ficam fora do modelo — e mesmo assim 13 das 17 lojas do tipo b caem no mesmo grupo.
Modelagem e avaliação
- 5. O k que importa é o que o gestor consegue usar — o cotovelo sem dobra, Ward como segunda opinião e o k = 5 escolhido pelos critérios de negócio.
- 6. Clusters contra o cadastro: 28,3% contra 2,8% — 9 de 10 métricas ganhas, inclusive 3 que nem entraram no modelo; estabilidade medida loja a loja.
Do modelo à decisão
- 7. Silhueta não paga boleto: os pares em reais — R$ 51,4 mi por ano com 25% de captura, por que o gap menor é o mais defensável, e a matriz de decisão por grupo.
- 8. O que pode dar errado, e como enquadrar uma loja nova — seis riscos de meta por cluster e o classificador de lojas novas: 1.115 de 1.115 reproduzidas, 14 testes, regra de 12/24 meses.
- 9. O modelo que reprovou no teste que eu mesmo escrevi — ARI de 0,755, a cauda que era um grupo real, e o plano de metas onde a média simples escondia R$ 19 milhões.
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:
| Grupo | Lojas | Venda/dia (R$) | Ticket (R$) | Efeito da promoção | Distância mediana |
|---|---|---|---|---|---|
| Bairro competitivo de cesta pequena | 292 | 5.719 | 8,43 | 45,4% | 840 |
| Destino de cesta grande | 414 | 7.084 | 11,35 | 34,9% | 5.835 |
| Sazonal | 65 | 6.312 | 8,24 | 32,0% | 2.640 |
| Dependente de promoção | 165 | 6.125 | 9,78 | 70,8% | 4.150 |
| Alto fluxo, cesta pequena | 179 | 9.545 | 8,04 | 26,3% | 770 |
| Rede | 1.115 | 6.935 | 9,64 | 41,4% | 2.325 |
Os critérios da fase de negócio, um a um
| Critério | Situação | Evidência |
|---|---|---|
| Estável | Atendido | ARI de 0,992 (semente), 0,990 (reordenação) e 0,888 (subamostra de 80%) |
| Melhor que o baseline | Atendido, com uma ressalva | Ganha em 9 de 10 métricas; perde só em domingos abertos, coluna fora do modelo |
| Interpretável | Atendido | Cinco grupos nomeados a partir do perfil |
| Acionável | Atendido | Matriz grupo × área sem pares com a mesma ação |
| Quantificado | Atendido | R$ 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.