Prognozowanie szeregów czasowych przy użyciu ARIMA vs LSTM

64

Problemem, z którym mam do czynienia, jest przewidywanie wartości szeregów czasowych. Patrzę na jedną serię czasową naraz i na podstawie np. 15% danych wejściowych chciałbym przewidzieć jej przyszłe wartości. Do tej pory natknąłem się na dwa modele:

  • LSTM (długoterminowa pamięć krótkotrwała; klasa rekurencyjnych sieci neuronowych)
  • ARIMA

Próbowałem obu i przeczytałem kilka artykułów na ich temat. Teraz staram się lepiej zrozumieć, jak porównać oba. Co znalazłem do tej pory:

  1. LSTM działa lepiej, jeśli mamy do czynienia z ogromną ilością danych i dostępna jest wystarczająca ilość danych szkoleniowych, natomiast ARIMA jest lepszy dla mniejszych zestawów danych (czy to prawda?)
  2. ARIMA wymaga szeregu parametrów, (p,q,d)które należy obliczyć na podstawie danych, natomiast LSTM nie wymaga ustawiania takich parametrów. Jednak istnieją pewne hiperparametry, które musimy dostroić do LSTM.
  3. EDIT: Jedną z głównych różnic między nimi, które zauważyłem podczas czytania ciekawy artykuł tutaj jest to, że ARIMA mógł jedynie wykonywać również na stacjonarnych szeregów czasowych (gdzie nie ma sezonowości, trendu i itd.) I trzeba dbać o to, czy chcesz skorzystać z ARIMA

Poza wyżej wymienionymi właściwościami nie mogłem znaleźć żadnych innych punktów ani faktów, które mogłyby pomóc mi w wyborze najlepszego modelu. Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc w znalezieniu artykułów, artykułów lub innych rzeczy (jak dotąd nie miał szczęścia, tylko niektóre ogólne opinie tu i tam i nic na podstawie eksperymentów).

Muszę wspomnieć, że pierwotnie mam do czynienia z przesyłaniem danych, jednak na razie korzystam z zestawów danych NAB, które obejmują 50 zestawów danych o maksymalnym rozmiarze 20 000 punktów danych.

ahajib
źródło
Czy mógłbyś udostępnić kod LSTM? I DZIĘKI.
POMOC

Odpowiedzi:

25

Oświadczenie 1 jest poprawne, oświadczenie 2 jest poprawne, ale wymaga opracowania, a oświadczenie 3 jest niepoprawne w przypadku sezonowego ARIMA:

Poniższe wskazówki mogą skierować Cię w dobrym kierunku, ale mam nadzieję, że uzyskasz jeszcze kilka odpowiedzi z większą głębią na arenie LSTM.

Wspominasz, że wypróbowałeś oba algorytmy i po prostu próbujesz dowiedzieć się, który z nich jest lepszy, co prowadzi mnie do wniosku, że masz więcej problemów z procesem analizy danych i weryfikacji krzyżowej niż ze specyfiką modeli.

Szeregi czasowe ogólnie:

Szeregi czasowe są na ogół trudne do przewidzenia. Gdyby były łatwe do przewidzenia, wszyscy naukowcy zajmujący się danymi byliby zamożni, mając dokładne prognozy wartości wszystkich zasobów. Rzeczywistość jest taka, że ​​fundusze hedgingowe nie przewyższają przeciętnie rynku, a prognozowanie szeregów czasowych jest zazwyczaj bardzo słabe i dotyczy jedynie bardzo krótkich okresów. Główne problemy polegają na tym, że jest dużo hałasu, jest wiele ukrytych wpływów, modele są zbyt uproszczone, czynniki wpływające nie zachowują się tak, jak nam się wydaje, wzajemne oddziaływanie między liniowością a nieliniowością jest subtelne i mylące, ... nieskończenie.

ARIMA

Nie masz racji w ocenie, że ARIMA wymaga stacjonarnych szeregów czasowych do prognozowania. ARIMA niesezonowy ma trzy wartości wejściowe, które pomagają kontrolować wygładzanie, stacjonarność i prognozowanie ARIMA (p, d, q), gdzie:

  • p jest liczbą terminów autoregresyjnych,
  • d jest liczbą niesezonowych różnic potrzebnych do stacjonarności, oraz
  • q jest liczbą opóźnionych błędów prognozy w równaniu prognozy.

Natomiast sezonowa ARIMA ma sześć wartości wejściowych ARIMA (p, d, q, P, D, Q), gdzie:

  • P oznacza liczbę sezonowych warunków autoregresyjnych,
  • D to liczba różnic sezonowych, oraz
  • Q to liczba sezonowych warunków średniej ruchomej.

Z zastrzeżeniem powyższych oświadczeń kwalifikacyjnych, sugeruję grę z sezonową ARIMA, aby poczuć zawiłości związane z wygładzaniem, usuwaniem sezonów, usuwanie trendów, usuwanie szumów i prognozowanie.

LSTM

Nie wiem wystarczająco dużo o LSTM, aby dodać tutaj dużo. Dodam, że czerwone flagi są zwykle wywoływane, gdy ktoś rozpoczyna ćwiczenie analizy danych od głębokiego uczenia się. Proponuję nauczyć się jak najwięcej, korzystając z ARIMA, a następnie wykorzystać część swojej wiedzy ARIMA, aby pomóc Ci nauczyć się LSTM. Sieci neuronowe mogą być bardzo potężnym narzędziem, ale:

  • może zająć dużo czasu,
  • często wymagają więcej danych do trenowania niż inne modele, oraz
  • mieć wiele parametrów wejściowych do dostrojenia.

Krzyżowa walidacja i porównywanie modeli:

Szeregi czasowe są zabawne, ponieważ wszystkie dane szkoleniowe można zwykle przekształcić w zestawy szkoleniowe nadzorowane. Raz można po prostu wziąć szereg czasowy i cofnąć czas. To znaczy ... wybierz punkt w czasie i udawaj, że nie masz żadnych dodatkowych danych, a następnie przygotuj prognozę i sprawdź, jak dobrze to zrobiłeś. Możesz przemierzać szeregi czasowe, robiąc to razy, aby uzyskać ocenę wydajności twojego modelun i porównać modele, zachowując niezbędne środki ostrożności, aby zapobiec nadmiernemu dopasowaniu .

Mam nadzieję, że to pomoże i powodzenia!

AN6U5
źródło
Dziękuję za odpowiedź. Twoje notatki na temat ARIMA są pomocne i staram się o nich pamiętać. W przypadku weryfikacji krzyżowej i porównania dwóch modeli, dla aktualnych zestawów danych, korzystając z różnych parametrów, mogę stwierdzić, który algorytm działa lepiej i tak dalej. Problem polega na tym, że żaden z tych zestawów danych nie może reprezentować rzeczywistych danych (danych przesyłanych strumieniowo) i dlatego pomyślałem, że lepiej poprosić innych w dziedzinie analizy danych i uczenia maszynowego o podzielenie się swoimi przemyśleniami i doświadczeniami.
ahajib
Ale jeśli masz dane przesyłane strumieniowo, możesz przekształcić je w dane testowe, zapisując strumień. Zaletą szeregów czasowych jest to, że zawsze możesz utworzyć zestaw danych testowych z dowolnego zestawu danych. Musisz tylko zapisać niektóre dane, a następnie cofnąć czas.
AN6U5,
Wiem, że jest to trochę stare, ale muszę się z tym nie zgodzić. Parametry d, D służą do różnicowania, jak mówi @ AN6U5, ale powodem tych różnic jest przede wszystkim wymuszenie stacjonarności na problem. W rzeczywistości jedna interpretacja modelu ARIMA jest taka, że ​​jest to po prostu regresja liniowa z terminami wymuszającymi stacjonarność w szeregach czasowych.
Ryan
6

Dodanie do odpowiedzi @ AN6U5.

Z czysto teoretycznego punktu widzenia niniejszy artykuł pokazuje, że RNN są uniwersalnymi aproksymatorami. Nie przeczytałem tego artykułu szczegółowo, więc nie wiem, czy dowód można zastosować również do LSTM, ale podejrzewam, że tak. Największy problem z RNN ogólnie (w tym LSTM) polega na tym, że są one trudne do trenowania z powodu eksploracji gradientów i problemu znikania gradientów. Praktyczny limit dla LSTM wydaje się wynosić około 200 ~ kroków przy standardowym spadku gradientu i losowej inicjalizacji. Jak już wspomniano, ogólnie rzecz biorąc, aby każdy model głębokiego uczenia działał dobrze, potrzebujesz dużej ilości danych i stosów dostrajania.

Model ARIMA jest bardziej ograniczony. Jeśli twój podstawowy system jest zbyt złożony, po prostu niemożliwe jest dobre dopasowanie. Ale z drugiej strony, jeśli podstawowy model jest wystarczająco prosty, jest znacznie wydajniejszy niż podejście do głębokiego uczenia się.

Louis T.
źródło
2

Modele ARIMA są liniowe, a modele LSTM są nieliniowe. Niektóre inne parametryczne nieliniowe modele szeregów czasowych, które badali statystycy, to progowe modele autoregresyjne (TAR) i modele łagodnego przejścia autoregresyjnego (STAR). Pakiet R tsDyn implementuje te modele.

Zastanawiam się, jak radzą sobie modele STAR w porównaniu z LSTM.

Fortranner
źródło
2

Doszedłem do tego samego wniosku, co ty i inni, tradycyjne prognozowanie jest nadal prawdopodobnie najbardziej odpowiednie i być może niezawodne dla szeregów czasowych wartości liczbowych. W głębokim uczeniu się pojawia się niewielki zastój, w którym szeregi czasowe dla wartości liczbowych mieszają się z głębokim uczeniem się, gdzie głębokie uczenie się (obecnie) dotyczy współczesnych wyzwań w rozpoznawaniu wzorców w zakresie wykrywania obrazu, dźwięku, czystego tekstu lub wykrywania anomalii. Często mam dobre wyniki z VAR / VECM dla codziennych danych transakcyjnych, które prawdopodobnie mogłyby być zastosowane w przypadku użycia przetwarzania sygnału.

Starbucks
źródło
1

W skrajnym przypadku miałem okazję studiować prognozę Forex (kurs walutowy) i intensywnie porównywać wyniki LSTM, okienkowanego MLP i ARIMA. Jak mówi wiele artykułów, szereg czasowy Forex jest zbliżony do szeregu losowych spacerów (jest całkowicie niestacjonarny). Żaden z tych algorytmów nie jest w stanie przewidzieć stawki spot na następny dzień. Na przykład, jeśli nie ma (lub jest niewielka) zmiana, wówczas zachowa aktualną wartość i będzie wyglądać dobrze. Jeśli jednak nastąpi nagła (znaczna) zmiana jutrzejszego kursu kasowego, to zawsze nie można przewidzieć. Problem polega na tym, że na podstawie danych szkoleniowych (np. Historii kursów spotowych z ostatnich 10 lat) nie trzeba się uczyć, czy jest wystarczająco duża, czy nie, ponieważ jest całkowicie losowa (być może z powodu sentymentów dealerów giełdowych ...) .

W rzeczywistości LSTM z opóźnieniem „1” lub ARIMA z (1,0,0) będzie działać najlepiej, ponieważ przechowywanie danych z więcej niż 1 opóźnieniem wcale nie pomaga. W przypadku tego rodzaju szeregów czasowych powiedziałbym, że pod względem wydajności śledzenia 1) ARIMA, 2) LSTM, 3) MLP. Ostatni komentarz ... MLP z parametrami makro / mikro ekonomicznymi (powiedzmy różnicą PKB, stopami obligacji, ceną ropy naftowej, indeksem dolara itp.), Ponieważ dodatkowe funkcje w ogóle nie działały.

East Chun
źródło