Jak obchodzić się z wieloma seriami jednocześnie?

15

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.

Katatonia
źródło
3
Najbardziej zaawansowany pakiet do analizy wielowymiarowych szeregów czasowych, o którym wiem, znajduje się bigtimew R. Być może możesz zadzwonić do R z Python, aby móc go użyć.
Richard Hardy

Odpowiedzi:

11

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 masz 1200 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. MTSPakiet i bigtimepacakage w Rma kilka możliwości postępowania w wielowariantowej szeregów czasowych, więc byłoby również warto zapoznanie się z tych pakietów.

Przywróć Monikę
źródło
Najbardziej zaawansowany pakiet do analizy wielowymiarowych szeregów czasowych, o którym wiem, znajduje się bigtimew R. O ile mi wiadomo MTS, 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.
Richard Hardy
@Richard Hardy: Dzięki --- Zredagowałem moją odpowiedź, aby to uwzględnić.
Przywróć Monikę
1
Dobrym sposobem na obejście tego byłoby rozważenie VAR Bayesian, a dokładniej dużego modelu VAR Bayesian.
Graeme Walsh,
7

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.

wprowadź opis zdjęcia tutaj

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ć.

Skander H.
źródło
1
Tak na marginesie . AUTOBOX implementuje rodzaj hierarchicznego modelowania, o którym mówiłeś, używając sum GRUPY jako możliwej serii kierowania, aby pomóc w przewidywaniu DZIECI za pomocą modeli SARMAX. Niepewność w prognozach dla dzieci jest także skumulowaną funkcją niepewności u rodzica, przy jednoczesnym uwzględnieniu możliwości przyszłych impulsów w obu przypadkach. Cieszę się, że ktoś inny stosuje takie podejście.
IrishStat
Amazon niedawno uruchomił algorytm DeepAR oparty na GluonTS, który wykorzystuje framework MxNet, choć w tym momencie dokumentacja trochę mi brakuje. aws.amazon.com/blogs/opensource/…
hardikudeshi
5

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.

IrishStat
źródło
1
Brzmi interesująco. Tylko mały spór: nawet w czymś tak prostym jak VAR, każda seria ma swoje własne równanie, więc potrzeba posiadania tylko 1 modelu z 1 zestawem parametrów nie stanowi problemu. Chyba że sugerujesz kilka modeli dla tej samej serii, co może być dobrym pomysłem z perspektywy kombinacji prognoz.
Richard Hardy
cel: „wyszkolić jeden model do prognozowania popytu na wszystkie 1200 produktów?” „Wziąłem to dosłownie jako równanie 1 typu z 1 zestawem stałych / globalnych parametrów oszacowanych ze wszystkich 1200 szeregów czasowych.” Być może
przesadziłem z
A może źle to zrozumiałem.
Richard Hardy
3

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 jako reja=jotfajotβjotja+mija, gdzie fajotjest 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 wytworzenia fa^joti 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.

Aksakal
źródło
Widzę twój punkt widzenia na 25 okresów tworzących bardzo krótkie szeregi czasowe, ale co jeśli są to wartości miesięczne? Zatem PO ma dwa lata miesięcznych danych, co wystarcza, aby uchwycić pewną sezonowość lub przynajmniej zastosować proste wygładzanie wykładnicze, prawda?
Skander H.
@ SkanderH., 25 punktów może wystarczyć do uruchomienia jednej serii (tj. Każdej serii osobno) lub agregacji. Chodzi mi o to, że nie wystarczy uruchomić to jako system.
Aksakal
Lub mogą to być czynniki egzogenne, np. Te uzyskane z analizą PCA. Być może endogenny ?
Richard Hardy,
1

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:

Wkładem szkoleniowym dla algorytmu DeepAR jest jeden lub, najlepiej, szereg docelowych szeregów czasowych, które zostały wygenerowane przez ten sam proces lub podobne procesy. Na podstawie tego wejściowego zestawu danych algorytm trenuje model, który uczy się aproksymacji tego procesu / procesów i wykorzystuje go do przewidywania ewolucji docelowych szeregów czasowych. Każda docelowa seria czasowa może być opcjonalnie powiązana z wektorem statycznych (niezależnych od czasu) cech jakościowych dostarczanych przez pole cat i wektorem dynamicznych (zależnych od czasu) szeregów czasowych dostarczanych przez pole dynamic_feat.

Niestety, o ile wiem, nie udostępniają tego algorytmu do użytku offline / na własnym serwerze.

mbrig
źródło