Obsługuje regresję wektorową do przewidywania wielowymiarowych szeregów czasowych

22

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?

gawędziarz
źródło
Czy możesz opublikować artykuły, o których mowa?
Ram Ahluwalia,
1
Prognozowanie szeregów czasowych za pomocą lokalnej maszyny do regresji wektorów wsparcia, Rodrigo Fernandez, svms.org/regression/Fern.pdf Regresja wektorów wsparcia dla prognoz szeregów finansowych, Wei Hao i Songnian Yu, springerlink.com/index/946802600u4552m8.pdf
raconteur

Odpowiedzi:

18

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 txxjayjaxtyt

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.

William
źródło
@Jason, dziękuję za odpowiedź. Jestem zdezorientowany, jak sprawić, aby starsze dane były mniej ważne podczas szkolenia, tj. Jak podać ważne 100 ostatnim przykładom powiedzenia, zamiast 10 000 ostatnich przykładów. Ponadto mam pewne doświadczenie w pracy z SVM w Pythonie, więc zamierzam z nich korzystać.
raconteur
Nie można tak naprawdę wykorzystać wszystkich danych z przeszłości jako wektora funkcji; musisz jakoś przekształcić go w sensowną funkcję. Rozważmy na przykład uśrednienie ostatnich 20 wartości szeregu czasowego lub bieżącej wartości szeregu podzielonej przez średnią ruchomą. Są to cechy, które wskazują w jednym prostym numerze charakterystykę importu zestawu danych. Wymyśl (powiedz) 10 lub więcej funkcji, które Twoim zdaniem będą tak przewidywalne, jak to możliwe. Aby starsze dane były mniej ważne, należy je zmniejszyć przy definiowaniu funkcji (tj. Stosować krótsze średnie ruchome).
William
@Jason, 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?
raconteur
2
Och, rozumiem co masz teraz na myśli. Krótka odpowiedź brzmi: nie możesz, przynajmniej nie bez ponownego zaprojektowania SVM, aby zrozumieć pojęcie aktualności. SVM jest zdefiniowany w kategoriach par xy, a nie uporządkowanych par xy, a zatem funkcja celu, którą minimalizuje, jest funkcją tych par. OTOH, możesz uruchomić kilka oddzielnych maszyn SVM, jedną z ubiegłym miesiącem, jedną z ubiegłym rokiem, a drugą z ostatnich dwóch lat - a następnie zrobić średnią ważoną odpowiedzi, które otrzymasz z powrotem na podstawie twoich osobistych preferencji dla ostatnich vs , stare dane (np. 0,7 * miniony miesiąc + 0,2 * miniony rok + 0,1 * miniony 2 lata).
William
@William .. czy masz jakieś zalecenia dotyczące tego, które algorytmy uczenia maszynowego byłyby najlepsze do przewidywania szeregów czasowych (ten sam problem, o który pytał raconteur) inne niż SVM? czy odpowiedź byłaby inna w przypadku zastosowania w innej domenie? np. cena akcji vs prognozowanie łańcucha dostaw (prognozowanie popytu na produkty, które sprzedajemy).
Lam
1

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!

Elroch
źródło
Witamy na naszej stronie!
kjetil b halvorsen
0

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.

Zach
źródło
1
SZANOWNI BÓG PROSZĘ, nikt nie używa tej strategii! W ten sposób Wall St palą początkujących :( Najstarszą sztuczką w tej książce jest modernizacja modelu statystycznego przy użyciu podstawowych technicznych analiz analitycznych, takich jak RSI, aby nowicjusze myśleli, że uderzyli w złoto.
William
1
@Jason z oryginalnego postu „Chcę również wyjaśnić, że nie sądzę, aby to był dobry system”. Jest to jednak dobry przykład dopasowania maszyny wektora nośnego do szeregu czasowego.
Zach.