Nach meiner Interpretation der Frage ist die grundlegende Frage, die Sie stellen, ob Sie Zeit als Spline modellieren können oder nicht.
Die erste Frage, die ich beantworten möchte, ist, ob Sie Splines verwenden können, um Ihre Daten zu extrapolieren. Die kurze Antwort ist, es kommt darauf an, aber die meiste Zeit sind Splines nicht so gut für die Extrapolation. Splines sind im Wesentlichen eine Interpolationsmethode, sie partitionieren den Speicherplatz, auf dem sich Ihre Daten befinden, und passen auf jede Partition zu einem einfachen Regressor. Schauen wir uns also die Methode von MARS an. Die MARS-Methode ist definiert als
wobei die Konstante am ten Term im MARS-Modell ist , ist die Basisfunktion im i'ten Term und
f^( x ) = ∑i = 1nαichBich( x[ i ])
αichBichx[ i ]Stellt das aus Ihrem Merkmalsvektor zum i-ten Ausdruck ausgewählte Merkmal dar. Die Basisfunktion kann entweder eine Konstante oder eine Gelenkfunktion (Gleichrichter) sein. Die Scharnierfunktion ist einfach
Die Scharnierfunktion zwingt das Modell, eine
stückweise lineare Funktion zu erzeugen (es ist interessant zu bemerken, dass ein neuronales Netzwerk mit einer gleichgerichteten linearen Aktivierungsfunktion sein kann gesehen als das Obermengenmodell des MARS-Modells).
m a x ( 0 , x[ i ]+ cich)
Um auf die Frage zurückzukommen, warum Splines für die Extrapolation normalerweise nicht so gut geeignet sind, muss man erkennen, dass nach dem Überschreiten der Interpolationsgrenzen nur ein sehr kleiner Teil des Modells "aktiviert" wird. oder ein sehr großer Teil davon wird "aktiviert", und daher verschwindet die Kraft des Modells (wegen des Mangels an Variation). Um ein bisschen mehr Intuition zu bekommen, wollen wir so tun, als würden wir versuchen, ein MARS-Modell an einen Feature-Space anzupassen, der in . Bei einer gegebenen Zahl versuchen wir, eine andere vorherzusagen. Das MARS-Modell wartet mit einer Funktion auf, die ungefähr so aussieht:
Wenn die Extrapolation nach der ZahlR
f^( x ) = 5 + m a x ( 0 , x - 5 ) + 2 m a x ( 0 , x - 10 )
10Die Funktion wird nun
Das MARS-Modell, das wir zuvor hatten, läuft auf eine einzige lineare Funktion hinaus, und daher verschwindet die Potenz des MARS-Modells (dies ist das bei den meisten Begriffen "aktivieren"). Dasselbe passiert bei der Extrapolation vor der Zahl . Die Ausgabe des MARS-Modells ist dann einfach eine Konstante. Aus diesem Grund sind Splines in der Regel nicht für die Extrapolation geeignet. Dies erklärt auch das Problem, das Sie in den Kommentaren Ihrer Posts erwähnt haben, dass hochgerechnete Vorhersagen für neue Werte "sehr schlecht" sind und für verschiedene Zeitreihen "in die gleiche Richtung" tendieren.
f^( x ) = 10 + 2 ( x - 10 ) = 2 x - 10
5
Kommen wir nun zu den Zeitreihen zurück. Zeitreihen sind im maschinellen Lernen ein ganz besonderer Fall. Sie neigen dazu, eine gewisse Struktur aufzuweisen, sei es eine teilweise Abweichung oder eine der vielen verschiedenen Arten von Unterstrukturen, und diese Struktur kann ausgenutzt werden. Es werden aber spezielle Algorithmen benötigt, die diese Struktur ausnutzen können, Splines tun dies leider nicht.
Es gibt ein paar Dinge, die ich Ihnen empfehlen würde, auszuprobieren. Das erste wären wiederkehrende Netzwerke. Wenn Ihre Zeitreihe nicht so lang ist (und keine langfristigen Abhängigkeiten aufweist), sollten Sie in der Lage sein, ein einfaches, wiederkehrendes Vanille-Netzwerk zu verwenden. Wenn Sie verstehen möchten, was gerade passiert, können Sie eine gleichgerichtete Lineareinheit mit Vorspannungen als Aktivierungsfunktion verwenden. Dies entspricht der MARS-Modellierung anhand der Teilmenge der Zeitreihen und des "Gedächtnisses" des wiederkehrenden neuronalen Netzes hält. Es ist schwer zu interpretieren, wie der Speicher vom Netz verwaltet wird, aber Sie sollten eine Vorstellung davon bekommen, wie der Unterraum in Bezug auf die generierte stückweise lineare Funktion behandelt wird. Auch wenn Sie statische Features haben, die nicht zu den Zeitreihen gehören, ist es relativ einfach, diese weiterhin im Netz zu verwenden.
Wenn die von Ihnen verwendete Zeitreihe sehr lang ist und möglicherweise langfristige Abhängigkeiten aufweist, empfehle ich die Verwendung eines der mit einem Gatter versehenen wiederkehrenden Netzwerke, z. B. GRU oder LSTM.
Auf der klassischeren Seite der Zeitreihenklassifizierung können Sie Hidden-Markov-Modelle verwenden. Ich werde nicht weiter darauf eingehen, weil ich mit ihnen nicht so vertraut bin.
Abschließend würde ich aus zwei Gründen die Verwendung von Splines nicht empfehlen. Erstens ist es nicht in der Lage, komplizierte Extrapolationsprobleme zu lösen, was das Problem zu sein scheint, das Sie beschreiben. Und zweitens nutzen Splines nicht die Unterstrukturen von Zeitreihen, die bei der Klassifizierung von Zeitreihen sehr mächtig sein können.
Hoffe das hilft.