Chciałbym wiedzieć, czy istnieje kod do trenowania splotowej sieci neuronowej do przeprowadzania klasyfikacji szeregów czasowych.
Widziałem kilka ostatnich artykułów ( http://www.fer.unizg.hr/_download/repository/KDI-Djalto.pdf ), ale nie jestem pewien, czy coś istnieje lub czy sam to koduję.
Odpowiedzi:
Jeśli potrzebujesz rozwiązania czarnej skrzynki typu open source, spróbuj spojrzeć na Weka , bibliotekę algorytmów ML. Ten facet używał również warstw kowalencyjnych w Wece i możesz edytować jego kod klasyfikacyjny, aby dopasować go do zadania klasyfikacji szeregów czasowych.
Co do kodowania własnego ... Pracuję nad tym samym problemem przy użyciu biblioteki Pythona, theano (zmodyfikuję ten post z linkiem do mojego kodu, jeśli wkrótce go złamie ). Oto pełna lista wszystkich artykułów, których będę używać, aby pomóc mi w dobrej godzinie przeszukiwania sieci:
Na początek możesz edytować znaleziony tutaj kod , aby sklasyfikować go według innej liczby kategorii lub edytować od klasyfikacji do regresji - zrobiłem to, usuwając ostatnią warstwę softmax i tworząc tylko jeden węzeł wyjściowy. Ćwiczyłem go na plasterkach funkcji takiej
y=sin(x)
jak test.źródło
Jest całkowicie możliwe użycie CNN do prognozowania szeregów czasowych, czy to regresji, czy klasyfikacji. Sieci CNN są dobre w znajdowaniu wzorców lokalnych, aw rzeczywistości CNN działają przy założeniu, że wzorce lokalne są istotne wszędzie. Również splot jest dobrze znaną operacją w szeregach czasowych i przetwarzaniu sygnałów. Kolejną zaletą w stosunku do RNN jest to, że mogą być bardzo szybkie w obliczeniach, ponieważ można je zrównoleglać w przeciwieństwie do sekwencyjnego charakteru RNN.
W poniższym kodzie pokażę studium przypadku, w którym można przewidzieć zapotrzebowanie na energię elektryczną w R za pomocą keras. Zauważ, że to nie jest problem z klasyfikacją (nie miałem przydatnego przykładu), ale modyfikacja kodu w celu obsługi problemu z klasyfikacją nie jest trudna (użyj wyjścia softmax zamiast wyjścia liniowego i utraty entropii krzyżowej).
Zestaw danych jest dostępny w bibliotece fpp2:
Następnie tworzymy generator danych. Służy to do tworzenia partii danych szkoleniowych i walidacyjnych, które będą wykorzystywane podczas procesu szkoleniowego. Zauważ, że ten kod jest prostszą wersją generatora danych, znalezionego w książce „Deep Learning with R” (i jego wersji wideo „Deep Learning with R in Motion”) z publikacji manning.
Następnie określamy niektóre parametry, które mają zostać przekazane do naszych generatorów danych (tworzymy dwa generatory, jeden do szkolenia, a drugi do sprawdzania poprawności).
Parametrem retrospekcji jest to, jak daleko w przeszłości chcemy spojrzeć, a wstecz, jak daleko w przyszłości chcemy przewidzieć.
Następnie podzieliliśmy nasz zestaw danych i utworzyliśmy dwa generatory:
train_dm <- dm [1: 15000,]
Następnie tworzymy sieć neuronową z warstwą splotową i trenujemy model:
Na koniec możemy stworzyć kod, aby przewidzieć sekwencję 24 punktów danych za pomocą prostej procedury opisanej w komentarzach R.
i voila:
Nieźle.
źródło