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/
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.
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.
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.