Ich bin mit der "regulären" Kreuzvalidierung vertraut, aber jetzt möchte ich Zeitreihenvorhersagen treffen, während ich die Kreuzvalidierung mit einer einfachen linearen Regressionsfunktion verwende. Ich schreibe ein einfaches Beispiel auf, um meine beiden Fragen zu klären: eine zum Zug / Test-Split, eine Frage zum Trainieren / Testen von Modellen, wenn das Ziel darin besteht, für verschiedene n mit n den Vorhersageschritten in vorherzusagen voraus.
(1) Die Daten
Angenommen, ich habe Daten für die Zeitpunkte 1, ..., 10 wie folgt:
timeseries = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]
(2) Umwandlung der Daten in ein Format, das für überwachtes Lernen nützlich ist
Soweit ich weiß, können wir "Verzögerungen" verwenden, dh Verschiebungen in den Daten, um einen Datensatz zu erstellen, der für überwachtes Lernen geeignet ist:
input = [NaN,0.5,0.3,10,4,5,6,1,0.4,0.1]
output/response = [0.5,0.3,10,4,5,6,1,0.4,0.1,0.9]
Hier habe ich einfach die Zeitreihen um eins verschoben, um den Ausgabevektor zu erstellen. Soweit ich weiß, könnte ich jetzt die Eingabe als Eingabe für ein lineares Regressionsmodell und die Ausgabe für die Antwort verwenden (das NaN könnte durch einen zufälligen Wert ersetzt werden).
(3) Frage 1: Kreuzvalidierung ("Backtesting")
Angenommen, ich möchte jetzt 2-Splits durchführen. Muss ich sowohl den Zug als auch die Testsätze verschieben?
Dh so etwas wie:
Zugset:
Unabhängige Variable: [NaN, 0,5,0,3,10,4,5]
Ausgabe- / Antwortvariable: [0,5,0,3,10,4,5,6]
Test-Set:
Unabhängige Variable: [1,0.4,0.1]
Ausgabe- / Antwortvariable: [0,4,0,1,0,9]
(ii) Frage 2: Vorhersage verschiedener Verzögerungen im Voraus :
Wie offensichtlich, habe ich mich abhängig von unabhängigen Variablen um 1 verschoben. Angenommen, ich möchte jetzt ein Modell trainieren, das 5 Zeitschritte im Voraus vorhersagen kann - kann ich diese Verzögerung von eins beibehalten und das Modell dennoch verwenden, um n + 1 vorherzusagen , ..., n + 5, ... oder ändere ich die Verschiebung von unabhängiger zu abhängiger Variable auf 5? Was genau ist der Unterschied?
Antworten:
Für die erste Frage gibt es, wie Richard Hardy betont, einen ausgezeichneten Blog-Beitrag zu diesem Thema. Es gibt auch diesen Beitrag und diesen Beitrag, den ich sehr hilfreich gefunden habe.
Bei der zweiten Frage müssen Sie die beiden grundlegenden Ansätze für die mehrstufige Zeitreihenprognose berücksichtigen: Rekursive Prognose und direkte Prognose:
Beachten Sie, dass Hyndmans Blogbeitrag zur Kreuzvalidierung für Zeitreihen sowohl einen Schritt voraus als auch direkte Prognosen umfasst.
Um die rekursive Vorhersage zu verdeutlichen (basierend auf den Kommentaren):
(HierY sind Istwerte und Y^ sind Prognosewerte.)
quelle