Przewidywanie cen złota przy pomocy sieci neuronowej RNN ( LSTM )

1. Pobieranie cen złota w formacie JSON - NBP Web API

Serwis api.nbp.pl udostępnia publiczne Web API, które umożliwia klientom HTTP dokonywanie zapytań w zbiorach danych publikowanych przez serwis NBP.PL.

Źródło to ma jednak swoje wady. Jedna z nich jest brak danych z sobót i niedziel ale nie jest to problem uniemożliwiający wykorzystanie tych danych. Następnym problemem jest możliwość pobrania danych w jednym zapytaniu tylko z zakresu 366 dni. Problem ten można jednak łatwo rozwiązać pobierając dane w kilku zapytaniach.

Więcej na: http://api.nbp.pl/

Dane cen złota
Dane cen złota

2. Przygotowanie danych

Przy uczeniu sieci neuronowych dane należy odpowiednio oczyścić i przygotować. W przypadku wybranego sposobu uczenia postanowiłem wybrać oczyszczenie poprzez obliczenie wartości SMA.

Okno danych

Model w tym przykładzie utworzy zestaw predykcji na podstawie okna kolejnych próbek zawierających dane. W naszym przypadku jest to 5 wartości uczących oraz jeden konkretny wynik.

Główne cechy okien wprowadzania to:

  • Szerokość (liczba kroków czasowych) okien wprowadzania i etykiet.
  • Przesunięcie czasowe między nimi.

Prosta średnia krocząca

Ponieważ dane mogą zawierać różnego rodzaju anomalie, musimy je ujednolicić, aby pokazywały nam kierunek trendu. Jednym ze sposobów przygotowania treningowego zestawu danych jest wyodrębnienie prostej średniej kroczącej (SMA) z danych szeregów czasowych.

Wykres danych z podziałem na dane do uczenia oraz z naniesionymi wartościami sma
Wykres danych z podziałem na dane do uczenia oraz z naniesionymi wartościami sma
Przykład wartości sma dla mniejszej próbki danych
Przykład wartości sma dla mniejszej próbki danych

3. Trenowanie sieci neuronowej

Trenowanie modelu oznacza po prostu uczenie się dobrych wartości dla wszystkich wag i stronniczości na podstawie oznaczonych przykładów. W uczeniu nadzorowanym algorytm uczenia maszynowego buduje model, analizując wiele przykładów i próbując znaleźć model, który minimalizuje straty; proces ten nazywa się empiryczną minimalizacją ryzyka.

Proces uczenia sieci
Proces uczenia sieci

Strata (Loss) to liczba, która wskazuje, jak złe były prognozy modelu na pojedynczym przykładzie. Jeśli prognoza modelu jest doskonała, strata wynosi zero; w przeciwnym razie strata jest większa. Celem uczenia modelu jest znalezienie zestawu wag i błędów systematycznych, które mają średnio niską stratę we wszystkich przykładach.

Utrata walidacji (Validation Loss) to liczba wskazująca, jak złe były prognozy modelu dotyczące danych walidacyjnych.

Predykcja czyli przewidywanie

Poniżej przedstawiam wynik uczenia sieci. Wartość przewidywana jest bardzo bliska rzeczywistej. Otrzymanie idealnego wyniku jest praktycznie niemożliwe do osiągnięcia. Dzieje się tak dlatego iż na prawdziwy wynik składają się różne nieprzewidywalne czynniki. Dodatkowo wykorzystanie SMA pozwala nam tylko na określenie trendu a nie na konkretny wynik.

Wyniki uczenia sieci
Wyniki uczenia sieci