Vorhersage mehrerer Perioden mit maschinellem Lernen


9

Ich habe kürzlich mein Wissen über Zeitreihen zusammengefasst und festgestellt, dass maschinelles Lernen meist nur einen Schritt voraus ist.

Mit One-Step-Ahead-Prognosen meine ich Prognosen, die beispielsweise, wenn wir stündliche Daten haben, die Daten von 10 Uhr morgens bis 11 Uhr morgens und 11 Uhr morgens für 12 Uhr morgens usw. verwenden.

Geben Sie hier die Bildbeschreibung ein

Können maschinelle Lernmethoden Prognosen erstellen, die einen Schritt voraus sind? Mit H-Step-Ahead-Prognosen meine ich, dass wir beispielsweise unter der Annahme von Stundendaten die Daten ab 10 Uhr verwenden, um eine 7-Step-Ahead-Prognose zu erstellen, um Schätzungen für 11,12,13,14,15,16,17 'zu erhalten. Uhr.

Beispielbild: Geben Sie hier die Bildbeschreibung ein

Im Zusammenhang mit meiner Hauptfrage frage ich mich:

  • Was sind die Gründe, warum ich niemanden sehe, der maschinelles Lernen verwendet, um Prognosen zu erstellen?
  • Wenn es eine Methode gibt, die maschinelles Lernen verwendet, ist sie mehr oder weniger genau als ARIMA?

Antworten:


7

(Ein Teil davon stammt aus einem früheren Beitrag von mir. ) Zunächst müssen Sie die beiden verschiedenen Methoden zur Durchführung einer mehrstufigen Zeitreihenprognose unterscheiden: Rekursive Prognose und direkte Prognose:

  • Bei der rekursiven Prognose (auch als iterierte Prognose bezeichnet) trainieren Sie Ihr Modell nur für Prognosen mit einem Schritt voraus. Nach Abschluss des Trainings wenden Sie Ihr endgültiges Modell rekursiv an, um 1 Schritt voraus, 2 Schritte voraus usw. vorherzusagen, bis Sie den gewünschten Prognosehorizont von Schritten erreicht haben. Dazu geben Sie die Prognose von jedem nachfolgenden Schritt zurück in das Modell, um den nächsten Schritt zu generieren. Dieser Ansatz wird von herkömmlichen Prognosealgorithmen wie ARIMA und Exponential Smoothing-Algorithmen verwendet und kann auch für Prognosen verwendet werden, die auf maschinellem Lernen basieren (siehe diesen Beitrag für ein Beispiel und diesen Beitrag für einige Diskussionen).n
  • Direkte Vorhersage ist, wenn Sie für jeden Schritt ein separates Modell trainieren (Sie versuchen also, den Schritt "direkt" vorherzusagen, anstatt Schritte rekursiv zu erreichen. Siehe Ben Taied et al. Für eine Diskussion der direkten Vorhersage und komplexere kombinierte Ansätze.nthn

Um nun Ihre Hauptfrage zu beantworten:

Können maschinelle Lernmethoden Prognosen erstellen, die einen Schritt voraus sind?

Ja, ML-Methoden können und können mithilfe von rekursiven und direkten mehrstufigen Prognosen Prognosen in h-Schritten erstellen. Darüber hinaus sind sie für die direkte mehrstufige Vorhersage besser für die Aufgabe geeignet als herkömmliche Modelle wie ARIMA oder Exponential Smoothing. Beachten Sie jedoch, dass Sie für die direkte mehrstufige Prognose vorab die vorausschauenden h-Schritte angeben müssen, für die Sie Ihr Modell prognostizieren und entsprechend trainieren möchten, während Sie für die rekursive Prognose Ihr Modell für eine beliebige Anzahl zukünftiger Schritte verwenden können .

Darüber hinaus argumentieren Chevillon & Hendry , dass direkte mehrstufige Prognosen in einigen Fällen genauer sind als rekursive Prognosen - was bedeutet, dass ML genauer wäre als herkömmliche Methoden.

Für Ihre anderen Fragen:

  • Was sind die Gründe, warum ich niemanden sehe, der maschinelles Lernen verwendet, um Prognosen zu erstellen?

Viele Menschen verwenden ML für mehrstufige Prognosen, insbesondere für neuronale Netze: Hyndmans nnetar-Methode, die im R Forecast-Paket, Kourentzes 'nnfor R-Paket, Amazon DeepAR-Modell und vielen anderen verfügbar ist.

XGBoost wurde auch in einigen Kaggle-Zeitreihenwettbewerben erfolgreich eingesetzt.

Siehe Bontempi et al. für eine allgemeine Diskussion.

  • Wenn es eine Methode gibt, die maschinelles Lernen verwendet, ist sie mehr oder weniger genau als ARIMA?

Das ist eine offene Frage und hängt natürlich von den Daten und der Anwendung ab, für die eine Prognose erstellt wird.


1

Ich habe in den letzten Monaten mit Zeitreihen zur Erkennung von Anomalien gespielt und kann meine Erfahrungen mit Ihnen teilen.

Die Zeitreihe, mit der ich gearbeitet habe, war durch zwei Saisonalitäten (täglich und wöchentlich), keinen Trend und viele Spitzen bei Tageslicht gekennzeichnet.

Ich habe mehrere Experimente durchgeführt und dann ein Modell ausgewählt, das auf neuronalen LSTM-Netzen basiert, weil es in meinem Fall die Arima übertraf, aber wie alles in der Statistik gibt es natürlich keine allgemeine Lösung.

Um mehr als einen Zeitschritt in der Zukunft mit einem neuronalen Netz vorherzusagen, ist es ziemlich einfach. Sie müssen N-Werte anstelle von einem ausgeben, und dieser N-Ausgang wird mit den tatsächlichen N Beobachtungen verglichen.

Aus meiner Erfahrung kann ich Ihnen sagen, dass das Modell bei Verwendung eines niedrigen N (z. B. 1) in der Vergangenheit nur wenige Zeitschritte verwendet, um den neuen vorherzusagen, ohne die Saisonalität wirklich zu "lernen". Auf der anderen Seite werden durch Erhöhen von N zu mutch die Saisonalitäten gelernt, aber die Gesamtgenauigkeit nimmt ab.

Für die Zwecke meiner Analyse fand ich, dass N = 4 (2 Stunden in der Zukunft) ein guter Kompromiss ist.


1

Um Ihre Frage allgemeiner zu beantworten, können Sie maschinelles Lernen verwenden und Prognosen für H-Schritte voraussagen . Der schwierige Teil ist, dass Sie Ihre Daten in eine Matrix umformen müssen, in der Sie für jede Beobachtung den tatsächlichen Wert der Beobachtung und vergangene Werte der Zeitreihen für einen definierten Bereich haben. Sie müssen manuell definieren, welcher Datenbereich für die Vorhersage Ihrer Zeitreihen relevant erscheint, als würden Sie ein ARIMA-Modell parametrisieren. Die Breite / der Horizont der Matrix ist entscheidend , um den nächsten von Ihrer Matrix genommenen Wert korrekt vorherzusagen. Wenn Ihr Horizont eingeschränkt ist, verpassen Sie möglicherweise Saisonalitätseffekte.

Sobald Sie dies getan haben, müssen Sie den ersten nächsten Wert basierend auf Ihrer letzten Beobachtung vorhersagen, um h-Schritte vorauszusagen. Sie müssen dann die Vorhersage als "tatsächlichen Wert" speichern, der verwendet wird, um den zweitnächsten Wert durch eine Zeitverschiebung vorherzusagen , genau wie bei einem ARIMA-Modell. Sie müssen den Prozess h-mal wiederholen, um Ihre h-Schritte voranzutreiben. Jede Iteration basiert auf der vorherigen Vorhersage.

Ein Beispiel für die Verwendung von R-Code wäre das folgende.

library(forecast)
library(randomForest)

# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction

# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")

# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
  designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
  colnames(designvec) <- colnames(designmat)
  designvec$y <- predict(rfModel, designvec)
  designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y

#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)

Offensichtlich gibt es keine allgemeinen Regeln, um zu bestimmen, ob ein Zeitreihenmodell oder ein Modell für maschinelles Lernen effizienter sind. Die Rechenzeit kann für Modelle des maschinellen Lernens höher sein, andererseits können Sie jede Art von zusätzlichen Funktionen einschließen, um Ihre Zeitreihen anhand dieser Modelle vorherzusagen (z. B. nicht nur numerische oder logische Funktionen). Allgemeiner Rat wäre, beide zu testen und das effizienteste Modell auszuwählen.


Obwohl Sie vielleicht erwähnen möchten, dass das, was Sie als Zeitverschiebung bezeichnen, tatsächlich das ist, was ein Standardarima tut. Deshalb sind Arima-Vorhersagen in der Regel sehr linear.
5.

Ja genau. Ich werde meine Antwort bearbeiten, um diesen Schritt zu verdeutlichen.
AshOfFire

1
In Zeitreihenmodellen können Sie auch zusätzliche Funktionen hinzufügen.
Tim

Richtig, mit ARIMAX, aber sie müssen numerisch sein, und die hinzugefügten Koeffizienten können nicht so einfach interpretiert werden wie die in einem ARMA verwendeten Koeffizienten.
AshOfFire
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.