Esse projeto é baseado num desafio do Kaggle cujo contexto é prever as vendas das próximas seis semanas para uma rede de farmácias (Rossmann) que atua em 7 países europeus com mais de 3000 lojas. Para isso, utilizei o método de regressão, seguindo a metodologia CRISP-DS para rápida entrega de resultado.
A Rossmann opera mais de 3000 farmácias em 7 cidades da Europa. Seu CFO pediu para que cada um dos gerentes das lojas previssem a receita para as próximas 6 semanas. As vendas são influenciadas por muitos fatores como promoções, competidores, feriados, sazonalidade e localidade. Porém, com milhares de gerentes prevendo as vendas baseados nas circunstâncias de suas lojas, e sem a utilização de nenhum método científico, a acurácia da previsão pode ser muito variada. Por isso, uma solução utilizando Ciência de Dados vai tornar os resultados mais precisos e uniformes.
O passo mais importante de um projeto de dados é descobrir se a demanda que foi feita realmente soluciona o problema por trás dela. Então é essencial buscar por respostas para perguntas do tipo: qual é a finalidade dessa previsão? por que é esperado que ela solucione o problema?
Suponhamos então, que o CFO queira essas previsões para definir o quanto poderá investir na reforma de cada loja.
Agora, tendo a causa raiz da demanda em mente - as reformas - é boa prática procurar saber um pouco mais sobre o motivo pelo qual as previsões atuais não dão conta do problema. Nesse caso, obtivemos as seguintes conclusões:
- Previsões não consistentes, feitas manualmente pelos gerentes de cada loja;
- Visualização das predições limitadas a planilhas num computador local.
Com o motivo real por trás da demanda em mente, e as causas pela qual as soluções já existentes não atendem esse problema, agora se torna muito mais fácil planejar o que pode ser feito, e se um modelo de Machine Learning é realmente necessário. Afinal, os Cientistas de Dados trabalham para resolver problemas reais de negócio, e se isso puder ser feito de maneira simples e rápida, sem a aplicação de um modelo, então deve ser feito.
Voltando a narração do projeto: Machine Learning é uma ótima opção para esse caso. Então nosso objetivo será entregar:
- Modelo de Machine Learning que faça a previsão das vendas para as próximas 6 semanas;
- Bot no telegram que permita com que os colaboradores vejam essa previsão de qualquer smartphone ou computador conectado a internet.
Checagem do dataset por inteiro, como sua dimensão, NA's, tipos de variáveis... Por final, uma descrição estatística.
Etapa pré análise exploratória. Criação das hipóteses com finalidade de criar as features necessárias para a análise.
Exploração dos dados com foco no entendimento das métricas do negócio, geração de insights e correlação de variáveis.
Normalização, rescaling e transformação dos dados para os modelos de Machine Learning.
Utilização do algoritmo Boruta, em conjunto com o conhecimento obtido na análise exploratória, para selecionar as variáveis/features mais importantes para os modelos.
Aplicação dos modelos de Machine Learning com Cross-Validation para definir o que apresenta melhor resultado.
Conversão dos erros do modelo escolhido para resultados financeiros de negócio.
Deploy do script na nuvem Heroku para tornar o modelo acessível em outras máquinas e construção do bot no telegram.
Dentro de 11 hipóteses validadas e desvalidadas, essas são as que mais geraram surpresa:
- H1: Lojas com maior sortimento deveriam vender mais.
FALSA. Lojas com maior sortimento vendem menos.
- H2: Lojas com competidores mais próximos deveriam vender menos.
FALSA. Lojas com competidores mais próximos vendem mais.
- H3: Lojas com competidores à mais tempo deveriam vender mais.
FALSA. Lojas com competidores recentes tem um pico de vendas, e com o tempo as vendas abaixam e se tornam mais constantes.
Com a solução elaborada no projeto, a rede Rossmann tem como esperada a receita de aproximadamente $ 285,059,456.00 nas próximas seis semanas, com seus respectivos pior/melhor cenários devido a erros do algoritmo calculados abaixo.
A previsão individual de cada loja pode ser consultada pelo Telegram, conforme a demonstração. Com isso, resolvemos nossa questão de negócio, visto que o CFO pode, a qualquer momento, consultar a receita que está por vir para cacular o budget da reforma para cada uma das lojas.
- Coletar feedbacks sobre a usabilidade do produto de dados com os colaboradores;
- Fazer outro ciclo CRISP-DS para diminuir os erros do modelo.
- O dataset utilizado se encontra no Kaggle