Leia nosso artigo sobre

.

O senhor precisa de uma linha de base para seu mais recente projeto de previsão de séries temporais? O senhor deseja explicar o processo de tomada de decisão de um modelo preditivo para uma empresa audience? O senhor gostaria de saber se os preços dos carros são sazonais antes de comprar um novo? Talvez tenhamos algo para o senhor! Este artigo apresenta o Streamlit Prophet, um aplicativo da Web que ajuda os cientistas data a treinar, avaliar e otimizar modelos de previsão de forma visual. As previsões são feitas com o Prophet, um modelo rápido e facilmente interpretável.

O senhor pode testar o aplicativo on-line aqui mas pode não estar disponível o tempo todo, devido à limitação dos recursos de computação compartilhados. Outra opção é instalar o pacote python e executá-lo localmente.

O que é Streamlit Prophet?

O Streamlit Prophet é um pacote Python por meio do qual o senhor pode implantar um aplicativo para criar modelos de previsão de séries temporais visualmente e sem qualquer codificação. Depois de carregar um dataset com valores históricos do sinal a ser previsto, o aplicativo treina um modelo preditivo em poucos cliques, juntamente com várias visualizações para ajudá-lo a avaliar seu desempenho e obter mais informações.

O modelo subjacente é construído com Profeta, uma biblioteca de código aberto desenvolvida pelo Facebook para prever séries temporais data. O sinal é dividido em vários componentes, como tendência, sazonalidades e efeitos de feriados. O estimador aprende a modelar cada um desses blocos separadamente e, em seguida, soma suas diferentes contribuições para produzir uma previsão facilmente interpretável. O desempenho é melhor quando as séries têm fortes padrões sazonais e quando há vários ciclos do histórico data disponíveis. O senhor pode dar uma olhada no seguinte linha ou este artigo se o senhor quiser saber mais sobre os fundamentos matemáticos do Prophet.
A interface é feita com Streamlit, uma estrutura Python para a criação de aplicativos científicos na Web data.

Quais são os principais recursos?

O Streamlit Prophet foi criado para ajudar os cientistas e analistas de negócios data a começar a trabalhar rapidamente em seus projetos de séries temporais. Como ilustração, digamos que gostaríamos de prever as vendas futuras de bens de consumo em uma determinada loja, com base em data históricos que vão de 2011 a 2015. Nosso conjunto de data se parece com a tabela abaixo.

Um modelo de linha de base com parâmetros padrão é ajustado no data assim que ele é carregado. Agora vamos ver como podemos usar o Streamlit Prophet para aprimorá-lo e obter uma melhor compreensão do fenômeno.

Exploração Data

A primeira etapa de qualquer projeto de previsão é certificar-se de que o dataset não tem segredos para o senhor. O Prophet fornece nativamente um bom decomposição do sinal para ajudar o senhor a atingir essa meta. Vários gráficos estão disponíveis no aplicativo para que o senhor obtenha essas valiosas percepções em um relance.
O gráfico a seguir é um bom ponto de partida, pois fornece uma representação global da série temporal carregada e contém muitas informações úteis.

Os pontos pretos são as vendas históricas reais, que, na maioria das vezes, estão compreendidas entre 75 e 225 unidades por dia. Algumas exceções sem vendas ou com baixos volumes podem ser identificadas no final de cada ano, próximo ao Natal, quando as lojas provavelmente estão fechadas. A tendência é exibida em uma linha vermelha para obter uma visão mais sintética do sinal e visualizar as evoluções globais. Por fim, a linha azul representa as previsões feitas por um modelo Prophet que é treinado automaticamente em seu dataset. Aqui podemos ver que o modelo espera que as vendas aumentem em 2016, seguindo a tendência de crescimento que começou em 2015.

Essas previsões parecem ser sazonais, mas é difícil distinguir os diferentes componentes periódicos nesse primeiro gráfico. Vamos verificar outra visualização para entender como esses padrões sazonais afetam a saída do modelo.

Duas periodicidades foram detectadas e fornecem algumas percepções interessantes sobre os hábitos dos consumidores. O ciclo semanal mostra que a maioria das pessoas faz compras nos finais de semana, durante os quais as previsões aumentam em quase 40 unidades por dia. O gráfico também sugere que os produtos vendidos têm uma sazonalidade anual, com um pouco mais de vendas durante o verão do que no resto do ano. Esses componentes periódicos e a tendência global serão então combinados pelo estimador para produzir previsões para dias futuros.

Avaliação de desempenho

Esses gráficos sintetizam a maneira como o data é modelado pelo Prophet, mas como podemos ter certeza de que essa representação é confiável? Para responder a essa pergunta legítima, uma seção do aplicativo é dedicada a avaliar a qualidade do modelo. Ela fornece rapidamente ao usuário um desempenho de previsão de linha de base. Para isso, a série temporal é dividida em várias partes: primeiro, o modelo é ajustado em um conjunto de treinamento e, em seguida, testado em um conjunto de validação. Outras opções, como validação cruzada, também estão disponíveis para um uso mais avançado.

Diferentes métricas podem ser usadas para avaliar a qualidade do modelo: métricas absolutas, como a raiz do erro quadrático médio (RMSE), são úteis para se ter uma ideia da magnitude dos erros em termos de número de vendas, mas métricas relativas, como o erro percentual médio absoluto (MAPE), podem ser mais interpretáveis. Cabe ao senhor selecionar a métrica mais relevante para o seu caso de uso.

No entanto, é improvável que o desempenho seja uniforme em todos os pontos do data, portanto, obter um indicador global não é suficiente. Devemos computar métricas em uma granularidade mais detalhada para obter uma compreensão clara da qualidade do modelo. Vamos começar com uma análise aprofundada no nível diário, que é a menor granularidade possível em nosso caso, pois o modelo faz uma previsão por dia.

Podemos observar uma variabilidade importante: há dias em que o erro é maior que 20%, enquanto algumas outras previsões são quase perfeitamente precisas. Com essas informações em mente, o senhor provavelmente não pode deixar de se perguntar se há padrões na maneira como o modelo comete erros. Existem alguns dias específicos em que podemos esperar que ele tenha um desempenho ruim? Felizmente, o aplicativo fornece alguns gráficos úteis que nos ajudarão a satisfazer nossa curiosidade.

Diagnóstico de erros

A seção de diagnóstico de erros é provavelmente a mais útil, pois permite destacar as áreas em que as previsões poderiam ser melhoradas e, assim, identificar com mais precisão os principais desafios que o senhor enfrentará para criar um modelo de previsão confiável.

Várias visualizações estão disponíveis para realizar essa investigação. Elas são interativas, de modo que o senhor pode facilmente se concentrar em algumas áreas específicas. Por exemplo, o gráfico de dispersão abaixo representa cada previsão feita no conjunto de validação por um único ponto, e passar o mouse sobre os que estão distantes da linha vermelha nos ajuda a entender para que tipo de pontos data as previsões estão longe da verdade.

Em nosso exemplo, passar o mouse sobre a área superior direita mostra que os pontos mais distantes da linha vermelha são os sábados e domingos, o que sugere que o modelo tem melhor desempenho durante a semana. Vamos agregar as métricas de desempenho por dia da semana para validar essa intuição.

De fato, os erros são maiores, em média, nos fins de semana do que durante o resto da semana, o que é uma informação a ser levada em conta ao tentar otimizar o modelo. O desempenho também pode evoluir com o tempo, portanto, é possível selecionar outros níveis de agregação disponíveis no aplicativo para verificar isso. Poderíamos, por exemplo, computar métricas em uma granularidade semanal ou mensal, ou em um período de tempo específico durante o qual suspeitamos que o desempenho seja diferente do normal.

Otimização de modelos

Depois de descobrirmos os principais pontos fracos do modelo, várias opções estão disponíveis para melhorá-lo: a barra lateral do aplicativo permite que o senhor edite a configuração padrão e insira suas próprias especificações. Todas as métricas e visualizações de desempenho são atualizadas sempre que o senhor altera as configurações, para obter um feedback rápido.

A primeira maneira de obter melhor desempenho é aplicar algum pré-processamento personalizado ao seu dataset. Várias alternativas são possíveis para contornar os desafios identificados anteriormente. Por exemplo, uma seção de limpeza nos permite eliminar os valores discrepantes observados perto do Natal, o que pode confundir o modelo. Também poderíamos filtrar alguns dias específicos e, assim, treinar facilmente modelos distintos para a semana e os fins de semana, pois eles parecem estar associados a diferentes comportamentos de compra. Algumas outras opções de filtragem e reamostragem também estão disponíveis, caso sejam relevantes para o problema em questão.

Os hiperparâmetros do Profet também podem ser ajustados para ajudar o modelo a se adaptar melhor ao data. Esses parâmetros influenciam a forma como o estimador aprende a representar a tendência e as sazonalidades das vendas históricas e o peso relativo desses componentes na previsão global. Não se preocupe se o senhor não estiver familiarizado com os modelos Prophet, pois algumas dicas de ferramentas explicam a intuição por trás de cada parâmetro e o orientam no processo de ajuste. Na seção de modelagem, o senhor também pode alimentar o modelo com informações externas, como feriados ou variáveis relacionadas ao sinal a ser previsto (como o preço de venda dos produtos, por exemplo). Esses regressores provavelmente melhorarão o desempenho, pois fornecem ao modelo conhecimento adicional sobre um fenômeno que afeta as vendas.

Interpretabilidade da previsão

Ter um modelo de previsão preciso é bom, mas ser capaz de explicar os principais fatores que contribuem para as previsões é ainda melhor. A última seção do aplicativo visa a nos ajudar a entender como o modelo que acabamos de criar toma decisões. Há diferentes maneiras de abordar essa questão: podemos analisar um único componente e ver como sua contribuição para as previsões gerais evolui com o tempo ou podemos pegar uma única previsão e decompô-la na soma das contribuições de vários componentes.

Vamos começar com a primeira opção. Os diferentes componentes que influenciam as previsões são a tendência, as sazonalidades e os regressores externos. Já observamos o impacto das sazonalidades semanais e anuais, portanto, vamos nos concentrar nos regressores externos que incluímos na seção de otimização do modelo: feriados e preço de venda dos produtos.

O impacto de alguns feriados é bastante importante: por exemplo, o Dia do Trabalho aumenta as previsões em 50 vendas todos os anos no início de setembro, e as quedas no Natal mostram que o modelo levou em conta o fato de que as lojas fecham nesse dia. Quanto ao preço, ele tem aumentado ano após ano e, portanto, seu impacto sobre as vendas mudou de positivo para negativo.

Também pode ser útil explicar como o modelo produziu uma previsão específica, especialmente quando um evento específico influencia a previsão. O gráfico em cascata a seguir mostra essa decomposição para a previsão feita em 31 de outubro de 2012.

Nesse exemplo, o modelo acabou prevendo 96 vendas, que é a soma das contribuições de cinco componentes diferentes:

  • Tendência global (+134): esse é o fator mais influente.
  • Dia das Bruxas efeito (-12): o produto é menos vendido no Halloween do que em dias normais.
  • Preço de venda (+2): o preço deve ter sido ligeiramente inferior à média nesse dia.
  • Sazonalidade semanal (-23): isso foi em uma quarta-feira, que não é durante o fim de semana.
  • Sazonalidade anual (-5): Outubro é a baixa temporada para esse produto.

Esse tipo de decomposição não é útil apenas para compartilhar insights com os colaboradores, mas também pode ajudar os analistas a entender por que o modelo não tem o desempenho esperado. Se necessário, vários parâmetros estão disponíveis na barra lateral do aplicativo para aumentar ou diminuir os pesos relativos dos diferentes componentes.

Como começar?

Executar o aplicativo em seu próprio computador é bastante simples. O único pré-requisito é ter o Python instalado. São necessários mais alguns requisitos para usuários do Windows (consulte repositório para obter mais detalhes). Em seguida, o senhor pode seguir as instruções abaixo para começar.

Instalação

Recomendamos a criação de um novo ambiente virtual para evitar problemas de dependências ou incompatibilidade com o ambiente atual. Quando o novo ambiente estiver ativado, o senhor poderá instalar o pacote com o seguinte comando. A instalação pode levar alguns minutos (5 a 10).

pip install -U streamlit_prophet

Executar

Agora que o pacote foi instalado, um único comando permite que o senhor inicie o aplicativo a partir do terminal e o abra no navegador da Web padrão.

painel de implantação do streamlit_prophet

E o senhor está pronto para criar modelos do Prophet! Para começar a modelar, primeiro o senhor precisa carregar seu dataset como um arquivo csv com o seguinte formato.

Image

Em seguida, o senhor pode fornecer suas especificações na barra lateral para executar as tarefas de pré-processamento que atendam às suas necessidades e ajustar os hiperparâmetros do modelo. Quando estiver satisfeito com os resultados, salve o experimento para manter todas as visualizações e poder reproduzi-lo facilmente depois.

Implementação na nuvem

Se quiser tornar o aplicativo facilmente acessível a vários colaboradores sem obrigá-los a baixar o Python e instalar o pacote, o senhor pode implantar o aplicativo no cloud. A primeira coisa que o senhor precisa fazer é clonar o repositório git. Em seguida, um comando do Docker permite que o senhor conteinerize facilmente o aplicativo e crie uma imagem que pode ser usada para implantar o aplicativo na plataforma cloud de sua escolha. Isso artigo explica em detalhes como fazer isso no Google Cloud Platform.

Muito obrigado pela leitura e ficaria feliz em ouvir seus comentários. Fique à vontade para entrar em contato com o senhor se quiser contribuir para o desenvolvimento do pacote ou se tiver alguma ideia de melhoria. Enquanto isso, o senhor pode visitar o site repositório de projetos para assistir a uma breve demonstração e Blog de tecnologia Artefact para obter mais informações sobre nossos projetos científicos data.

Média Blog por Artefact.

Este artigo foi publicado inicialmente no Medium.com.
Siga-nos em nosso Medium Blog !