Question: Je veux être sûr de quelque chose, l’utilisation de la validation croisée à plis multiples avec des séries chronologiques est-elle simple, ou faut-il être particulièrement attentif avant de l’utiliser?
Contexte: Je modélise une série chronologique sur 6 ans (avec une chaîne semi-markovienne), avec un échantillon de données toutes les 5 min. Pour comparer plusieurs modèles, j'utilise une validation croisée de 6 fois en séparant les données en 6 ans. Mes ensembles de formation (pour calculer les paramètres) ont une durée de 5 ans et les ensembles de test ont une longueur de 1. année. Je ne prends pas en compte l'ordre des temps, mes différents sets sont:
- fold 1: entraînement [1 2 3 4 5], test [6]
- fold 2: entraînement [1 2 3 4 6], test [5]
- fold 3: entraînement [1 2 3 5 6], test [4]
- fold 4: entraînement [1 2 4 5 6], test [3]
- fold 5: entraînement [1 3 4 5 6], test [2]
- pli 6: entraînement [2 3 4 5 6], test [1].
Je fais l'hypothèse que chaque année sont indépendantes les unes des autres. Comment puis-je vérifier cela? Existe-t-il une référence montrant l'applicabilité de la validation croisée à plis multiples avec des séries chronologiques?
la source
Réponses:
Les séries chronologiques (ou d'autres données intrinsèquement ordonnées) peuvent être problématiques pour la validation croisée. Si une certaine tendance apparaît la troisième année et persiste pendant les années 4 à 6, votre modèle le détectera, même s'il ne faisait pas partie des années 1 et 2.
Une approche qui est parfois plus fondée sur des principes pour les séries chronologiques est l’enchaînement, dans lequel votre procédure ressemblerait à ceci:
Cela permet de modéliser avec plus de précision la situation que vous rencontrerez au moment de la prévision, vous permettant de modéliser des données antérieures et de prévoir des données prospectives. Cela vous donnera également une idée de la dépendance de votre modélisation à la taille des données.
la source
La méthode que j'utilise pour la validation croisée de mon modèle de série chronologique est la validation croisée sur une base continue. Commencez avec un petit sous-ensemble de données à des fins de formation, prévoyez les points de données ultérieurs, puis vérifiez la précision des points de données prévus. Les mêmes points de données prévus sont ensuite inclus dans le prochain jeu de données d'apprentissage et les points de données suivants sont prévus.
Pour rendre les choses intuitives, voici une image pour la même chose:
Un code R équivalent serait:
la source
La manière "canonique" de procéder à une validation croisée de séries temporelles (du moins telle que décrite par @Rob Hyndman) consiste à "parcourir" l'ensemble de données.
c'est à dire:
Fondamentalement, votre jeu d’entraînement ne doit pas contenir d’informations postérieures au jeu de test.
la source
Il n’ya rien de mal à utiliser des blocs de données "futures" pour la validation croisée de séries chronologiques dans la plupart des situations. Dans la plupart des situations, je me réfère à des modèles pour des données stationnaires, qui sont les modèles que nous utilisons généralement. Par exemple, lorsque vous adaptez un , avec à une série, vous prenez différences de la série et adaptez un modèle de données stationnaires aux résidus.d > 0 dARIMA(p,d,q) d>0 d
Pour que la validation croisée fonctionne comme un outil de sélection de modèle, vous devez avoir une indépendance approximative entre la formation et les données de test. Le problème avec les données chronologiques est que les points de données adjacents sont souvent très dépendants, de sorte que la validation croisée standard échoue. La solution consiste à laisser un espace entre l’échantillon à tester et les échantillons d’entraînement, des deux côtés de l’échantillon . La raison pour laquelle vous devez également laisser un vide avant l'échantillon de test est que la dépendance est symétrique lorsque vous avancez ou reculez dans le temps (pensez à la corrélation).
Cette approche est appelée validation croisée (quitter out, supprimer observations de chaque côté de l'échantillon d'essai) et est décrit dans le présent document. Dans votre exemple, cela ressemblerait à ceci:v hhv v h
Où h indique que h, les observations de l'échantillon d'apprentissage sont supprimées de ce côté.
la source
Comme l'a commenté @thebigdog, "Sur l'utilisation de la validation croisée pour l'évaluation des prédicteurs de séries temporelles" par Bergmeir et al. discute de la validation croisée dans le contexte de séries chronologiques stationnaires et détermine que le chaînage en aval (proposé par d'autres répondants) est inutile. Remarque, le chaînage en aval s'appelle Evaluation du dernier bloc dans cet article:
" Evaluation des modèles de prévision de série chronologique: une étude empirique sur les méthodes d'estimation de la performance " de Cerqueira et al. est d'accord avec cette évaluation. Cependant, pour les séries chronologiques non stationnaires, ils recommandent d'utiliser une variante de Hold-Out, appelée Rep-Holdout. Dans Rep-Holdout, un point
a
est choisi dans la série temporelleY
pour marquer le début des données de test. Le pointa
est déterminé à être dans une fenêtre. Ceci est illustré dans la figure ci-dessous:Cet article est long et teste de manière exhaustive presque toutes les autres méthodes mentionnées dans les réponses à cette question avec du code accessible au public . Cela inclut la revendication de @Mathias Schmidtblaicher d'inclure des lacunes avant et après les données de test. En outre, j'ai seulement résumé le papier. La conclusion du document implique un arbre de décision pour évaluer les modèles de séries chronologiques!
la source