Entraîner un modèle de prévision de séries chronologiques (GeoAI)

Synthèse

Entraîne un modèle de prévision de séries chronologiques basé sur le Deep Learning avec des données chronologiques issues d’un cube spatio-temporel. Le modèle entraîné peut être utilisé pour prévoir les valeurs de chaque emplacement d’un cube spatio-temporel à l’aide de l’outil Forecast Using Time Series Model (Prévision avec un modèle de série chronologique).

Les données des séries chronologiques peuvent suivre diverses tendances et avoir plusieurs niveaux de saisonnalité. Les modèles traditionnels de prévision des séries chronologiques basés sur des approches statistiques fonctionnent différemment selon les tendances et modèles de saisonnalité des données. Les modèles de Deep Learning sont parfaitement capables d’apprendre et peuvent fournir des résultats pour différents types de séries chronologiques, à condition que le volume de données d’entraînement soit suffisant.

Cet outil entraîne les modèles de prévision des séries chronologiques à l’aide de divers modèles basés sur le Deep Learning, tels que Fully Connected Network (FCN), Long Short-Term Memory (LSTM), InceptionTime, ResNet et ResCNN. Ces modèles prennent en charge les séries chronologiques multivariées, dans lesquelles le modèle apprend à prévoir les valeurs futures à partir de plusieurs variables dépendantes. Le modèle entraîné est enregistré sous forme de fichier de paquetage Deep Learning (.dlpk) et peut être utilisé pour prévoir les valeurs futures à l’aide de l’outil Forecast Using Time Series Model (Prévision avec un modèle de série chronologique).

En savoir plus sur le fonctionnement des modèles de prévision de séries chronologiques

Utilisation

  • Vous devez installer la structure de Deep Learning correcte pour Python dans ArcGIS AllSource.

    Découvrez comment installer des structures de Deep Learning pour ArcGIS

  • Cet outil accepte les données netCDF créées par les outils Create Space Time Cube By Aggregating Points (Créer un cube spatio-temporel en agrégeant des points), Create Space Time Cube From Defined Locations (Créer un cube spatio-temporel à partir d’emplacements définis), Create Space Time Cube from Multidimensional Raster Layer (Créer un cube spatio-temporel à partir d’une couche raster multidimensionnelle) et Subset Space Time Cube (Subdiviser un cube spatio-temporel).

  • Par rapport aux autres outils de prévision du jeu d’outils de prévision des séries chronologiques, cet outil utilise des modèles de prévision des séries chronologiques basés sur le Deep Learning. Les modèles de Deep Learning sont parfaitement capables d’apprendre et conviennent aux séries chronologiques qui suivent des tendances complexes et sont difficiles à modéliser avec de simples fonctions mathématiques. Toutefois, ils requièrent un volume de données d’entraînement plus important pour apprendre de telles tendances complexes et utilisent davantage de ressources de calcul pour l’entraînement et l’inférence. Un processeur graphique est recommandé pour utiliser cet outil.

  • Pour exécuter cet outil avec un processeur graphique, définissez l’environnement Processor Type (Type de processeur) sur GPU (GPU). Si vous disposez de plusieurs GPU, indiquez l’ID de GPU.

  • Cet outil permet de modéliser les séries aussi bien univariées que multivariées. Si le cube spatio-temporel possède d’autres variables associées à la variable en cours de prévision, ces variables peuvent être incluses comme variables explicatives pour améliorer la prévision.

  • La prévision de séries chronologiques univariées est estimée exclusivement à l’aide de la méthode en une étape, qui est également la méthode par défaut.

  • La prévision de séries chronologiques multivariées peut être utilisée avec deux approches différentes ; la prévision en une étape et la prévision en plusieurs étapes. Le paramètre Multi-Step (Plusieurs étapes) devient actif si plusieurs variables d’entraînement explicatives sont sélectionnées.

  • Lors de la méthode en une étape, le modèle peut être mis à jour avec de nouvelles données à chaque intervalle temporel, ce qui est particulièrement adapté aux applications en temps réel. Toutefois, le modèle étant mis à jour à chaque intervalle temporel, les erreurs de prévision peuvent s’accumuler dans le temps et les prévisions à long termes, devenir moins précises. Si une prévision en plusieurs étapes est utilisée, le modèle prévoit plusieurs points de données futurs au-delà de l’intervalle temporel actuel. Par exemple, si l’objectif est de prévoir les 20 prochains intervalles temporels, le modèle génère immédiatement 20 prévisions consécutives. La prévision en plusieurs étapes permet au modèle de prendre en compte une vue plus vaste des séries chronologiques et de capturer ainsi des tendances et modèles à long terme de manière plus efficace. Le modèle prévoyant plusieurs intervalles temporels d’avance, le potentiel d’accumulation des erreurs est réduit et les prévisions à long terme sont donc plus précises. Toutefois, comme le modèle prévoit immédiatement plusieurs intervalles temporels, il risque de ne pas être aussi agile pour s’adapter aux modifications de données en temps réel. Le choix entre ces deux approches dépend des exigences spécifiques et des caractéristiques de la tâche de prévision des séries chronologiques.

  • Le paramètre Sequence Length (Longueur de séquence) a un impact sur le résultat d’un modèle de prévision de séries chronologiques et peut être défini comme le nombre d’intervalles temporels passés à utiliser en entrée pour prévoir le prochain intervalle temporel. Si la longueur de séquence est n, le modèle utilise les n derniers intervalles temporels en entrée pour prévoir le prochain intervalle temporel. La valeur de ce paramètre ne peut pas être supérieure au nombre total d’intervalles temporels en entrée qui restent après l’exclusion des intervalles temporels de validation.

  • Plutôt que de créer un modèle de prévision indépendant à chaque emplacement du cube spatio-temporel, cet outil entraîne un unique modèle de prévision global qui utilise les données d’entraînement de chaque emplacement. Ce modèle global est utilisé pour prévoir les valeurs futures à chacun des emplacements à l’aide de l’outil Forecast Using Time Series Model (Prévision avec un modèle de série chronologique).

  • La valeur du paramètre Output Features (Entités en sortie) est ajoutée à la fenêtre Contents (Contenu) avec un rendu en fonction du dernier intervalle temporel prévu.

  • Des exemples de cas d’utilisation de cet outil incluent l’entraînement d’un modèle pour prévoir la demande de produits de détail en fonction des données de vente historiques, l’entraînement d’un modèle pour prévoir la propagation des maladies ou l’entraînement d’un modèle pour prévoir la génération d’énergie éolienne en fonction des données météorologiques et de production historiques.

  • Il est important de décider du nombre de pas de temps à exclure pour la validation. Plus le nombre d’intervalles temporels exclus est élevé, moins il en reste pour estimer l’EQM de validation. Si trop peu d’intervalles temporels sont exclus, l’estimation de l’EQM de validation utilise une petite quantité de données et peut être trompeuse. Excluez autant d’intervalles temporels que possible tout en en conservant un nombre suffisant pour estimer l’EQM de validation. Conservez au moins autant d’intervalles temporels pour la validation que le nombre d’intervalles temporels que vous avez l’intention de prévoir si le cube spatio-temporel a suffisamment d’intervalles temporels pour le permettre.

  • Pour en savoir plus sur les exigences relatives à l’exécution de cet outil ainsi que sur les problèmes que vous pouvez rencontrer, consultez la FAQ sur le Deep Learning.

Paramètres

ÉtiquetteExplicationType de données
Données de série chronologique en entrée

Le cube netCDF contient la variable utilisée pour prévoir les intervalles temporels futurs. Le fichier doit comporter l’extension de fichier .nc et doit avoir été créé avec l’outil Create Space Time Cube By Aggregating Points (Créer un cube spatio-temporel en agrégeant des points), Create Space Time Cube From Defined Locations (Créer un cube spatio-temporel à partir d’emplacements définis) ou Create Space Time Cube From Multidimensional Raster Layer (Créer un cube spatio-temporel à partir d’une couche raster multidimensionnelle).

File
Modèle en sortie

Emplacement du dossier en sortie qui va contenir le modèle entraîné. Le modèle entraîné est enregistré comme fichier de paquetage Deep Learning (.dlpk).

Folder
Variable d'analyse

Variable numérique du jeu de données prévue pour les futurs intervalles temporels.

String
Sequence Length (Longueur de séquence)

Nombre d’intervalles temporels précédents utilisés lors de l’entraînement du modèle. Si les données sont saisonnières (cycles répétitifs), indiquez la durée correspondant à une saison.

  • Si le paramètre Multi-Step (Plusieurs étapes) est désactivé, la valeur de ce paramètre doit être inférieure ou égale au nombre total d’intervalles temporels en entrée restants après exclusion de la valeur du paramètre Number Of Time Steps to Exclude for Validation (Nombre d’intervalles temporels à exclure pour la validation).
  • Si le paramètre Multi-Step (Plusieurs étapes) est désactivé, une valeur de 1,5 fois la valeur de Sequence Length (Longueur de séquence) doit être inférieure ou égale au nombre total d’intervalles temporels après exclusion de la valeur du paramètre Number Of Time Steps to Exclude for Validation (Nombre d’intervalles temporels à exclure pour la validation).

Long
Variables d’entraînement explicatives
(Facultatif)

Variables indépendantes des données utilisées pour entraîner le modèle. Cochez la case Categorical (Catégoriel) des variables qui représentent des classes ou des catégories.

Value Table
Nombre maximal d’époques
(Facultatif)

Nombre maximal d’époques pour lequel le modèle sera entraîné. La valeur par défaut est 20.

Long
Number Of Time Steps to Exclude for Validation (Nombre d’intervalles temporels à exclure pour la validation)
(Facultatif)

Nombre d’intervalles temporels exclus pour la validation. Par exemple, si une valeur de 14 est spécifiée, les 14 dernières lignes du bloc de données sont utilisées comme données de validation. La valeur par défaut est de 10 % du nombre total d’intervalles temporels. Idéalement, elle ne doit pas être inférieure à 5 % du nombre total d’intervalles temporels dans le cube temporel en entrée

  • Si le paramètre Multi-Step (Plusieurs étapes) est désactivé, cette valeur de paramètre doit être inférieure à 25 % du nombre total d’enregistrements dans le cube spatio-temporel en entrée.
  • Si le paramètre Multi-Step (Plusieurs étapes) est activé, cette valeur de paramètre doit être inférieure ou égale à la moitié de la valeur du paramètre Sequence Length (Longueur de séquence).

Long
Type de modèle
(Facultatif)

Spécifie l’architecture de modèle utilisée pour entraîner le modèle.

  • InceptionTimeArchitecture InceptionTime utilisée pour entraîner le modèle. Il s’agit de l’option par défaut.
  • ResNetArchitecture ResNet utilisée pour entraîner le modèle.
  • ResCNNArchitecture ResCNN utilisée pour entraîner le modèle.
  • FCNArchitecture FCN utilisée pour entraîner le modèle.
  • LSTMArchitecture LSTM utilisée pour entraîner le modèle.
  • TimeSeriesTransformerArchitecture TimeSeriesTransformer utilisée pour entraîner le modèle.
String
Taille de lot
(Facultatif)

Nombre d’échantillons traités simultanément. La valeur par défaut est de 64.

Selon le processeur graphique de l’ordinateur, ce nombre peut devenir 8, 16, 32, 64, etc.

Long
Arguments du modèle
(Facultatif)

Arguments de modèle supplémentaires utilisés en fonction de chaque modèle. Ces arguments peuvent être utilisés pour ajuster la complexité et la taille du modèle. Pour comprendre l’architecture du modèle, les arguments de modèle pris en charge et leur valeur par défaut, reportez-vous à la rubrique Fonctionnement des modèles de prévision de séries chronologiques.

Value Table
Stop training when model no longer improves (Terminer l’entraînement lorsque le modèle ne s’améliore plus)
(Facultatif)

Indique si l’entraînement du modèle s’arrête lorsque la perte de validation n’enregistre pas d’amélioration après cinq époques consécutives.

  • Activé : l’entraînement du modèle s’arrête lorsque la perte de validation n’enregistre pas d’amélioration après cinq époques consécutives. Il s’agit de l’option par défaut.
  • Désactivé : l’entraînement du modèle continue jusqu’à ce que le nombre maximal d’époques ait été atteint.

Boolean
Classe d’entités en sortie
(Facultatif)

Classe d’entités en sortie de tous les emplacements du cube spatio-temporel avec les valeurs prévues stockées sous forme de champs. La classe d’entités est créée à l’aide de la prévision du modèle entraîné sur le jeu de données de validation. La sortie affiche la prévision de l’intervalle temporel final et contient des diagrammes contextuels représentant la prévision de séries chronologiques sur le jeu de validation.

Feature Class
Cube en sortie
(Facultatif)

Cube spatio-temporel en sortie (fichier .nc) contenant les valeurs du cube spatio-temporel en entrée avec les valeurs prévues pour les intervalles temporels de validation correspondants remplacés.

File
Multi-Step (Plusieurs étapes)
(Facultatif)

Indique si une approche en une ou plusieurs étapes est utilisée pour entraîner le modèle de prévision de séries chronologiques multivariées.

  • Activé : l’entraînement du modèle utilise une approche en plusieurs étapes.
  • Désactivé : l’entraînement du modèle utilise une approche traditionnelle en une étape. Il s’agit de l’option par défaut.

Boolean

arcpy.geoai.TrainTimeSeriesForecastingModel(in_cube, out_model, analysis_variable, sequence_length, {explanatory_variables}, {max_epochs}, {validation_timesteps}, {model_type}, {batch_size}, {arguments}, {early_stopping}, {out_features}, {out_cube}, {multistep})
NomExplicationType de données
in_cube

Le cube netCDF contient la variable utilisée pour prévoir les intervalles temporels futurs. Le fichier doit comporter l’extension de fichier .nc et doit avoir été créé avec l’outil Create Space Time Cube By Aggregating Points (Créer un cube spatio-temporel en agrégeant des points), Create Space Time Cube From Defined Locations (Créer un cube spatio-temporel à partir d’emplacements définis) ou Create Space Time Cube From Multidimensional Raster Layer (Créer un cube spatio-temporel à partir d’une couche raster multidimensionnelle).

File
out_model

Emplacement du dossier en sortie qui va contenir le modèle entraîné. Le modèle entraîné est enregistré comme fichier de paquetage Deep Learning (.dlpk).

Folder
analysis_variable

Variable numérique du jeu de données prévue pour les futurs intervalles temporels.

String
sequence_length

Nombre d’intervalles temporels précédents utilisés lors de l’entraînement du modèle. Si les données sont saisonnières (cycles répétitifs), indiquez la durée correspondant à une saison.

  • Si la valeur du paramètre multistep est False, la valeur de ce paramètre doit être inférieure ou égale au nombre total d’intervalles temporels en entrée restants après exclusion de la valeur du paramètre validation_timesteps.
  • Si la valeur du paramètre multistep est True, une valeur de 1,5 fois la valeur de sequence_length doit être inférieure ou égale au nombre total d’intervalles temporels après exclusion de la valeur du paramètre validation_timesteps.

Long
explanatory_variables
[explanatory_variables,...]
(Facultatif)

Variables indépendantes des données utilisées pour entraîner le modèle. Utilisez une valeur True après les variables qui représentent des classes ou des catégories.

Value Table
max_epochs
(Facultatif)

Nombre maximal d’époques pour lequel le modèle sera entraîné. La valeur par défaut est 20.

Long
validation_timesteps
(Facultatif)

Nombre d’intervalles temporels exclus pour la validation. Par exemple, si une valeur de 14 est spécifiée, les 14 dernières lignes du bloc de données sont utilisées comme données de validation. La valeur par défaut est de 10 % du nombre total d’intervalles temporels. Idéalement, elle ne doit pas être inférieure à 5 % du nombre total d’intervalles temporels dans le cube temporel en entrée

  • Si la valeur du paramètre multistep est False, cette valeur de paramètre doit être inférieure à 25 % du nombre total d’enregistrements dans le cube spatio-temporel en entrée.
  • Si la valeur du paramètre multistep est True, cette valeur de paramètre doit être inférieure ou égale à la moitié de la valeur du paramètre sequence_length.

Long
model_type
(Facultatif)

Spécifie l’architecture de modèle utilisée pour entraîner le modèle.

  • InceptionTimeArchitecture InceptionTime utilisée pour entraîner le modèle. Il s’agit de l’option par défaut.
  • ResNetArchitecture ResNet utilisée pour entraîner le modèle.
  • ResCNNArchitecture ResCNN utilisée pour entraîner le modèle.
  • FCNArchitecture FCN utilisée pour entraîner le modèle.
  • LSTMArchitecture LSTM utilisée pour entraîner le modèle.
  • TimeSeriesTransformerArchitecture TimeSeriesTransformer utilisée pour entraîner le modèle.
String
batch_size
(Facultatif)

Nombre d’échantillons traités simultanément. La valeur par défaut est de 64.

Selon le processeur graphique de l’ordinateur, ce nombre peut devenir 8, 16, 32, 64, etc.

Long
arguments
[arguments,...]
(Facultatif)

Arguments de modèle supplémentaires utilisés en fonction de chaque modèle. Ces arguments peuvent être utilisés pour ajuster la complexité et la taille du modèle. Pour comprendre l’architecture du modèle, les arguments de modèle pris en charge et leur valeur par défaut, reportez-vous à la rubrique Fonctionnement des modèles de prévision de séries chronologiques.

Value Table
early_stopping
(Facultatif)

Indique si l’entraînement du modèle s’arrête lorsque la perte de validation n’enregistre pas d’amélioration après cinq époques consécutives.

  • TRUEL’entraînement du modèle s’arrête lorsque la perte de validation n’enregistre pas d’amélioration après cinq époques consécutives. Il s’agit de l’option par défaut.
  • FALSEL’entraînement du modèle continue jusqu’à ce que le nombre maximal d’époques soit atteint.
Boolean
out_features
(Facultatif)

Classe d’entités en sortie de tous les emplacements du cube spatio-temporel avec les valeurs prévues stockées sous forme de champs. La classe d’entités est créée à l’aide de la prévision du modèle entraîné sur le jeu de données de validation. La sortie affiche la prévision de l’intervalle temporel final et contient des diagrammes contextuels représentant la prévision de séries chronologiques sur le jeu de validation.

Feature Class
out_cube
(Facultatif)

Cube spatio-temporel en sortie (fichier .nc) contenant les valeurs du cube spatio-temporel en entrée avec les valeurs prévues pour les intervalles temporels de validation correspondants remplacés.

File
multistep
(Facultatif)

Indique si une approche en une ou plusieurs étapes est utilisée pour entraîner le modèle de prévision de séries chronologiques multivariées.

  • TRUEL’entraînement du modèle utilise une approche en plusieurs étapes.
  • FALSEL’entraînement du modèle utilise une approche traditionnelle en une étape. Il s’agit de l’option par défaut.
Boolean

Exemple de code

Exemple d’utilisation de la fonction TrainTimeSeriesForecastingModel (script autonome)

Cet exemple montre comment utiliser la fonction TrainTimeSeriesForecastingModel.

# Name: TrainTimeSeriesForecastingModel.py
# Description: Train a time series model on space-time cube data with
# different AI models.
  
# Import system modules                                                                                                                                                                                                                                                                                                                    
import arcpy
import os

# Set local variables
datapath  = "path_to_data_for_forecasting" 
out_path = "path_to_gdb_for_forecasting"

model_path = os.path.join(out_path, "model")
in_cube = os.path.join(datapath, "test_data")
out_features = os.path.join(out_path, "forecasted_feature.gdb", "forecasted")

# Run TrainTimeSeriesForecastingModel
arcpy.geoai.TrainTimeSeriesForecastingModel(
        in_cube,
        model_path,
        "CONSUMPTION",
        12,
        None,
        20,
        2,
        "InceptionTime",
        64,
        None,
        True,
        out_features
    )