Sobes.tech
Middle — Senior

Wie führt man eine Kreuzvalidierung bei Zeitreihen durch?

sobes.tech KI

Antwort von AI

Die Kreuzvalidierung bei Zeitreihen unterscheidet sich von der klassischen, da die Daten eine zeitliche Abhängigkeit aufweisen und nicht einfach zufällig vermischt werden können.

Hauptansätze:

  1. Time Series Split (gleitendes Fenster)

    • Die Daten werden in aufeinanderfolgende zeitliche Blöcke unterteilt.
    • Bei jedem Schritt wird das Modell mit den Daten bis zu einem bestimmten Zeitpunkt trainiert und auf den nächsten Zeitabschnitt getestet.
    • Beispiel: Training in Monaten 1-3, Test in 4; dann Training in 1-4, Test in 5 usw.
  2. Walk-forward validation (Vorwärts-Schritt Validierung)

    • Ähnlich wie Time Series Split, aber das Modell wird bei jedem Schritt neu trainiert, indem neue Daten hinzugefügt werden.
  3. Blocked cross-validation (Blockierte Kreuzvalidierung)

    • Die Daten werden in Blöcke unterteilt, um Informationslecks zwischen Training und Test zu vermeiden.

Beispiel in Python mit sklearn:

from sklearn.model_selection import TimeSeriesSplit
import numpy as np

X = np.arange(100).reshape(-1, 1)  # Beispielsdaten
 y = np.sin(X).ravel()

tscv = TimeSeriesSplit(n_splits=5)
for train_index, test_index in tscv.split(X):
    X_train, X_test = X[train_index], X[test_index]
    y_train, y_test = y[train_index], y[test_index]
    # Modell auf X_train, y_train trainieren
    # Auf X_test, y_test evaluieren

Es ist wichtig, die chronologische Reihenfolge beizubehalten, um zukünftige Daten nicht für das Modelltraining zu verwenden.