Antes de tudo, percebo que minha pergunta é muito ampla e que pode ser difícil responder a essa pergunta por causa disso.
Você tem algum conselho sobre como abordar um 'problema' em que precisa fazer previsões / previsões para mais de 2000 produtos diferentes? Em outras palavras, cada produto requer uma previsão / previsão diferente. Eu tenho 2 anos de dados históricos no nível da semana (ou seja, demanda por semana por produto).
Preciso fazer isso em um curto período de tempo: tenho cerca de uma semana para fazer isso, portanto, estou procurando maneiras de criar rapidamente modelos de previsão relativamente bons. Criar um modelo para cada produto e inspecionar seu desempenho de perto, um por um, consumiria muito tempo.
Pensei em segmentar os produtos com base na variação , para que eu possa empregar modelos simples para produtos com baixa variação. Embora isso provavelmente não seja o ideal, seria uma maneira rápida de diminuir o número de modelos que preciso criar.
Seria muito apreciado se você tiver algum conselho prático para mim sobre como abordar esse problema.
fonte
Respostas:
Um acompanhamento da resposta de @StephanKolassa:
Concordo com Stephan que o ETS () do pacote de previsão em R é provavelmente a sua melhor e mais rápida escolha. Se o ETS não der bons resultados, convém usar o pacote Profeta do Facebook (o Auto.arima é fácil de usar, mas dois anos de dados semanais limitam os dados suficientes para um modelo ARIMA na minha experiência). Pessoalmente, achei o Profeta mais fácil de usar quando você tem dados sobre promoções e eventos de férias disponíveis, caso contrário, o ETS () pode funcionar melhor. Seu verdadeiro desafio é mais um desafio de codificação de como iterar com eficiência seu algoritmo de previsão em um grande número de séries temporais. Você pode verificar esta resposta para obter mais detalhes sobre como automatizar a geração de previsão .
Na previsão de demanda, alguma forma de previsão hierárquica é realizada com freqüência, ou seja, você possui 2000 produtos e precisa de uma previsão separada para cada produto separado, mas existem semelhanças entre os produtos que podem ajudar na previsão. Você deseja encontrar uma maneira de agrupar o produto ao longo de uma hierarquia de produtos e, em seguida, usar a previsão hierárquica para melhorar a precisão. Como você está procurando previsões no nível do produto individual, tente tentar a abordagem hierárquica de cima para baixo.
Algo um pouco mais exagerado, mas eu gostaria de dizer: Amazon e Uber usam redes neurais para esse tipo de problema, onde, em vez de ter uma previsão separada para cada produto / série temporal, eles usam uma gigantesca rede neural recorrente para prever todas as séries temporais em massa. Observe que eles ainda terminam com previsões individuais para cada produto (no caso da Uber, é o tráfego / demanda por cidade em oposição aos produtos), eles estão apenas usando um modelo grande (um modelo de aprendizado profundo LSTM) para fazer tudo de uma só vez. A idéia é semelhante em espírito à previsão hierárquica, no sentido de que a rede neural aprende com as semelhanças entre os históricos de diferentes produtos para obter melhores previsões. A equipe do Uber disponibilizou parte de seu código ( por meio dos repositórios do Github da competição M4), no entanto, é o código C ++ (não exatamente o idioma favorito da multidão de estatísticas). A abordagem da Amazon não é de código aberto e você precisa usar o serviço pago Amazon Forecast para fazer as previsões.
Com relação ao seu segundo comentário: você precisa diferenciar entre previsão de vendas e previsão de demanda. A demanda é irrestrita; se de repente um item for popular e seus clientes quiserem 200 unidades, não importa que você tenha apenas 50 unidades em mãos, sua demanda ainda será de 200 unidades.
Na prática, é muito difícil observar a demanda diretamente, por isso usamos as vendas como proxy da demanda. Isso tem um problema porque não leva em conta as situações em que um cliente queria comprar um produto, mas não estava disponível. Para resolvê-lo, juntamente com os dados históricos de vendas, as informações sobre níveis de estoque e falta de estoque são incluídas diretamente em um modelo ou usadas para pré - processar a série temporal antes de gerar um modelo para previsão .
Normalmente, uma previsão sem restrições é gerada primeiro por um mecanismo de previsão e depois repassada para um sistema de planejamento que adiciona as restrições mencionadas (por exemplo, a demanda é de 500 unidades, mas apenas 300 unidades estão disponíveis) juntamente com outras restrições (estoque de segurança, estoque de apresentação, restrições orçamentárias, planos de promoções ou introduções de novos produtos, etc ...) - no entanto, isso se enquadra na rubrica geral de planejamento e gerenciamento de inventário, sem previsão propriamente dita .
fonte
mgcv::pcls()
para a reconciliação, alimentando a matriz de soma manualmente. Isso tinha duas vantagens: (1) permite definir restrições de caixa, por exemplo, para garantir que as previsões reconciliadas não sejam negativas; (2) permite ponderar os ajustes; portanto, usei o inverso da média histórica de cada série como peso, que abordou o problema de ajuste.Só poderemos dar conselhos muito gerais.
ets()
função noforecast
pacote em R. (menos aauto.arima()
função para dados semanais.forecast
pacote que eu recomendo acima.forecast
pacote podem fornecer essas.)Se você tiver perguntas mais específicas, publique-as no CV.
fonte
forecast()
comando no seu modelo ajustado (ou seja, a saída deets()
ouauto.arima()
) e especifique olevel
parâmetro. Veja?forecast.ets
e?forecast.Arima
(observe a capitalização).Segmentar com base na variação da série original não faz sentido para mim, pois o melhor modelo deve ser invariante em escala. Considere uma série .. modele-a e multiplique cada valor na série temporal por 1000.
Em termos de equações de produção em massa que podem ter estrutura determinística (pulsos / mudança de nível / tendências da hora local) OU sazonalidade auto-regressiva e estrutura de arima, é necessário executar um script baseado em computador. Cuidado com soluções simples de auto arima que não assumem estrutura determinística OU pressupostos fixos sobre o mesmo.
fonte