Sobes.tech
Middle — Senior

Quelles sont les caractéristiques de la construction du jeu de données et de la validation pour les modèles de séries temporelles?

sobes.tech IA

Réponse de l'IA

Lors de la construction d’un ensemble de données et de la validation pour des modèles de séries temporelles, il est important de prendre en compte la dépendance temporelle des données et d’éviter toute fuite d’informations futures vers le passé.

Principales caractéristiques :

  1. Fenêtre glissante (Sliding window) — création d’exemples d’entraînement à partir d’intervalles de temps séquentiels, où l’entrée est constituée des valeurs précédentes et la sortie du prochain pas.

  2. Division des données par le temps — les données sont divisées en ensembles d’entraînement, de validation et de test strictement par ordre chronologique, afin que le modèle ne voie pas de données futures lors de l’entraînement.

  3. Validation en tenant compte de la séquence temporelle :

    • Utilisation de méthodes comme TimeSeriesSplit, qui créent des partitions séquentielles en respectant l’ordre des données.
    • Éviter le mélange aléatoire (shuffle), car cela viole la structure temporelle.
  4. Gestion de la saisonnalité et des tendances — lors de la création de caractéristiques, prendre en compte les caractéristiques temporelles (jour de la semaine, heure, jours fériés).

  5. Gestion des valeurs manquantes et des anomalies — un prétraitement correct est crucial, car les séries temporelles sont sensibles à ces distorsions.

Exemple de division des données :

import pandas as pd
from sklearn.model_selection import TimeSeriesSplit

donnees = pd.read_csv('timeseries.csv', parse_dates=['date'])
donnees = donnees.sort_values('date')

# Division en train et test par date
train = donnees[donnees['date'] < '2023-01-01']
test = donnees[donnees['date'] >= '2023-01-01']

# TimeSeriesSplit pour la validation croisée
tscv = TimeSeriesSplit(n_splits=5)
for train_index, val_index in tscv.split(train):
    train_fold = train.iloc[train_index]
    val_fold = train.iloc[val_index]
    # entraînement et validation du modèle

Ainsi, la clé est de préserver l’ordre chronologique et d’éviter toute fuite d’informations futures vers le passé.