sieci neuronowe, data mining
Transkrypt
sieci neuronowe, data mining
Sieci neuronowe - dokumentacja projektu Predykcja finansowa, modelowanie wskaźnika kursu spółki KGHM. Piotr Jakubas Artur Kosztyła Marcin Krzych Kraków 2009 Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych 1. Sieci neuronowe - dokumentacja projektu .......................................... 1 1. Część teoretyczna .............................................................................. 3 1. Cel projektu .................................................................................... 3 2. Podobne projekty............................................................................. 3 3. Dane wejściowe............................................................................... 3 4. Prototypowanie ............................................................................... 3 5. Algorytm ........................................................................................ 5 6. Wnioski .......................................................................................... 6 2. Część praktyczna................................................................................ 7 1. Wykorzystane narzędzia i biblioteki .................................................... 7 Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych Część teoretyczna Cel projektu Celem projektu było stworzenie narzędzia do predykcji kursów akcji spółki KGHM notowanej na Giełdzie Papierów Wartościowych w Warszawie. Narzędzie z założenia miało być oparte na sztucznych sieciach neuronowych. Narzędzie nie ma przewidywać dokładnego kursu indeksu, lecz pomagać inwestorowi w zajęciu odpowiedniej pozycji (krótkiej, długiej, bez zmian) dla danej sesji giełdowej. Podobne projekty W trakcie analizy możliwości realizacji projektu natrafiliśmy na kilka ciekawych artykułów 1 opisujących podobne problemy. Najciekawszym okazał się artykuł doktoranta AGH, jednak był ukierunkowany na nieco inny cel. Dane wejściowe Do realizacji zadania przystąpiliśmy analizując dostępne w internecie dane. Staraliśmy się wyodrębnić te najbardziej znaczące i wpływające na kurs spółki czynniki (kursy surowców, kursy indeksów giełdowych z USA, Chin), a także te teoretycznie nie znaczące (parametry pogody). Do zebrania danych napisaliśmy skrypty w Bash'u i wykorzystaliśmy moduł Zend_Http frameworka Zend. Dane zebraliśmy z różnych źródeł internetowych, m.in. • http://finance.yahoo.com • http://gielda.gazeta.pl • http://www.money.pl • http://www.tutiempo.net/en/Climate/ - pogoda • http://www.kitco.com/ - srebro • http://www.metalsmarket.net/daily.php - miedź Prototypowanie Przed przystąpieniem do budowy ostatecznej wersji sieci, stworzyliśmy wiele prototypów, które okazywały się bardziej lub mniej użyteczne. Budowa sieci neuronowej rozwiązującej podany problem jest zadaniem wysoce skomplikowanym. Wybranie najlepszych parametrów dla sieci jest zadaniem polioptymalizacyjnym. Dla przykładu: zmiana tylko jednego parametru (Delay) z wartości 5 na 4 skutkowała znaczącą poprawą i zmiejszeniem błędu podczas uczenia sieci (wykresy poniżej). 1. http://bossa.pl/analizy/techniczna/elementarz/sieci_neuronowe/ Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych Poniżej znajduje się zestawienie wykresów z parametrem delay równym 4 i 3. Można zauważyć, że poprawa nauki nie jest już tak znacząca jak w przypadku powyżej. Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych Przykład powyżej pokazuje, że zadanie znalezienia odpowiedniej struktury sieci i wyodrębnienia odpowiednich danych wejściowych nie jest zadaniem trywialnym. Prototyp sieci opracowywano na różnych zbiorach danych. Obserwacja jaką uczyniono, jest taka, że przy analize całości danych (od 1997 roku) sieć uczy się lepiej i popełnia około 2 razy mniejszy błąd niż przy nauce na danych tylko z 2008 roku. Algorytm 2 Do realizacji algorytmu predykcji wykorzystaliśmy narzędzie JOONE , dzięki kilku powodom: • sieć mogła powstać w rozsądnie krótkim czasie, • mogliśmy sprawdzić i przetestować wiele sieci i wybrać tą najbardziej odpowiednią, • swoje wysiłki skupiliśmy maksymalnie na postawionym problemie, a nie technologii jego rozwiązania • jest darmowe Do budowy odpowiedniej struktury sieci wykorzystywaliśmy dane z od 1997 roku (od początku historii notowań spółki KGHM). Sieć posiada: • 13 neuronów wejściowych • 2 warstwy ukryte • 1 neuron wyjściowy Do warstwy wejściowej sieci, podajemy następujące dane dla danego dnia: • n ostatnich kursów spółki KGHM • kursy fixingowe miedzi z London Metal Exchange 2. http://www.jooneworld.com/ Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych • n ostatnich kursów otwarcia i zamknięcia indeksu WIG20 • minimalne i maksymalne kursy indeksu WIG20 Nauczyciel dostaje również rzeczywiste kursy spółki KGHM, celem walidacji otrzymanych rezultatów. Liczbę n wyznaczyliśmy doświadczalnie, na podstawie obserwacji skuteczności uczenia się sieci. Sieć najlepiej uczy się dla n=4. Neurony wejściowe wymagają danych z przedziału [0,1] dlatego wymagana jest normalizacja danych wejściowych i ich denormalizacja przed wyświetleniem na wykresie czy wpisaniu do pliku. Bloki delay są odpowiedzialne za dostarczenie neuronom zbioru danych o mocy n. Dzięki temu neuron dostaje dane na przykład kursu spółki KGHM z n ostatnich dni. Sprawdziliśmy również dane: • pogodowe (temperatura, ciśnienie, wilgotność) w Londynie i Minquin (Chiny) • ilość newsów z nytimes.com • kursy fixingowe srebra Powyższe dane nie poprawiały błędu uczenia się sieci neuronowej. Wpływały destrukcyjnie na wyniki. Najmniejszy błąd podczas nauki sieci wynosił 0.011. Niestety nawet tak niski błąd w trakcie nauki, powodował, że przy sprawdzaniu możliwości sieci, sieć ta nie dawała spodziewanych wyników. Wniosek: sieć nie została nauczona rozpoznawać trendy, mimo że błąd uczenia był mały. Wnioski Wybrane narzędzie JOONE pokazało nam, że ma duży potencjał, lecz wymaga jeszcze dużej ilości pracy, aby stało się narzędziem intuicyjnym, wygodnym i przyjaznym użytkownikowi. Z powodu samoistnych zmian parametrów niektórych bloków, proces tworzenia odpowiedniej struktury sieci zajął więcej czasu niż powienien. Osiągnięte wyniki nie są dla nas satysfakcjonujące. Stworzone przez nas sieci nie były w stanie poradzić sobie z dokładną predykcją kursów, prawdopodobnie z następujących powodów (jednego lub wielu): • brak istotnej korelacji między wskaźnikami pogody, ilością newsów na nytimes.com czy kursem srebra, a kursem KGHMu zakłocał uczenie się sieci, wprowadzając zbędny zamęt, • GPW jest małą giełdą, dodatkowo mało stabilną, silnie zależną od wyników najważniejszych giełd światowych, • w 2008 roku dał się we znaki ogromny kryzys, który duże odzwierciedlenie miał m.in. w kursach indeksów giełdowych całego świata, nasza sieć nie miała dostępu do informacji na temat kryzysu poza informacjami opisanymi w sekcji "Dane wejściowe" • predykcja kursów jest zadaniem skomplikowanym i wielu naukowców próbowało rozwiązać przedstawiony problem • wybrana przez nas struktura sieci nie była odpowiednia dla tego zagadnienia i sieć niepoprawnie klasyfikowała podane jej dane • KGHM jest spółką z udziałem kapitału Skarbu Państwa, powoduje to częściowe upolitycznienie firmy i wpływu na jej decyzje strategiczne i taktyczne, które Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych wpływają potem odpowienio na kurs akcji. Stworzona przez nas sieć nie zna realiów polskiej polityki, dlatego nie mogła uwzględniać zdarzeń politycznych. Mimo iż nie znaleźliśmy sposobu na dokładną predykcję kursu spółki KGHM, przetestowaliśmy wiele konfiguracji sieci i danych wejściowych, które nie dają pożądanych wyników, dzięki temu można wykluczyć je z dalszych badań naukowych. Część praktyczna Wykorzystane narzędzia i biblioteki W naszym projekcie wykorzystaliśmy poniższe narzędzia: • Faza zbierania danych ◦ skrypty Bash'a do pobrania danych z finance.yahoo.com, gielda.gazeta.pl, itp ◦ Zend_Http do pobierania danych nt cen surowców, pogody itp ◦ skrypty PHP do parsowania i formatowania danych • Faza badania narzędzi ◦ Statistica ▪ niestety nie udało nam się "dogadać" ze statisticą ◦ JOONE, http://www.jooneworld.com/ • Faza prototypowania i tworzenia sieci neuronowej ◦ JOONE Sztuczne sieci neuronowe 2009 - Predykcja wskaźników finansowych