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