Ist es notwendig, Zeitreihendaten bei Verwendung von Methoden des maschinellen Lernens zu verschlechtern und zu dezyklisieren?


9

Zum Beispiel:

Ich möchte zukünftige Werte einer Zeitreihe basierend auf früheren Werten mehrerer Zeitreihen unter Verwendung einer ANN und / oder SVM vorhersagen. Eingaben sind verzögerte Werte aus jeder Zeitreihe, und die Ausgaben sind Prognosen mit einem Schritt voraus (Prognosen mit weiteren Horizonten werden erstellt, indem die Vorhersagen unter Verwendung vorheriger Vorhersagen "vorwärtsgerollt" werden).

Sollten SVMs und ANNs nicht in der Lage sein, Trends und Zyklen zu lernen? Würden sie nicht in der Lage sein, Dinge zu lernen wie: "Wenn alles andere gleich ist, sollte die Ausgabe dieser Serie 2x die vorherige Ausgabe sein?" Oder, wenn ich eine kategoriale Variable für den Monat gebe: "Teilen Sie die Vorhersage, die ich gemacht hätte, durch 2, da es Januar ist?"

Würde der Versuch, die Daten zu dezyklisieren und zu beeinträchtigen, zu mehr Verzerrungen als nötig führen?


1
Probieren Sie es vom Standpunkt des maschinellen Lernens und der Vorhersage aus auf verschiedene Arten aus und finden Sie heraus, was am besten funktioniert - dh die beste Vorhersage liefert.
B_Miner

Antworten:


6

Bei Algorithmen für maschinelles Lernen ist es häufig vorteilhaft, die Skalierung oder Normalisierung von Merkmalen zu verwenden, um die schnelle Konvergenz des Algorithmus während des Trainings zu unterstützen und zu vermeiden, dass ein Satz von Merkmalen einen anderen dominiert. Nehmen wir zum Beispiel das Problem der Vorhersage von Aktienkursen. Wenn Sie hochpreisige Aktien wie Apple oder Microsoft zusammen mit einigen Penny Stocks einbeziehen, werden die hochwertigen Funktionen, die Sie notwendigerweise aus Apple- und Microsoft-Preisen extrahieren, diejenigen überwältigen, die Sie aus den Penny Stocks extrahieren, und Sie werden nicht auf einem trainieren Apfel zu Apfel Basis (kein Wortspiel beabsichtigt!), und das resultierende trainierte Modell kann möglicherweise nicht sehr gut verallgemeinern.

Es wäre jedoch eine sehr gute Sache , imho "zu versuchen, die Daten zu dezyklisieren und zu verschlechtern" . Das Extrahieren der verschiedenen zyklischen und Trendkomponenten und das Normalisieren durch Subtrahieren ihrer jeweiligen Mittelwerte und Dividieren durch ihre Standardabweichungen würde alle Daten für alle Zeitreihen in den gleichen ungefähren Bereich bringen, und dann würden Sie darauf trainieren, Daten zu mögen, die wann mögen Durch Umkehrung der Normalisierung neu skaliert, würde sich für Vorhersagezwecke wahrscheinlich viel besser verallgemeinern lassen.

Darüber hinaus kann es für jede Zeitreihe vorkommen, dass der Trend die zyklische Komponente überschwemmt, sodass Sie möglicherweise nur mit Trenddaten trainieren, die mit ziemlicher Sicherheit bei zyklischen Zeitreihen nicht gut funktionieren, und umgekehrt. Wenn Sie die beiden Komponenten trennen und jeweils mit separaten SVMs oder NNs trainieren und dann die beiden Vorhersagen neu kombinieren, erhalten Sie möglicherweise einen genaueren und leichter verallgemeinerbaren Algorithmus.


Ja, ich habe vergessen, dass die meisten (alle?) Standardisierungs- und Regularisierungsmethoden stationäre Verteilungen annehmen. Das Trennen von Komponenten und das Erstellen von additiven Modellen ist ebenfalls ein guter Tipp.
ektrules

1
Jetzt wundere ich mich jedoch über den Informationsverlust, der mit stationären Transformationen einhergeht. Was ist, wenn die tatsächlichen nicht differenzierten Werte wichtig sind? Wenn Sie beispielsweise eine Zeitreihe von Schulden und BIP haben und dann beide unterscheiden, kann die ML-Methode nur die Auswirkungen der Änderungen ermitteln. Die Auswirkungen können unterschiedlich sein, wenn die Verschuldung 10% des BIP gegenüber 200% beträgt. (Natürlich können Sie eine BIP / Schulden-Funktion hinzufügen).
ektrules

2

Wie weit prognostizieren Sie im Vergleich zu den Zeitskalen, in denen Trends oder Zyklen ablaufen? Zhang, Qi 2005 - 'Neuronale Netzprognosen für saisonale und Trendzeitreihen' finden De-Saisonalisierung und De-Trending (DSDT) vorteilhaft, aber ihre Vorhersagezeitskalen ähneln denen ihrer Trend- / Saisonzeitskalen. Im Gegensatz dazu habe ich an Daten gearbeitet, bei denen ich kurze Zeitskalenvorhersagen (z. B. 1 Tag) mache und Trend / Saisonalität nur über viel längere Zeitskalen wirken. DSDT verbessert meine Vorhersagegenauigkeit immer noch bis zu einem gewissen Grad, aber die ML kann ohne DSDT alleine ziemlich gut zurechtkommen, da Trend / Saisonalität für die letzten Datenpunkte praktisch irrelevant sind.


1

Ich bin mir ziemlich sicher, dass Sie hier falsche Tools verwenden.

ML-Methoden werden für die Interpolation erstellt (wie die Vorhersage von Zeitreihen A aus Zeitreihen B und C); Für Hochrechnungen haben wir Markov-Ketten und Freunde.

Das Problem bei Ihrem Ansatz ist, dass es unter diesen Bedingungen furchtbar leicht ist, das Modell zu überpassen, und was noch schlimmer ist, es ist schwer zu erkennen (eine normale Kreuzvalidierung schlägt fehl, so dass es sehr schwierig ist, Parameter richtig anzupassen usw. .).
Es ist auch eine schlechte Idee, Prädiktoren explizite Zeit hinzuzufügen - ich habe Modelle gesehen, die angepasst wurden nur pünktlich und entscheidungsgerecht mit einer Genauigkeit von 90% bei der Kreuzvalidierung und zufälligen Schätzungen bei Datentests nach dem Training wurden. Wenn Sie Zeit benötigen, ist es besser, sie als eine Reihe von Zyklusbeschreibungen wie Wochentag oder Sekunden nach Mitternacht aufzunehmen, die offensichtlich niemals die Länge Ihrer Trainingsreihe überschreiten oder sich dieser annähern.


Möglicherweise haben Sie Recht, wenn Sie die falschen Tools IDK verwenden. Ich habe keine Online-Materialien gefunden, die das gleiche Verfahren verwenden, an das ich denke. Ich versuche tatsächlich, eine Zeitreihe aus mehreren anderen Zeitreihen (im selben Zeitraum) vorherzusagen, aber ich möchte auch in die Zukunft vorhersagen (was nützt es, einen Wert vorherzusagen, wenn er bereits am verfügbar ist Zeitpunkt der Vorhersage?). Um die rollierenden Vorhersagen zu treffen, muss ich allerdings jede Zeitreihe vorhersagen. Ich denke, was ich versuche, ist so etwas wie eine Vektorautoregression, aber mit ML-Ansätzen. Wird dieser Ansatz nicht gut funktionieren?
ektrules

Warum funktioniert die Zeit als Prädiktorvariable (um eher den Trend als die Zyklizität vorherzusagen) so schlecht?
Max

1
Wie ich schrieb: 1 / ML ist schlecht bei der Extrapolation, 2 / time identifiziert jedes Objekt eindeutig, was eine starke Überanpassung ermöglicht und das Streben nach tatsächlichen Interaktionen verhindert.

1
@mbq Für (1) dachte ich, dass nur lokale Methoden für die Extrapolation schrecklich sind, während globale Methoden in Ordnung sein könnten. Aber ich kann sehen, wie Zeitreihen / MC angemessener sein könnten. Für (2) bin ich jedoch anderer Meinung. Die Verwendung einer eindeutigen Kennung würde zu einem guten Trainingsergebnis , aber zu einem schrecklichen Lebenslaufergebnis führen . Sie sollten also in der Lage sein, schlechte Modelle zu erkennen. Das Problem, denke ich, ist, dass Sie möglicherweise immer noch etwas mit dem traditionellen Lebenslauf überladen sind, da Sie die zukünftige Zeit nutzen. Vielleicht wäre ein nach Zeit aufgeteilter Zugtest mit einem Test am Ende sinnvoller.
Max

@max Ja, ich habe über einen Lebenslauf nachgedacht, der Momente zufällig aufteilt. Die Verwendung kontinuierlicher Zeitblöcke hilft dabei.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.