Estratégias para previsão de séries temporais para 2000 produtos diferentes?

9

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.

Amonet
fonte
11
Esses produtos são semelhantes? Você pode se beneficiar de pesquisar este Sitr para a previsão hierárquica
b Kjetil Halvorsen

Respostas:

11

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 .

Skander H.
fonte
11
@Amonet "Eu faria uma previsão no nível da família de produtos e depois me desagregaria para o nível do produto, correto?" Sim.
Skander H.
3
+1, todos os pontos extremamente bons. Em relação à previsão hierárquica, sou um grande fã da reconciliação ideal , que eu e outras pessoas descobrimos repetidamente que superam de cima para baixo e de baixo para cima em todos os níveis da hierarquia. Além disso, é no fundo um algoritmo de otimização, para que você possa levar em conta as restrições. (Por exemplo, se algumas séries têm baixo volume, a reconciliação sem restrições pode levar a previsões negativas.) Concordo, porém, que se deve visar a previsões de demanda sem censura ...
Stephan Kolassa
3
... Eu sempre recomendo começar com métodos simples de previsão primeiro , o que pode ser surpreendentemente difícil de superar. Veja também aqui.
precisa saber é o seguinte
2
@ usεr11852: dois anos são apenas dois ciclos. Na diferenciação sazonal, perdemos um ciclo. Portanto, o ARIMA sazonal perde metade de seus dados apenas pela diferença. Eu não usaria o ARIMA sazonal com menos de cinco ciclos de dados. ...
Stephan Kolassa
11
@ usεr11852: isso me lembra algumas análises que fiz nas quais as séries inferiores foram ajustadas "demais", relativamente falando, porque os ajustes são mais ou menos equilibrados em termos absolutos, não em termos percentuais. Eu então usei 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.
precisa saber é o seguinte
8

Só poderemos dar conselhos muito gerais.

  • Existem fatores fortes, como promoções ou eventos do calendário, ou sazonalidade, tendências ou ciclos de vida? Nesse caso, inclua-os em seus modelos. Por exemplo, você pode regredir as vendas em promoções e, em seguida, modelar potencialmente resíduos (usando suavização exponencial ou ARIMA).
  • Existem pacotes de software que fazem um trabalho razoavelmente bom ao ajustar vários modelos de séries temporais a uma série. Você pode simplesmente repetir sua série 2000, o que não deve demorar muito mais tempo de execução do que uma xícara de café. Eu particularmente recomendo a ets()função no forecastpacote em R. (menos a auto.arima()função para dados semanais.
  • Pelo menos, procure um livro de previsão, por exemplo, este . Ele usa o forecastpacote que eu recomendo acima.
  • Qual é o seu objetivo final? Deseja uma previsão imparcial? Em seguida, avalie as previsões pontuais usando o MSE. Seu bônus dependerá do MAPE? Então, esta lista de problemas do MAPE pode ser útil. Você precisa de previsões para definir valores de segurança? Então você precisa de previsões quantis, não de previsões ruins. (As funções no forecastpacote podem fornecer essas.)

Se você tiver perguntas mais específicas, publique-as no CV.

Stephan Kolassa
fonte
4
@ ŁukaszGrad: se você trabalhou no FPP2, nosso livro não vai lhe contar muito sobre novidades. Os Princípios de Previsão de Negócios de Ord et al. (2ª ed.) Aprofundam-se ( analisei-a aqui se você tiver acesso). ...
Stephan Kolassa
3
... Você pode lucrar vendo o IIF , talvez leia sua publicação Foresight ou participe de uma de suas conferências, a ISF , que ocorrerá este ano em junho em Thessaloniki, ou a Foresight Practitioner Conference, este ano em novembro no o campus da SAS em Cary, NC, dependendo de onde você estiver. A ISF é um pouco mais orientada academicamente, mas recentemente, eu diria que 33% dos participantes vieram da indústria, e geralmente há uma faixa de praticantes.
Stephan Kolassa
2
(Divulgação completa: Eu estou envolvido com tudo isso, assim que tomar minhas recomendações com um grande grão de sal Se você fizer um attend das conferências, encontrar-me e dizer oi.!)
Stephan Kolassa
11
@ SkanderH: use o forecast()comando no seu modelo ajustado (ou seja, a saída de ets()ou auto.arima()) e especifique o levelparâmetro. Veja ?forecast.etse ?forecast.Arima(observe a capitalização).
precisa saber é o seguinte
11
@StephanKolassa Aceitei a outra resposta, pois é um acompanhamento de sua resposta e, portanto, as pessoas estão mais inclinadas a ler seus conselhos úteis.
Amonet
1

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.

IrishStat
fonte