Chciałbym użyć ANN do automatyzacji walut handlowych, najlepiej USD / EUR lub USD / GBP. Wiem, że jest to trudne i może nie być proste. Przeczytałem już kilka artykułów i przeprowadziłem eksperymenty, ale bez większego szczęścia. Chciałbym uzyskać poradę od EKSPERTÓW, aby to zadziałało.
Oto co dotychczas zrobiłem:
- Mam dane tyknięcia według miesiąca lipca 2013. Ma licytację / zapytaj / wielkość licytacji / ilość zapytań.
- Wyodrębniono wszystkie tiki w przedziale czasowym od 12 do 14 dla wszystkich dni.
- Na podstawie tych danych utworzono zestaw danych, w którym każdy wpis składa się z n wartości wartości w kolejności.
- Wykorzystano te dane do wyszkolenia ANN z wejściami n-1, a wynikiem jest prognozowana n-ta wartość oferty.
- ANN miał n-1 neuronów wejściowych, (n-1) * 2 + 1 ukryty i 1 neuron wyjściowy. Warstwa wejściowa miała liniowy TF, ukryty miał log TF, a wyjściowy liniowy TF.
- Przeszkoliłem sieć z propagacją wsteczną najpierw z n-125, a następnie 10.
W obu przypadkach MSE nie spadło poniżej 0,5 i pozostało na tej wartości podczas pełnego treningu. Zakładając, że może to być spowodowane tym, że szeregi czasowe są całkowicie losowe, użyłem pakietu R, aby znaleźć częściową autokorelację w zbiorze danych (pacf). Dało to niezerowe wartości tylko dla 2 i 3 opóźnień.
Pytanie 1: Co to dokładnie znaczy?
Następnie użyłem wykładnika Hurst do oceny losowości. W R hurst (wartości) pokazał wartości powyżej 0,9.
Pytanie 2: To ma być prawie losowe. Czy powinna mieć wartość bliższą 0,5?
Powtórzyłem trening ANN przy n = 3. ANN został przeszkolony i był w stanie uzyskać dość niską wartość dla MSE. Jednak obliczona wydajność z tego ANN nie różni się znacznie od (n-1) wartości oferty. Wygląda na to, że ANN bierze ostatnią ofertę jako następną! Próbowałem różnych struktur sieciowych (wszystkie percepcje wielowarstwowe), różnych parametrów szkolenia itp., Ale wyniki są takie same.
Pytanie 3: Jak mogę poprawić dokładność? Czy istnieją inne metody szkolenia niż propagacja wsteczna?
źródło
Odpowiedzi:
Wyniki, które widzisz, nie są produktem ubocznym twojego produktu treningowego, ale raczej
neural nets
nie są doskonałym wyborem do tego zadania.Neural nets
są skutecznie środkiem do tworzenia nieliniowej funkcji wysokiego rzędu poprzez skomponowanie szeregu prostszych funkcji. Jest to często bardzo dobra rzecz, ponieważ pozwala sieci neuronowej dopasowywać bardzo złożone wzory.Jednak na giełdzie każdy skomplikowany wzór szybko się rozpadnie. Wykrywanie skomplikowanego wzoru na ogół nie generuje użytecznych wyników, ponieważ zazwyczaj są to złożone wzorce w krótkim okresie. Ponadto, w zależności od wybranej metryki, istnieje wiele sposobów na uzyskanie dobrych wyników, które w rzeczywistości się nie opłacą (np. Przewidywanie ostatniej wartości w twoim przykładzie).
Ponadto giełda jest zaskakująco chaotyczna, co może prowadzić do
neural net
przeregulowania. Oznacza to, że wzorce, których się uczy, będą słabo uogólnione. Coś w stylu obserwowania spadku zapasów w ciągu dnia i jednolitego decydowania, że zapasy zawsze będą spadać tylko dlatego, że zaobserwowano je w stosunkowo krótkim okresie. Zamiast tego techniki takie jakridge
irobust regression
, które będą identyfikować bardziej ogólne, mniej złożone wzorce, działają lepiej.Zwycięzca podobnej konkurencji Kaggle zastosowanej
robust regression
z tego właśnie powodu. Prawdopodobnie zobaczysz lepsze wyniki, jeśli przełączysz się na płytki model uczenia się, który znajdzie funkcje niższego rzędu wielomianów, nad głębokimi złożonymi funkcjami sieci neuronowej.źródło
Wypróbuj rekurencyjną sieć neuronową, model dobrze dostosowany do danych szeregów czasowych. Są niezwykle trudne do wyszkolenia, ale wydają się osiągać dobre wyniki, jeśli są odpowiednio trenowane: http://cs229.stanford.edu/proj2012/BernalFokPidaparthi-FinancialMarketTimeSeriesPredictionwithRecurrentNeural.pdf
źródło