Hat jemand versucht, Zeitreihen mithilfe der Support-Vektor-Regression vorherzusagen?
Ich verstehe Support-Vektor-Maschinen und teilweise Support-Vektor-Regression, aber ich verstehe nicht, wie sie zum Modellieren von Zeitreihen, insbesondere multivariaten Zeitreihen, verwendet werden können.
Ich habe versucht, ein paar Artikel zu lesen, aber sie sind zu hoch. Kann mir jemand erklären, wie sie funktionieren würden, insbesondere in Bezug auf multivariate Zeitreihen?
EDIT: Lassen Sie mich versuchen, um ein bisschen näher zu erläutern, mit einem Aktienkurs-Beispiel.
Angenommen, wir haben Aktienkurse für N Tage. Dann könnten wir für jeden Tag einen Merkmalsvektor konstruieren, der in einem einfachen Fall der Preis des Vortages und der Preis des aktuellen Tages sein könnte. Die Antwort für jeden Merkmalsvektor wäre der Preis des nächsten Tages. Ausgehend vom gestrigen und heutigen Preis wäre es daher das Ziel, den Preis für die nächsten Tage vorherzusagen. Was ich nicht verstehe, ist, dass wir sechs Monate Trainingsdaten haben. Wie würden Sie die neueren Merkmalsvektoren stärker hervorheben?
quelle
Antworten:
Im Kontext der Support-Vektor-Regression ist die Tatsache, dass es sich bei Ihren Daten um Zeitreihen handelt, hauptsächlich methodisch relevant. Sie können beispielsweise keine k-fache Kreuzvalidierung durchführen und müssen beim Ausführen von Backtests Vorsichtsmaßnahmen treffen / Simulationen.
Grundsätzlich ist die Stützvektorregression eine diskriminative Regressionstechnik, ähnlich wie jede andere diskriminative Regressionstechnik. Sie geben ihm eine Reihe von Eingabevektoren und zugehörigen Antworten und es passt zu einem Modell, um zu versuchen, die Antwort bei einem neuen Eingabevektor vorherzusagen. Kernel-SVR hingegen wendet vor dem Lernschritt eine von vielen Transformationen auf Ihren Datensatz an. Dies ermöglicht es, nichtlineare Trends im Datensatz zu erfassen, im Gegensatz zu z. B. linearer Regression. Ein guter Kernel für den Anfang wäre wahrscheinlich der Gaußsche RBF - er hat einen Hyperparameter, den Sie einstellen können. Probieren Sie also ein paar Werte aus. Und wenn Sie ein Gefühl dafür bekommen, was los ist, können Sie andere Kernel ausprobieren.
Wenn die von Ihnen gelesenen Artikel zu schwierig waren, möchten Sie wahrscheinlich nicht versuchen, eine SVM selbst zu implementieren, da dies kompliziert sein kann. In IIRC gibt es ein "Kernlab" -Paket für R mit einer Kernel-SVM-Implementierung und einer Reihe von Kerneln, die einen schnellen Einstieg ermöglichen.
quelle
Meine persönliche Antwort auf die gestellte Frage lautet "Ja". Sie können es als Pro oder Contra ansehen, dass es unendlich viele Möglichkeiten gibt, um die Vergangenheit zu beschreiben. Versuchen Sie, Merkmale auszuwählen, die der Art entsprechen, wie Sie jemandem genau beschreiben, was der Markt gerade getan hat [z. B. "der Preis" ist bei 1,4 "sagt Ihnen nichts, wenn es nicht mit einer anderen Zahl zusammenhängt]. Das einfachste Ziel des SVM ist die Preisdifferenz und das Preisverhältnis für zwei aufeinanderfolgende Tage. Da diese direkt dem Schicksal eines hypothetischen Handels entsprechen, scheinen sie eine gute Wahl zu sein.
Ich muss pedantisch der ersten Aussage von Jason widersprechen: Sie können eine k-fache Kreuzvalidierung in Situationen durchführen, wie sie von raconteur beschrieben wurden, und dies ist nützlich (mit einer Maßgabe, die ich erläutern werde). Der Grund für die statistische Gültigkeit ist, dass die Instanzen des Ziels in diesem Fall keine intrinsische Beziehung aufweisen: Es handelt sich um disjunkte Differenzen oder Verhältnisse. Wenn Sie stattdessen Daten mit einer höheren Auflösung als dem Maßstab des Ziels verwenden, besteht Anlass zur Sorge, dass im Trainingssatz und im Validierungssatz korrelierte Instanzen angezeigt werden, die die Kreuzvalidierung beeinträchtigen (im Gegensatz dazu beim Anwenden der In SVM stehen Ihnen keine Instanzen zur Verfügung, deren Ziele sich mit denen überschneiden, an denen Sie interessiert sind.
Die Effektivität der gegenseitigen Validierung wird dadurch gemindert, dass sich das Verhalten des Marktes im Laufe der Zeit ändert. Es gibt zwei Möglichkeiten, damit umzugehen. Das erste ist, Zeit als Feature zu integrieren (ich fand das nicht sehr nützlich, vielleicht weil die Werte dieses Features in Zukunft alle neu sind). Eine gut motivierte Alternative ist die Verwendung der Walk-Forward-Validierung (dh, Sie testen Ihre Methodik an einem verschiebbaren Zeitfenster und in der Zeit unmittelbar nach diesem Fenster. Wenn sich das Verhalten im Laufe der Zeit ändert, wird das Niels Bohr zugeschriebene Sprichwort " Vorhersagen sind sehr schwierig, vor allem in Bezug auf die Zukunft "sind besonders angebracht. In der Literatur gibt es Hinweise darauf, dass sich das Verhalten der Finanzmärkte im Laufe der Zeit ändert und im Allgemeinen effizienter wird.
Viel Glück!
quelle
Quantum Financier bietet ein Beispiel für die Verwendung eines SVM zur Vorhersage von Finanzserien. Es könnte leicht von einem Klassifizierungssystem (Long / Short) in ein Regressionssystem umgewandelt werden.
quelle