Können Splines zur Vorhersage verwendet werden?


20

Ich kann nicht genau sagen, um welche Art von Daten es sich handelt, da es sich um geschützte Daten handelt. Nehmen wir jedoch an, wir haben folgende Daten: Jeden Monat melden sich einige Personen für einen Dienst an. In jedem darauffolgenden Monat können diese Personen den Service aktualisieren, den Service beenden oder den Service verweigern (z. B. wegen Nichtbezahlung). Für die früheste Kohorte in unseren Daten liegen uns etwa 2 Jahre (24 Monate) vor.

Die Anzahl der Personen, die sich einem Monat anschließen, ist hoch (im Bereich von 100.000) und die Anzahl derjenigen, die eines der drei Dinge tun, liegt bei Tausenden. Wir verwenden jedoch nicht die Daten auf Einzelebene (das wären Millionen von Zeilen), sondern Daten, die nach Monat und Kohorte aggregiert sind (wie viel Prozent jeder Kohorte tun jeden Monat etwas).

Wir haben vorhandene Daten mit multivariaten adaptiven Regressionssplines (MARS) modelliert und einige interessante Ergebnisse gefunden. Ich mache mir jedoch Sorgen, diese zu verwenden, um die Zukunft zu extrapolieren oder vorherzusagen. Ich mache mir Sorgen, weil Vorhersagen für die Zukunft (in Bezug auf die Zeit) notwendigerweise außerhalb des Probenraums liegen und Splines für die Extrapolation instabil werden können.

Ist das eine legitime Methode? Welche Anliegen gibt es und können sie angesprochen werden?


2
Natürlich können sie zur Vorhersage verwendet werden, aber Sie müssen darauf achten, wie Sie die Modell-Hyperparameter richtig einstellen. Die Wahl der Spline-Funktion (konstant, linear, kubisch) ist ebenfalls ein wichtiges Anliegen. IIRC, lineare Spline-Funktionen in MARS werden normalerweise verwendet, und Splines höherer Ordnung werden aus Gründen der Extrapolation / Überanpassung vermieden.
Sycorax sagt Reinstate Monica

1
Gibt es etwas, das Sie besonders beunruhigt, was Sie an einer von Ihnen verwendeten Methode zweifeln lässt? Ihre Genauigkeit schien unerwartet niedrig, oder so ähnlich? Haben Sie andere Methoden ausprobiert? Wie vergleichen sie?
one_observation

1
@Sophologist Hauptsächlich, dass sie für neue Werte sehr abgeneigt sein werden, da die Knoten und Linien alle auf Werten basieren, die in der Vergangenheit liegen. Angenommen, ein linearer Spline mit der Angabe "Anstieg um XXX für jedes Jahr nach 2014" basiert nur auf Daten für 2015, würde jedoch bei Anwendung auf 2016 in die gleiche Richtung fortgesetzt.
Peter Flom - Reinstate Monica

3
@ PeterFlom: Ich war wirklich sehr verwirrt über Ihre Frage (Splines sind sehr häufig für Vorhersagen), bis ich Ihre Antwort an Sophologist gelesen habe. Ich habe Ihre Frage bearbeitet, um genau zu betonen, was Ihrer Meinung nach Ihr Anliegen ist. Lesen Sie bitte.
Cliff AB

2
@PeterFlom: Wenn meine Bearbeitung korrekt ist, modellieren Sie den Effekt der Zeit mit einem Spline? Wenn ja, wäre ich ziemlich besorgt. Wenn Sie jedoch den Effekt der Zeit mit einem Verzögerungseffekt und andere Kovariaten mit Splines modellieren, würde ich kein Problem sehen?
Cliff AB

Antworten:


15

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)=ich=1nαichBich(x[ich])
αichBichx[ich]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).
meinx(0,x[ich]+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+meinx(0,x-5)+2meinx(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)=2x-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.

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.