Czy ktoś próbował przewidywać szeregi czasowe przy użyciu regresji wektorów pomocniczych?
Rozumiem maszyny wektorów pomocniczych i częściowo rozumiem regresję wektorów pomocniczych, ale nie rozumiem, jak można ich użyć do modelowania szeregów czasowych, zwłaszcza szeregów czasowych na wielu odmianach.
Próbowałem przeczytać kilka artykułów, ale są one na zbyt wysokim poziomie. Czy ktoś może wyjaśnić w sposób laicki, jak by działał, szczególnie w odniesieniu do wielowymiarowych szeregów czasowych?
EDYCJA: Aby trochę rozwinąć, pozwól mi wyjaśnić na przykładzie ceny akcji.
Powiedzmy, że mamy ceny akcji na N dni. Następnie dla każdego dnia moglibyśmy zbudować wektor cech, który w prostym przypadku może być ceną z poprzedniego dnia i ceną z bieżącego dnia. Odpowiedzią dla każdego wektora funkcji byłaby cena następnego dnia. Tak więc, biorąc pod uwagę wczorajszą cenę i dzisiejszą cenę, celem byłoby przewidzenie ceny na następne dni. Nie rozumiem, powiedzmy, że mamy sześciomiesięczne dane szkoleniowe, w jaki sposób położyłbyś większy nacisk na nowsze wektory funkcji?
źródło
Odpowiedzi:
W kontekście regresji wektorów pomocniczych fakt, że dane są szeregami czasowymi, jest istotny głównie z metodologicznego punktu widzenia - na przykład nie można wykonać k-krotnej walidacji krzyżowej i należy zachować ostrożność podczas uruchamiania testów historycznych / symulacje.
Zasadniczo regresja wektora nośnego jest techniką regresji dyskryminacyjnej, podobnie jak każda inna technika regresji dyskryminacyjnej. Dajesz mu zestaw wektorów wejściowych i powiązanych odpowiedzi i pasuje do modelu, aby spróbować przewidzieć odpowiedź na podstawie nowego wektora wejściowego. Z kolei jądro SVR stosuje jedną z wielu transformacji w zbiorze danych przed etapem uczenia się. Pozwala to na wychwycenie trendów nieliniowych w zbiorze danych, w przeciwieństwie do np. Regresji liniowej. Dobrym jądrem na początek byłby prawdopodobnie Gaussowski RBF - będzie miał hiperparametr, który można dostroić, więc wypróbuj kilka wartości. A kiedy poczujesz, co się dzieje, możesz wypróbować inne jądra.
W przypadku szeregów czasowych krok importu określa, jaki będzie twój „wektor cech” ; każdy jest nazywany „funkcją” i może być obliczony na podstawie danych obecnych lub przeszłych, a każdy , odpowiedź, będzie przyszłą zmianą w pewnym okresie czasu, co próbujesz przewidzieć. Weź na przykład akcje. Z czasem masz ceny. Być może twoje funkcje to: a) spread 200MA-30MA oraz b.) 20-dniowa zmienność, więc obliczasz każdy w każdym momencie czasu, wraz z (powiedzmy) zwrotem z tego tygodnia następnego tygodnia . W ten sposób Twój SVR uczy się przewidywać zwrot w następnym tygodniu na podstawie aktualnego spreadu MA i 20-dniowej objętości. (Ta strategia nie działa, więc niex i y i x t y tx xja yja xt yt
Jeśli czytane przez ciebie artykuły były zbyt trudne, prawdopodobnie nie chcesz samodzielnie wdrażać SVM, ponieważ może to być skomplikowane. IIRC zawiera pakiet „kernlab” dla R, który zawiera implementację SVM jądra z dołączoną liczbą jąder, dzięki czemu byłby to szybki sposób na uruchomienie.
źródło
Moja osobista odpowiedź na zadane pytanie brzmi „tak”. Możesz postrzegać to jako zaletę lub oszustwo, że istnieje nieskończona liczba opcji do opisania przeszłości. Spróbuj wybrać funkcje, które odpowiadają temu, w jaki sposób możesz zwięźle opisać komuś to, co właśnie zrobił rynek [np. „Cena ma wartość 1,4 ", nic nie mówi, jeśli nie jest powiązany z jakąś inną liczbą]. Jeśli chodzi o cel SVM, najprostsze są różnice w cenach i stosunek cen przez dwa kolejne dni. Ponieważ odpowiadają one bezpośrednio losowi hipotetycznego handlu, wydają się być dobrym wyborem.
Muszę pedantycznie nie zgodzić się z pierwszym stwierdzeniem Jasona: możesz dokonać k-krotnej walidacji krzyżowej w sytuacjach takich jak ta opisana przez raconteur i jest to przydatne (z zastrzeżeniem, że wyjaśnię). Jest to uzasadnione statystycznie dlatego, że instancje celu w tym przypadku nie mają wewnętrznej zależności: są to rozbieżne różnice lub stosunki. Jeśli zamiast tego zdecydujesz się na użycie danych w wyższej rozdzielczości niż skala celu, istnieje powód do obaw, że skorelowane instancje mogą pojawić się w zestawie szkoleniowym i zestawie walidacyjnym, co zagroziłoby krzyżowej walidacji (w przeciwieństwie do zastosowania SVM nie będziesz mieć dostępnych instancji, których cele pokrywają się z tymi, którymi jesteś zainteresowany).
Rzeczą, która zmniejsza skuteczność walidacji krzyżowej, jest to, że zachowanie rynku zmienia się z czasem. Istnieją dwa sposoby rozwiązania tego problemu. Pierwszym jest włączenie czasu jako funkcji (nie uważam tego za bardzo przydatne, być może dlatego, że wartości tej funkcji w przyszłości są nowe). Dobrze zmotywowaną alternatywą jest stosowanie walidacji „na przyszłość” (co oznacza testowanie twojej metodologii w przesuwnym oknie czasu i testowanie jej w okresie tuż po tym oknie. Jeśli zachowanie zmienia się w czasie, powiedzenie przypisywane Nielsowi Bohrowi „ Przewidywanie jest bardzo trudne, szczególnie w odniesieniu do przyszłości. ”Jest szczególnie odpowiednie. W literaturze istnieją pewne dowody na to, że zachowanie rynków finansowych zmienia się z czasem, generalnie staje się bardziej wydajne,
Powodzenia!
źródło
Jest Quantum Financier przykład wykorzystania SVM do prognozowania serii finansowych. Można go łatwo przekonwertować z systemu klasyfikacji (długi / krótki) na system regresji.
źródło