Prognozowanie szeregów czasowych za pomocą TensorFlow: komponenty, modele i kroki

Opublikowany: 2021-05-02

Spis treści

Co to jest prognozowanie szeregów czasowych?

Czy wiesz, że region Azji i Pacyfiku jest największym na świecie rozwijającym się rynkiem głębokiego uczenia się, którego CAGR (złożony roczny wskaźnik wzrostu) wynosi ponad 40%? Przewidywanie szeregów czasowych TensorFlow jest ważną koncepcją w głębokim uczeniu się i ML. Wszystkie modele głębokiego uczenia/ML mają odpowiedni zestaw danych, który jest zbiorem obserwacji. Obserwacje te często zawierają składnik czasu. Szeregi czasowe porządkują obserwacje sekwencyjnie w czasie, dodając w ten sposób nowy wymiar do zbioru danych, tj. czas.

Można się zastanowić, co można osiągnąć zwiększając wymiarowość ich zbioru danych? Cóż, dodanie wymiaru czasowego do zestawu danych stworzy szczegółowy poziom zależności między obserwacjami. Wynik jest następnie przewidywany za pomocą prognozowania szeregów czasowych wcześniejszych obserwacji.

Wykorzystanie danych szeregów czasowych (danych historycznych) do przewidywania przyszłości nazywa się prognozowaniem szeregów czasowych. Należy też zadbać o to, aby przyszłość była zupełnie nieznana i można ją było przewidzieć jedynie na podstawie danych historycznych.

Dane szeregów czasowych są analizowane w celu opracowania modeli, które efektywnie opisują dane. Szeregi czasowe są rozłożone na kilka komponentów do tworzenia modeli apt. Po opracowaniu modeli, które najlepiej opisują dane historyczne, są one wykorzystywane do prognozowania. Nie należy mylić analizy szeregów czasowych z prognozowaniem szeregów czasowych, ponieważ ta druga zaczyna działać dopiero po zakończeniu tego pierwszego.

Komponenty szeregów czasowych

Zanim zaznajomimy się z prognozowaniem szeregów czasowych TensorFlow , należy zapoznać się ze składnikiem szeregów czasowych. Szereg czasowy jest rozkładany na cztery składniki podczas analizy szeregów czasowych. Te składniki pomagają w prawidłowym zrozumieniu zestawu danych. Cztery składniki szeregu czasowego są następujące:

  • Trendy — zachowanie serii/zestawu danych w czasie można wyjaśnić trendami. Rosnące i malejące zachowanie szeregu czasowego jest wyjaśnione przez trendy.
  • Poziom – Poziom jest wartością bazową szeregu czasowego, biorąc pod uwagę, że przedstawienie szeregu jest linią prostą. Wielu ekspertów określa również poziom jako średnią wartość serii.
  • Sezonowość — zachowania serii, które powtarzają się w czasie, nazywane są sezonowością. Niektórzy eksperci określają również sezonowość jako okresowe wahania.
  • Szum — każdy zestaw danych zawiera pewne punkty danych/wartości odstające, których model szeregów czasowych nie może wyjaśnić. Te zestawy danych mają nieprzewidywalne właściwości i nie można ich mapować za pomocą analizy/prognozowania szeregów czasowych.

Należy zauważyć, że szereg czasowy musi mieć poziom i trochę szumu. Jednak trendy i sezonowość w szeregach czasowych są opcjonalne.

Dlaczego TensorFlow?

Chociaż na rynku dostępnych jest wiele frameworków do prognozowania szeregów czasowych, specjaliści od zaawansowanych technologii preferują TensorFlow spośród wszystkich dostępnych frameworków. TensorFlow jest napisany w Pythonie, C++ i CUDA, które należą do powszechnie używanych języków programowania. TensorFlow to biblioteka oprogramowania typu open source zaprojektowana specjalnie do uczenia maszynowego i uczenia głębokiego.

TensorFlow pomaga nam w budowaniu modeli ML podczas analizy szeregów czasowych, które będą wykorzystywane do prognozowania. Oferuje użytkownikom budowanie różnych typów modeli, takich jak CNN (Convolutional Neural Network), RNN (Recurrent Neural Network) itp. TensorFlow może pomóc w prognozowaniu pojedynczego kroku czasowego lub wielu w zależności od użytkownika i zestawu danych. Podczas prognozowania szeregów czasowych TensorFlow możesz:

  • Prognozuj pojedynczą cechę/wymiar dla pojedynczego kroku czasowego.
  • Prognozuj wszystkie wymiary zbioru danych dla jednego kroku czasowego.
  • Prognoza dla wielu kroków w jednym ujęciu (wykonywanie wszystkich prognoz jednocześnie).
  • Prognoza dla wielu etapów, w których na raz tworzona jest jedna prognoza (autoregresja).

Konfigurowanie danych do prognozowania szeregów czasowych

Przed prognozowaniem szeregów czasowych musimy odpowiednio przygotować dane. Konfiguracja prognozowania szeregów czasowych obejmuje różne procesy, takie jak ekstrakcja danych, wizualizacja, eksploracja , czyszczenie itp. Zobaczmy, jak skonfigurować dane do prognozowania szeregów czasowych:

  • Podstawowym krokiem jest zaimportowanie danych lub wyodrębnienie danych. Potrzebny jest zbiór danych, z którego będą wydobywane szczegółowe informacje za pomocą prognozowania szeregów czasowych.
  • Następnym krokiem jest czyszczenie danych, w którym usuwasz zduplikowane lub nieistotne punkty danych. Brakujące dane są również obsługiwane na tym etapie. Jeśli wcześniej wykryto jakieś odstające wartości, usuń je ze zbioru danych. Błędy strukturalne można również naprawić podczas czyszczenia danych.
  • Ilości w szeregu czasowym, które zmieniają się w czasie, określane są jako sygnały. Sygnały te reprezentują również różne zdarzenia fizyczne w szeregu czasowym. Na przykład, jeśli istnieje szereg czasowy opisów pogody dla dowolnej lokalizacji w różnych dniach, wówczas sygnałami będą zdarzenia fizyczne, takie jak temperatura, opady itp. Kontynuuj konwersję sygnałów w formacie sin cos.
  • Wraz z konwersją sygnałów do formatu sin cos, konwertuj czas i datę na sekundy. Gdy skończysz, wykreśl czas i funkcję sin cos.
  • Przed prognozowaniem i trenowaniem naszych danych podzielimy je na podstawie czasu w celu dalszego uproszczenia.
  • Dane mają być teraz znormalizowane przed treningiem. Najprostszym krokiem normalizacji danych jest odjęcie średniej zestawu danych od każdego punktu danych, a następnie podzielenie jej przez odchylenie standardowe.
  • Po zakończeniu normalizacji danych musisz sprawdzić stronniczość danych. Błąd danych definiuje się jako stan, w którym niektóre elementy zbioru danych są silnie reprezentowane w porównaniu z innymi elementami. Stronnicze dane skutkują niższą dokładnością wraz z wypaczoną analizą. Możesz wykreślić wykres skrzypiec, aby usunąć wszelkie uprzedzenia danych obecne w zestawie danych.

Okienkowanie danych

Pewnie się zastanawiasz, że przed prognozowaniem szeregów czasowych zaangażowanych jest wiele procesów. Cóż, młodzi entuzjaści technologii powinni wiedzieć, że przygotowanie danych jest kluczowym krokiem przed szkoleniem lub analizą danych. Okienkowanie danych to ostatni krok w konfiguracji danych do prognozowania szeregów czasowych TensorFlow . Okno danych pomaga w korzystaniu z danych z różnymi modelami bez żadnych obaw.

Na przykład, jeśli model przewiduje 1 godzinę w przyszłość, potrzebujesz 6-godzinnego okna danych historycznych, aby skutecznie prognozować. Okno danych historycznych jest określane jako „szerokość wejściowa”, podczas gdy przewidywane okno danych jest określane jako „przesunięcie” podczas okienkowania danych.

Zamówienie: najpopularniejsze projekty Tensorflow

Modele jednoetapowe TensorFlow

Jeśli masz najprostszy zbiór danych i prognozujesz tylko jeden krok w przyszłości, użyjesz modeli jednoetapowych TensorFlow. Na przykład, jeśli utworzyłeś okno danych zawierające „godziny”, to przewidujesz dla jednego kroku czasowego, co oznacza, że ​​przewidujesz jedną godzinę w przyszłości. Obiekt „WindowGenerator” jest tworzony w TensorFlow w celu tworzenia par jednoetapowych, tj. danych wejściowych i etykiet.

Sugeruje się również utworzenie modelu bazowego przed trenowaniem modelu. Stworzenie modelu bazowego pomoże Ci porównać początkowy model jednoetapowy z przyszłymi skomplikowanymi modelami. Na przykład, jeśli prognozujesz temperaturę na 1 godzinę w przyszłości, utwórz model bazowy, który jako prognozę zwraca bieżącą temperaturę (bez zmian).

Ponieważ temperatury zmieniają się powoli w czasie, możliwe jest, że po godzinie nie nastąpi zmiana temperatury. Należy pamiętać, że model podstawowy nie będzie skuteczny w przypadku przewidywania wielu kroków czasowych.

Innym przykładem tworzenia modelu z jednym krokiem czasowym przy użyciu TensorFlow jest wstawienie transformacji liniowej między danymi wejściowymi i wyjściowymi. Upewnij się, że dane wyjściowe zależą tylko od pojedynczego kroku czasowego, który ma być oceniany podczas tworzenia modelu liniowego przy użyciu TensorFlow. Model gęsty to kolejny jednoetapowy model tworzony za pomocą TensorFlow.

Konwolucyjne sieci neuronowe za pośrednictwem TensorFlow mogą być również wykorzystywane do przewidywania pojedynczego kroku czasowego. Warstwa konwolucji w TensorFlow przyjmie wiele kroków czasowych jako dane wejściowe do przewidywania kroku czasowego. RNN są również szeroko stosowane do prognozowania szeregów czasowych.

Wewnętrzny stan maszyny również przeskakuje z jednego kroku czasowego do drugiego, ponieważ RNNs przetwarza szereg czasowy krok po kroku (domyślnie). Prognozowanie szeregów czasowych TensorFlow za pośrednictwem RNN jest dobrym wyborem, ponieważ modele RNN mają tendencję do zapamiętywania długiej historii danych wejściowych (dane historyczne).

Modele wielostopniowe TensorFlow

W modelach wieloetapowych przewidywanie jest dokonywane w wielu krokach czasowych. W przeciwieństwie do modelu jednoetapowego model wieloetapowy przewiduje zakres przyszłych wartości przy użyciu danych historycznych. Modele wieloetapowe mogą jednocześnie przewidywać całe przyszłe szeregi czasowe za pomocą przewidywania pojedynczego strzału. Możesz także użyć predykcji autoregresyjnej, w której model wykonuje predykcję jednoetapową na raz. Wynik przewidywania jednoetapowego w przewidywaniu autoregresyjnym działa jako dane wejściowe dla przewidywania następnego kroku czasowego.

Wniosek

Przewidywanie szeregów czasowych TensorFlow zapewnia dokładne wyniki w porównaniu z innymi frameworkami. Omówiliśmy niektóre modele jednoetapowe (CNN, RNN, Dense itp.), które można wykorzystać do predykcji jednoetapowej za pośrednictwem TensorFlow.

Możesz również przewidzieć zakres przyszłych wartości, korzystając z modeli wieloetapowych. Należy również zauważyć, że przygotowanie danych jest kluczowym krokiem przed predykcją TensorFlow szeregów czasowych . Możesz dowiedzieć się więcej o przewidywaniu szeregów czasowych w DL (Deep Learning) i ML, decydując się na Advanced Certificate Program w DL i ML . Zacznij uczyć się prognozowania szeregów czasowych z TensorFlow!

Jakie są ograniczenia korzystania z TensorFlow?

Chociaż TensorFlow zmniejsza długość kodu, sprawia, że ​​kod jest również nieco złożony. W porównaniu do swoich konkurentów TensorFlow jest powolny, a także mniej użyteczny. TensorFlow jest w tyle, jeśli chodzi o oferowanie symbolicznych pętli dla nieokreślonych sekwencji. TensorFlow obsługuje tylko GPU NVIDIA i obsługę programowania GPU w Pythonie. Nie ma innych form wsparcia. Nie ma wielu zalet dla użytkowników systemu operacyjnego Windows.

Amplituda nieciągłości na granicach każdej skończonej sekwencji zarejestrowanej przez digitizer jest redukowana przez okienkowanie. System okienkowy pozwala wielu aplikacjom na równoczesne współdzielenie graficznego ekranu komputera i zasobów prezentacji. Możesz chcieć korzystać z wielu aplikacji jednocześnie na komputerze z graficznym interfejsem użytkownika (GUI).

Czy trudno jest nauczyć się TensorFlow?

Dla niektórych TensorFlow jest łatwy, a niektórzy uważają, że trudno go nauczyć. Jeśli znasz już różne języki programowania i znasz różne techniki uczenia maszynowego, to nauka TensorFlow będzie dla Ciebie łatwa. Jednak poziom trudności zależy również od twoich zainteresowań. Jeśli naprawdę interesujesz się TensorFlow, poznanie go nie będzie trudnym zadaniem.