Mam zestaw danych obejmujący zapotrzebowanie na kilka produktów (1200 produktów) na 25 okresów i muszę przewidzieć zapotrzebowanie na każdy produkt na następny okres. Na początku chciałem użyć ARIMA i trenować model dla każdego produktu, ale ze względu na liczbę produktów i dostosowanie parametrów (p, d, q) jest to czasochłonne i nie jest praktyczne. Czy zaleca się stosowanie regresji, w której poprzednie wymagania są zmiennymi niezależnymi (autoregresją)?
Czy mogę wiedzieć, czy istnieje metoda wyszkolenia jednego modelu do prognozowania popytu na wszystkie 1200 produktów? Byłbym wdzięczny, jeśli możesz zasugerować dowolną bibliotekę w Pythonie, ponieważ używam Pythona.
machine-learning
time-series
arima
Katatonia
źródło
źródło
bigtime
w R. Być może możesz zadzwonić do R z Python, aby móc go użyć.Odpowiedzi:
Zasadniczo, gdy masz wiele szeregów czasowych, użyłbyś jakiegoś modelu wektorowego do modelowania ich wszystkich jednocześnie. Naturalnym rozszerzeniem w tym celu modelu ARIMA jest model VARIMA (Vector ARIMA). Fakt, że masz1200 szeregów czasowych oznacza, że będziesz musiał określić pewne poważne ograniczenia parametryczne dla warunków korelacji krzyżowej w modelu, ponieważ nie będziesz w stanie poradzić sobie z wolnymi parametrami dla każdej pary zmiennych szeregów czasowych.
Sugerowałbym zacząć od prostego modelu wektorowego (np. VAR, VMA, VARMA) o niskim stopniu i kilku prostych ograniczeń parametrów dla korelacji krzyżowej. Sprawdź, czy możesz znaleźć rozsądny model uwzględniający korelację krzyżową z co najmniej jednym stopniem opóźnienia, a następnie przejdź od tego. Ćwiczenie to będzie wymagało zapoznania się z wektorowymi modelami szeregów czasowych.
MTS
Pakiet ibigtime
pacakage wR
ma kilka możliwości postępowania w wielowariantowej szeregów czasowych, więc byłoby również warto zapoznanie się z tych pakietów.źródło
bigtime
w R. O ile mi wiadomoMTS
, jest to raczej prezentacja przykładów z podręcznika niż prawdziwe narzędzie pracy. Niektóre przykłady wielowymiarowe mogą obsługiwać tylko serie 3-wymiarowe przed zadławieniem się obciążeniem obliczeniowym.Jak wspomniał Ben, metodami podręczników dla wielu szeregów czasowych są modele VAR i VARIMA. W praktyce jednak nie widziałem ich często używanych w kontekście prognozowania popytu.
Znacznie bardziej powszechne, w tym obecnie używane przez mój zespół, jest prognozowanie hierarchiczne (patrz również tutaj ). Prognozowanie hierarchiczne stosuje się zawsze, gdy mamy grupy podobnych szeregów czasowych: historia sprzedaży dla grup podobnych lub powiązanych produktów, dane turystyczne dla miast pogrupowanych według regionu geograficznego itp.
Chodzi o to, aby mieć hierarchiczną listę różnych produktów, a następnie przeprowadzać prognozowanie zarówno na poziomie podstawowym (tj. Dla każdego szeregu czasowego), jak i na poziomie zagregowanym określonym przez hierarchię produktów (patrz załączona grafika). Następnie uzgadniasz prognozy na różnych poziomach (za pomocą odgórnego, podwyższonego, optymalnego uzgodnienia itp.) W zależności od celów biznesowych i pożądanych celów prognostycznych. Zauważ, że w tym przypadku nie będziesz pasował do jednego dużego modelu wielowymiarowego, ale do wielu modeli w różnych węzłach w hierarchii, które zostaną następnie uzgodnione przy użyciu wybranej metody uzgadniania.
Zaletą tego podejścia jest to, że grupując podobne szeregi czasowe, można skorzystać z korelacji i podobieństw między nimi, aby znaleźć wzorce (takie zmiany sezonowe), które mogą być trudne do wykrycia w przypadku pojedynczego szeregu czasowego. Ponieważ będziesz generować dużą liczbę prognoz, których nie da się dostroić ręcznie, będziesz musiał zautomatyzować procedurę prognozowania szeregów czasowych, ale nie jest to zbyt trudne - zobacz szczegóły tutaj .
Bardziej zaawansowane, ale podobne duchowo podejście jest stosowane przez Amazon i Uber, gdzie jedna duża sieć neuronowa RNN / LSTM jest trenowana we wszystkich szeregach czasowych jednocześnie. Jest podobny w duchu do prognozowania hierarchicznego, ponieważ próbuje także nauczyć się wzorców na podstawie podobieństw i korelacji między powiązanymi szeregami czasowymi. Różni się od prognozowania hierarchicznego, ponieważ próbuje poznać związki między szeregami czasowymi, w przeciwieństwie do tego, aby związek ten był z góry określony i ustalony przed wykonaniem prognozowania. W tym przypadku nie musisz już zajmować się automatycznym generowaniem prognoz, ponieważ dostrajasz tylko jeden model, ale ponieważ model jest bardzo złożony, procedura dostrajania nie jest już prostym zadaniem minimalizacji AIC / BIC i potrzebujesz przyjrzeć się bardziej zaawansowanym procedurom dostrajania hiperparametrów,
Zobacz tę odpowiedź (i komentarze), aby uzyskać dodatkowe informacje.
W przypadku pakietów Python PyAF jest dostępny, ale nie jest bardzo popularny. Większość osób korzysta z pakietu HTS w języku R, dla którego wsparcie społeczności jest znacznie większe. W przypadku metod opartych na LSTM istnieją modele Amazon DeepAR i MQRNN, które są częścią usługi, za którą trzeba płacić. Kilka osób wdrożyło także LSTM do prognozowania popytu za pomocą Keras, możesz to sprawdzić.
źródło
Problem z sugerowanymi pakietami dopasowywania masy polega na tym, że jednolicie nie radzą sobie z utajoną deterministyczną strukturą, taką jak impulsy, zmiany poziomu / kroku, pulsacje sezonowe i trendy czasowe, lub skutecznie radzą sobie z przyczynami sugerowanymi przez użytkownika zgodnie z https: // autobox.com/pdfs/SARMAX.pdf
Ponadto czas obliczeń może być poważną komplikacją. AUTOBOX (który pomogłem opracować) ma bardzo wyrafinowaną fazę budowania modelu, która archiwizuje modele i bardzo szybką opcję prognozowania, która ponownie wykorzystuje wcześniej opracowany model, skracając czas prognozowania do niewielkiej części rygorystycznego czasu opracowywania modelu, jednocześnie dostosowując nową prognozę do ostatnich dane zaobserwowane po opracowaniu i zapisaniu modelu. Zostało to zrealizowane w ramach projektu prognozy 600 000 sklepów Annheuser-Busch na ponad 50 artykułów z uwzględnieniem ceny i pogody.
Modele można aktualizować w sposób ciągły, w razie potrzeby zastępując wcześniejsze modele.
Nie ma potrzeby ograniczeń parametrycznych LUB pominięcia jednoczesnego działania zmiennych przyczynowych, jak w VAR i VARIMA, przy jednoczesnym poleganiu wyłącznie na przeszłości wszystkich serii a la ARIMA.
Nie ma potrzeby posiadania tylko 1 modelu z 1 zestawem parametrów, ponieważ modele mogą i powinny być dostosowane / zoptymalizowane do poszczególnych serii.
Niestety nie ma jeszcze rozwiązania w języku Python, ale nadzieja rodzi się na wieki.
źródło
1200 produktów jest głównym czynnikiem wpływającym na wymiar Twojego problemu. Teraz masz tylko 25 okresów. To bardzo mało danych, niewystarczających do przeprowadzenia jakiejkolwiek ogólnej analizy korelacji. Innymi słowy, nie masz danych, aby mieć jednoczesną prognozę wszystkich produktów bez zmniejszania wymiarów. To prawie całkowicie eliminuje wszystkie modele VARMA i inne ładne modele teoretyczne. Nie da się poradzić sobie ze współczynnikami tych modeli, jest ich zbyt wiele do oszacowania.
Rozważ prostą analizę korelacji. Potrzebne byłyby (1200 x 1200 + 1200) / 2 komórki w macierzy kowariancji / korelacji. Masz tylko 25 punktów danych. Matryca będzie w stopniu ogromnie defektywnym. Co zamierzasz zrobić? Zasadniczo masz dwa proste podejścia: osobne prognozy i model czynników.
Pierwsze podejście jest oczywiste: każdy produkt uruchamia się niezależnie. Wariant polega na pogrupowaniu ich według niektórych funkcji, np. Sektora, takiego jak „zamknięcie męskie”.
Drugim podejściem jest przedstawienie popytu na produkty jakoreja= ∑jotfajotβj i+ eja , gdzie fajot jest czynnikiem. Jakie są czynniki? Mogą to być czynniki zewnętrzne, takie jak tempo wzrostu PKB. Lub mogą to być czynniki egzogenne, np. Te uzyskane z analizą PCA.
Jeśli jest to czynnik egzogeniczny, musisz uzyskać bety, regresując serię tych czynników indywidualnie. W przypadku PCA możesz zrobić solidny PCA i uzyskać kilka pierwszych czynników z ich wagami, które jesteś betą.
Następnie analizujesz czynniki i budujesz model prognozowania do wytworzeniafa^jot i podłącz je z powrotem do swojego modelu, aby uzyskać prognozę popytu na produkty. Można uruchomić model szeregów czasowych dla każdego czynnika, a nawet model wektorowy, taki jak VARMA, dla kilku czynników. Teraz, gdy wymiar problemu został zmniejszony, możesz mieć wystarczającą ilość danych, aby zbudować prognozowanie szeregów czasowych.
źródło
Nie jestem pewien, czy interesują Cię rozwiązania oparte na chmurze, ale Amazon udostępnia algorytm nazywany „DeepAR” za pośrednictwem AWS SageMaker, jak widać tutaj .
Algorytm ten jest przeznaczony w szczególności do uczenia się z wielu szeregów czasowych w celu tworzenia prognoz, w tym funkcji statycznych i dynamicznych; jak widać w tym fragmencie z powyższej połączonej strony:
Niestety, o ile wiem, nie udostępniają tego algorytmu do użytku offline / na własnym serwerze.
źródło