Jak zastosować sieć neuronową do prognozowania szeregów czasowych?

83

Jestem nowy w uczeniu maszynowym i starałem się dowiedzieć, jak zastosować sieć neuronową do prognozowania szeregów czasowych. Znalazłem zasoby związane z moim zapytaniem, ale nadal wydaje mi się, że jestem trochę zagubiony. Myślę, że podstawowe wyjaśnienie bez zbyt wielu szczegółów pomogłoby.

Powiedzmy, że mam kilka cen na każdy miesiąc w ciągu kilku lat i chcę przewidzieć nowe wartości cen. Mogłem uzyskać listę cen z ostatnich kilku miesięcy, a następnie spróbować znaleźć podobne trendy w przeszłości za pomocą K-Nearest-Neighbor. Mógłbym wykorzystać tempo zmian lub inną właściwość poprzednich trendów, aby spróbować przewidzieć nowe ceny. W jaki sposób mogę zastosować sieć neuronową do tego samego problemu, próbuję się dowiedzieć.

solartyczny
źródło
1
Przewidywanie za pomocą sieci neuronowych i wcześniejsze zastosowanie Bayera w wątku Właściwy sposób korzystania z rekurencyjnej sieci neuronowej do analizy szeregów czasowych pomógł poprawić moje zrozumienie.
solartyczny
@solartic, po prostu ciekawy, czy udało Ci się wdrożyć tę metodę?
Saggy Manatee And Swan Folk

Odpowiedzi:

102

Oto prosty przepis, który może pomóc Ci zacząć pisać kod i testować pomysły ...

Załóżmy, że masz miesięczne dane rejestrowane przez kilka lat, więc masz 36 wartości. Załóżmy również, że zależy ci na przewidywaniu z wyprzedzeniem tylko jednego miesiąca (wartości).

  1. Eksploracyjna analiza danych: Zastosuj niektóre tradycyjne metody analizy szeregów czasowych, aby oszacować zależność opóźnień w danych (np. Wykresy autokorelacji i wykresy częściowej autokorelacji, transformacje, różnicowanie). Powiedzmy, że wartość danego miesiąca jest skorelowana z danymi z ostatnich trzech miesięcy, ale niewiele więcej.
  2. Podziel dane na zestawy treningowe i walidacyjne: weź pierwsze 24 punkty jako wartości treningowe, a pozostałe punkty jako zestaw walidacyjny.
  3. Utwórz układ sieci neuronowej: weźmiesz wartości z ostatnich trzech miesięcy jako dane wejściowe i chcesz przewidzieć wartość z następnego miesiąca. Potrzebujesz sieci neuronowej z warstwą wejściową zawierającą trzy węzły i warstwą wyjściową zawierającą jeden węzeł. Prawdopodobnie powinieneś mieć ukrytą warstwę z co najmniej kilkoma węzłami. Niestety, wybranie liczby ukrytych warstw i ich odpowiedniej liczby węzłów nie jest czymś, dla czego istnieją jasne wytyczne. Zaczynam od małych, jak 3: 2: 1.
  4. Utwórz wzorce treningowe: Każdy wzorzec treningowy będzie miał cztery wartości, przy czym pierwsze trzy będą odpowiadały węzłom wejściowym, a ostatnia określi prawidłową wartość dla węzła wyjściowego. Na przykład, jeśli twoje dane treningowe to wartości a następnie
    x1,x2),x24
    pzattmirn1:x1,x2),x3),x4
    pzattmirn2):x2),x3),x4,x5
    pzattmirn21:x21,x22,x23,x24
  5. Trenuj sieć neuronową na tych wzorcach
  6. Przetestuj sieć na zestawie sprawdzania poprawności (miesiące 25-36): Tutaj przekażesz trzy wartości, których potrzebuje sieć neuronowa dla warstwy wejściowej i zobaczysz, do czego ustawiony jest węzeł wyjściowy. Tak więc, aby zobaczyć, jak dobrze wyszkolona sieć neuronowa może przewidzieć wartość miesiąca 32, przekażesz wartości dla miesięcy 29, 30 i 31

Ten przepis jest oczywiście na wysokim poziomie i na początku możesz podrapać się w głowę, próbując zmapować swój kontekst w różnych bibliotekach / programach. Ale mam nadzieję, że to nakreśla główny punkt: musisz stworzyć wzorce treningowe, które rozsądnie zawierają strukturę korelacji serii, którą próbujesz przewidzieć. Niezależnie od tego, czy wykonujesz prognozowanie za pomocą sieci neuronowej, czy modelu ARIMA, prace eksploracyjne mające na celu ustalenie, czym jest ta struktura, są często najbardziej czasochłonne i trudne.

Z mojego doświadczenia wynika, że ​​sieci neuronowe mogą zapewnić doskonałą funkcjonalność klasyfikacji i prognozowania, ale ich konfiguracja może być czasochłonna. W powyższym przykładzie może się okazać, że 21 wzorców treningowych nie wystarczy; różne transformacje danych wejściowych prowadzą do lepszych / gorszych prognoz; zmiana liczby ukrytych warstw i ukrytych węzłów warstw ma duży wpływ na prognozy; itp.

Bardzo polecam zajrzeć na stronę neural_forecasting , która zawiera mnóstwo informacji na temat konkursów prognozowania sieci neuronowej. Strona Motywacje jest szczególnie przydatna.

Josh Hemann
źródło
12
+1 do tej odpowiedzi, ale także dodając, że nawet jeśli ostatnie 3 miesiące są jedynymi, które korelują z odpowiedzią, mogą również istnieć czynniki takie jak ten sam miesiąc w ciągu ostatnich 5 poprzednich lat, które są użytecznymi danymi wejściowymi ( np. jeśli Decembers zwykle wyglądają jak poprzednie Decembers).
rossdavidh
1
Świetna odpowiedź. Uważam to za bardzo pomocne. Wyjaśnienie na wysokim poziomie jest dokładnie tym, czego chciałem. @rossdavidh: Dobry punkt +1.
solartyczny
2
Byłoby wspaniale uzyskać tutaj przykładowe kody.
Léo Léopold Hertz -
1
Interesującą rzeczą byłby wielowymiarowy zestaw danych szeregów czasowych wraz z regresorami ..
Tommaso Guerrini
1
Czy ktoś zna jakiś papier z aplikacją do prawdziwych danych i porównanie z „tradycyjną” metodą szeregów czasowych?
Marco Fumagalli