Zeitreihendaten treiben Prognosen in den Bereichen Finanzen, Einzelhandel, Gesundheitswesen und Energie voran. Im Gegensatz zu typischen Problemen des maschinellen Lernens muss die chronologische Reihenfolge gewahrt bleiben. Das Ignorieren dieser Struktur führt zu Datenlecks und irreführenden Leistungsschätzungen, wodurch die Modellbewertung unzuverlässig wird. Die Kreuzvalidierung von Zeitreihen behebt dieses Drawback, indem sie die zeitliche Integrität während des Trainings und Exams aufrechterhält. In diesem Artikel behandeln wir wesentliche Techniken, die praktische Implementierung mit ARIMA und TimeSeriesSplit sowie häufige Fehler, die es zu vermeiden gilt.
Was ist Kreuzvalidierung?
Die Kreuzvalidierung dient als grundlegende Technik, mit der maschinelle Lernmodelle ihre Leistung bewerten. Das Verfahren erfordert die Aufteilung der Daten in verschiedene Trainingssätze und Testsätze, um zu bestimmen, wie intestine das Modell mit neuen Daten funktioniert. Die k-fache Kreuzvalidierungsmethode erfordert die Aufteilung der Daten in okay gleiche Abschnitte, die als Falten bezeichnet werden. Der Testsatz verwendet eine Falte, während die übrigen Faltungen den Trainingssatz bilden. Der Testsatz verwendet eine Falte, während die übrigen Faltungen den Trainingssatz bilden.
Bei der herkömmlichen Kreuzvalidierung müssen Datenpunkte unabhängigen und identischen Verteilungsmustern folgen, einschließlich Randomisierung. Die Standardmethoden können nicht auf sequentielle Zeitreihendaten angewendet werden, da die zeitliche Reihenfolge beibehalten werden muss.
Mehr lesen: Kreuzvalidierungstechniken
Grundlegendes zur Kreuzvalidierung von Zeitreihen
Die Kreuzvalidierung von Zeitreihen passt den Normal-CV an sequentielle Daten an, indem die chronologische Reihenfolge der Beobachtungen erzwungen wird. Die Methode generiert durch ihren Prozess mehrere Prepare-Check-Splits, die jeden Satz nach den entsprechenden Trainingsperioden testen. Die frühesten Zeitpunkte können nicht als Testsatz dienen, da das Modell keine vorherigen Daten zum Trainieren hat. Bei der Bewertung der Prognosegenauigkeit werden zeitbasierte Faltungen verwendet, um Metriken zu mitteln, die durch ihre Messung MSE einbeziehen.
Die obige Abbildung zeigt ein grundlegendes Kreuzvalidierungssystem mit rollierendem Ursprung, das die Modellleistung durch Coaching auf blauen Daten bis zur Zeit testet T und Testen am nachfolgenden orangefarbenen Datenpunkt. Das Trainingsfenster „rollt dann vorwärts“ und wiederholt sich. Der Stroll-Ahead-Ansatz simuliert tatsächliche Prognosen, indem das Modell anhand historischer Daten trainiert und an kommenden Daten getestet wird. Durch die Verwendung mehrerer Falten erhalten wir mehrere Fehlermessungen, einschließlich MSE-Ergebnissen aus jeder Falte, die wir zur Bewertung und zum Vergleich verschiedener Modelle verwenden können.
Modellbildung und Evaluierung
Sehen wir uns ein praktisches Beispiel mit an Python. Wir verwenden Pandas, um unsere Trainingsdaten aus der Datei zu laden practice.csv während TimeSeriesSplit von scikit-learn sequentielle Faltungen erstellt und wir Statistikmodelle verwenden. ARIMA ein Prognosemodell zu entwickeln. In diesem Beispiel sagen wir die tägliche Durchschnittstemperatur (meantemp) in unserer Zeitreihe voraus. Der Code enthält Kommentare, die die Funktion jedes Programmierabschnitts beschreiben.
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from statsmodels.tsa.arima.mannequin import ARIMA
from sklearn.metrics import mean_squared_error
import numpy as np
# Load time sequence knowledge (day by day information with a datetime index)
knowledge = pd.read_csv('practice.csv', parse_dates=('date'), index_col="date")
# Give attention to the goal sequence: imply temperature
sequence = knowledge('meantemp')
# Outline variety of splits (folds) for time sequence cross-validation
n_splits = 5
tscv = TimeSeriesSplit(n_splits=n_splits)
Der Code zeigt, wie eine Kreuzvalidierung durchgeführt wird. Das ARIMA-Modell wird für jede Falte im Trainingsfenster trainiert und zur Vorhersage des nächsten Zeitraums verwendet, was die Berechnung von MSE ermöglicht. Der Prozess führt zu fünf MSE-Werten, die wir durch Mittelung der fünf MSE-Werte aus jeder Aufteilung berechnen. Die Prognosegenauigkeit für die zurückgehaltenen Daten verbessert sich, wenn der MSE-Wert sinkt.
Nach Abschluss der Kreuzvalidierung können wir ein endgültiges Modell anhand der vollständigen Trainingsdaten trainieren und seine Leistung an einem neuen Testdatensatz testen. Das endgültige Modell kann mit diesen Schritten erstellt werden: final_model = ARIMA(sequence, order=(5,1,0)).match() und dann forecast = final_model.forecast(steps=len(take a look at)) was nutzt take a look at.csv Daten.
# Initialize a listing to retailer the MSE for every fold
mse_scores = ()
# Carry out time sequence cross-validation
for train_index, test_index in tscv.cut up(sequence):
train_data = sequence.iloc(train_index)
test_data = sequence.iloc(test_index)
# Match an ARIMA(5,1,0) mannequin to the coaching knowledge
mannequin = ARIMA(train_data, order=(5, 1, 0))
fitted_model = mannequin.match()
# Forecast the take a look at interval (len(test_data) steps forward)
predictions = fitted_model.forecast(steps=len(test_data))
# Compute and report the Imply Squared Error for this fold
mse = mean_squared_error(test_data, predictions)
mse_scores.append(mse)
print(f"Imply Squared Error for present cut up: {mse:.3f}")
# In any case folds, compute the common MSE
average_mse = np.imply(mse_scores)
print(f"Common Imply Squared Error throughout all splits: {average_mse:.3f}")
Bedeutung für Prognosen und maschinelles Lernen
Die ordnungsgemäße Implementierung von Kreuzvalidierungsmethoden ist eine wesentliche Voraussetzung für genaue Zeitreihenprognosen. Die Methode testet die Fähigkeiten des Modells, um bevorstehende Informationen vorherzusagen, auf die das Modell noch nicht gestoßen ist. Der Prozess der Modellauswahl durch Kreuzvalidierung ermöglicht es uns, das Modell zu identifizieren, das bessere Fähigkeiten zur Verallgemeinerung seiner Leistung aufweist. Der Zeitreihen-CV liefert mehrere Fehlerbewertungen, die im Vergleich zu einer einzelnen Zugtestaufteilung unterschiedliche Leistungsmuster zeigen.
Der Prozess der Stroll-Ahead-Validierung erfordert, dass das Modell bei jeder Faltung neu trainiert wird, was als Probe für den tatsächlichen Systembetrieb dient. Das System testet die Modellstärke durch geringfügige Änderungen in den Eingabedaten, während konsistente Ergebnisse über mehrere Falten hinweg die Systemstabilität zeigen. Die Kreuzvalidierung von Zeitreihen liefert genauere Bewertungsergebnisse und unterstützt gleichzeitig die optimale Identifizierung von Modellen und Hyperparametern im Vergleich zu einer Standardmethode zur Datenaufteilung.
Herausforderungen bei der Kreuzvalidierung in Zeitreihen
Die Kreuzvalidierung von Zeitreihen bringt ihre eigenen Herausforderungen mit sich. Es fungiert als wirksames Erkennungsinstrument. Nichtstationarität (Konzeptdrift) stellt eine weitere Herausforderung dar, da sich die Modellleistung über verschiedene Falten hinweg ändert, wenn das zugrunde liegende Muster Regimeverschiebungen erfährt. Der Kreuzvalidierungsprozess zeigt dieses Muster durch die Demonstration steigender Fehler während der späteren Faltungen.
Weitere Herausforderungen sind:
- Begrenzte Daten in frühen Falten: Die ersten Falten verfügen über sehr wenige Trainingsdaten, was dazu führen kann, dass erste Vorhersagen unzuverlässig sind.
- Überlappung zwischen den Falten: Die Trainingssätze in jeder aufeinanderfolgenden Falte nehmen an Größe zu, was zu Abhängigkeit führt. Die Fehlerschätzungen zwischen den Falten zeigen eine Korrelation, was zu einer Unterschätzung der tatsächlichen Unsicherheit führt.
- Rechenaufwand: Zeitreihen-CV erfordert, dass das Modell für jede Falte neu trainiert wird, was bei komplizierten Modellen oder umfangreichen Datensätzen kostspielig wird.
- Saisonalität und Fensterwahl: Ihre Daten erfordern bestimmte Fenstergrößen und Aufteilungspunkte, da sie sowohl starke saisonale Muster als auch strukturelle Veränderungen aufweisen.
Abschluss
Die Kreuzvalidierung von Zeitreihen liefert genaue Bewertungsergebnisse, die die tatsächliche Modellleistung widerspiegeln. Die Methode behält die chronologische Abfolge der Ereignisse bei, stoppt die Datenextraktion und simuliert tatsächliche Systemnutzungssituationen. Das Testverfahren führt dazu, dass fortgeschrittene Modelle ausfallen, weil sie neues Testmaterial nicht verarbeiten können.
Sie können durch Stroll-Ahead-Validierung und geeignete Metrikauswahl starke Prognosesysteme erstellen und gleichzeitig Funktionsverluste verhindern. Maschinelles Lernen von Zeitreihen erfordert eine ordnungsgemäße Validierung, unabhängig davon, ob Sie ARIMA oder verwenden LSTM oder Gradientenverstärkung Modelle.
Häufig gestellte Fragen
A. Es bewertet Prognosemodelle, indem es die chronologische Reihenfolge beibehält, Datenlecks verhindert und reale Vorhersagen durch sequentielle Zugtestaufteilungen simuliert.
A. Weil dadurch Daten gemischt und die zeitliche Reihenfolge unterbrochen werden, was zu Verlusten und unrealistischen Leistungsschätzungen führt.
A. Begrenzte frühe Trainingsdaten, Umschulungskosten, überlappende Falten und Instationarität können die Zuverlässigkeit und Berechnung beeinträchtigen.
Melden Sie sich an, um weiterzulesen und von Experten kuratierte Inhalte zu genießen.
