Créez une tâche AutoML pour la prévision de séries chronologiques à l'aide du API - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez une tâche AutoML pour la prévision de séries chronologiques à l'aide du API

La prévision en machine learning fait référence au processus de prédiction de résultats ou de tendances futurs sur la base de schémas et de données historiques. En analysant les données de séries temporelles passées et en identifiant les schémas sous-jacents, les algorithmes de machine learning peuvent effectuer des prédictions et fournir des renseignements précieux sur les comportements futurs. En matière de prévision, l'objectif est de développer des modèles capables de saisir avec précision la relation entre les variables d'entrée et la variable cible au fil du temps. Cela implique l'examen de divers facteurs tels que les tendances, la saisonnalité et d'autres schémas pertinents au sein des données. Les informations collectées sont ensuite utilisées pour entraîner un modèle de machine learning. Le modèle entraîné est capable de générer des prédictions en prenant de nouvelles données d'entrée et en appliquant les schémas et les relations appris. Il peut fournir des prévisions pour un large éventail de cas d'utilisation, tels que des prévisions de ventes, des tendances boursières, des prévisions météorologiques, des prévisions de la demande, etc.

Les instructions suivantes montrent comment créer une tâche Amazon SageMaker Autopilot en tant qu'expérience pilote pour les types de problèmes de prévision de séries chronologiques à l'aide de Reference. SageMaker API

Note

Les tâches telles que la classification du texte et des images, les prévisions de séries chronologiques et le réglage précis de grands modèles linguistiques sont exclusivement disponibles via la version 2 de l'AutoML. REST API Si le langage de votre choix est Python, vous pouvez vous référer AWS SDK for Python (Boto3)SDKdirectement à MLV2l'objet Auto d'Amazon SageMaker Python.

Les utilisateurs qui préfèrent la commodité d'une interface utilisateur peuvent utiliser Amazon SageMaker Canvas pour accéder à des modèles préentraînés et à des modèles de base d'IA génératifs, ou créer des modèles personnalisés adaptés à des textes spécifiques, à une classification d'images, à des besoins de prévision ou à une IA générative.

Vous pouvez créer une expérience de prévision de séries chronologiques sur pilote automatique par programmation en appelant le dans n'importe quelle langue prise CreateAutoMLJobV2APIen charge par Amazon Autopilot ou le. SageMaker AWS CLI

Pour plus d'informations sur la façon dont cette API action se traduit par une fonction dans la langue de votre choix, consultez la section Voir aussi de CreateAutoMLJobV2 et choisissez unSDK. À titre d'exemple, pour les utilisateurs de Python, consultez la syntaxe complète des demandes de create_auto_ml_job_v2 dans le kit AWS SDK for Python (Boto3).

Autopilot entraîne plusieurs modèles candidats avec vos séries temporelles cibles, puis sélectionne un modèle de prévision optimal pour une métrique d'objectif donnée. Lorsque vos modèles candidats ont été entraînés, vous pouvez trouver les meilleures métriques de candidat dans la réponse à DescribeAutoMLJobV2, dans BestCandidate.

Les sections suivantes définissent les paramètres de demande d'entrée obligatoires et facultatifs CreateAutoMLJobV2 API utilisés dans les prévisions de séries chronologiques.

Note

Reportez-vous au carnet de prévisions de séries chronologiques avec Amazon SageMaker Autopilot pour un exemple pratique et concret de prévisions de séries chronologiques. Dans ce bloc-notes, vous utilisez Amazon SageMaker Autopilot pour entraîner un modèle de série chronologique et produire des prédictions à l'aide du modèle entraîné. Le bloc-notes fournit des instructions pour récupérer un jeu de données prêt à l'emploi de données historiques tabulaires sur Amazon S3.

Prérequis

Avant d'utiliser le pilote automatique pour créer une expérience de prévision de séries chronologiques dans SageMaker, assurez-vous de :

  • Préparez votre jeu de données de séries temporelles. La préparation d'un jeu de données implique de collecter les données pertinentes provenant de diverses sources, de les nettoyer et de les filtrer pour éliminer le bruit et les incohérences, et de les organiser dans un format structuré. Consultez Format des jeux de données de séries temporelles et méthodes de remplissage des valeurs manquantes pour en apprendre davantage sur les exigences relatives aux formats de séries temporelles dans Autopilot. Vous pouvez éventuellement compléter votre jeu de données avec le calendrier des jours fériés du pays de votre choix afin de capturer les schémas associés. Pour plus d'informations sur les calendriers des jours fériés, consultez Calendriers des fêtes nationales.

    Note

    Nous vous recommandons de fournir au moins 3 à 5 points de données historiques pour chaque point de données futur que vous souhaitez prévoir. Par exemple, pour prévoir 7 jours à l'avance (horizon d'une semaine) sur la base de données quotidiennes, entraînez votre modèle sur un minimum de 21 à 35 jours de données historiques. Assurez-vous de fournir suffisamment de données pour saisir les tendances saisonnières et récurrentes.

  • Placez vos données de séries temporelles dans un compartiment Amazon S3.

  • Accordez un accès complet au compartiment Amazon S3 contenant vos données d'entrée pour le rôle SageMaker d'exécution utilisé pour exécuter votre expérience. Une fois cela fait, vous pouvez utiliser ce rôle ARN d'exécution dans les requêtes du pilote automatiqueAPI.

    • Pour plus d'informations sur la récupération de votre rôle SageMaker d'exécution, consultezObtenez votre rôle d'exécution.

    • Pour plus d'informations sur l'octroi à votre rôle SageMaker d'exécution des autorisations d'accès à un ou plusieurs compartiments spécifiques dans Amazon S3, consultez Ajouter des autorisations Amazon S3 supplémentaires à un rôle SageMaker d'exécution dansCréer un rôle d'exécution.

Paramètres requis

Lorsque vous appelez CreateAutoMLJobV2 pour créer une expérience Autopilot de prévision de séries temporelles, vous devez fournir les valeurs suivantes :

  • Un paramètre AutoMLJobName pour spécifier le nom de votre tâche. Le nom doit être de type string et doit avoir une longueur minimale de 1 caractère et une longueur maximale de 32.

  • Au moins un élément AutoMLJobChannel dans AutoMLJobInputDataConfig dans lequel vous spécifiez le nom du compartiment Amazon S3 qui contient vos données. Vous pouvez éventuellement spécifier les types de contenu (CSVou de fichiers Parquet) et de compression (GZip).

  • Un élément AutoMLProblemTypeConfig de type TimeSeriesForecastingJobConfig pour configurer les paramètres de votre tâche de prévision de séries temporelles. Vous devez notamment spécifier :

    • La fréquence des prédictions, qui fait référence à la granularité souhaitée (horaire, quotidienne, mensuelle, etc.) de vos prévisions.

      Les intervalles valides sont un entier suivi de Y (année), M (mois), W (semaine), D (jour), H (heure) et min (minute). Par exemple, 1D indique chaque jour et 15min indique toutes les 15 minutes. La valeur d'une fréquence ne doit pas chevaucher la fréquence supérieure suivante. Par exemple, vous devez utiliser une fréquence de 1H à la place de 60min.

      Les valeurs valides pour chaque fréquence sont les suivantes :

      • Minute : 1 à 59

      • Heure : 1 à 23

      • Jour : 1 à 6

      • Semaine : 1 à 4

      • Mois : 1 à 11

      • Année : 1

    • L'horizon des prédictions de votre prévision, qui fait référence au nombre de pas temporels prédits par le modèle. L'horizon de prévision est également appelé longueur de prédiction. L'horizon de prévision maximal est le moins élevé des 500 pas temporels ou 1/4 des pas temporels figurant dans le jeu de données.

    • A TimeSeriesConfigdans lequel vous définissez le schéma de votre jeu de données pour mapper les en-têtes de colonne à vos prévisions en spécifiant :

      • Un élément TargetAttributeName : colonne contenant les données historiques du champ cible à prévoir.

      • Un élément TimestampAttributeName : colonne qui contient un point dans le temps auquel la valeur cible d'un élément donné est enregistrée.

      • Un élément ItemIdentifierAttributeName : colonne qui contient les identificateurs d'articles pour lesquels vous souhaitez prédire la valeur cible.

    Voici un exemple de ces paramètres de demande. Dans cet exemple, vous configurez une prévision quotidienne de la quantité attendue ou du niveau de demande attendu d'articles spécifiques sur une période de 20 jours.

    "AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },
  • Un élément OutputDataConfig pour spécifier le chemin de sortie Amazon S3 pour stocker les artefacts de votre tâche AutoML.

  • A RoleArn pour spécifier ARN le rôle utilisé pour accéder à vos données. Vous pouvez utiliser le ARN rôle d'exécution auquel vous avez accordé l'accès à vos données.

Tous les autres paramètres sont facultatifs. Par exemple, vous pouvez définir des quantiles de prévision spécifiques, choisir une méthode de remplissage des valeurs manquantes dans le jeu de données ou définir comment agréger les données qui ne sont pas alignées sur la fréquence des prévisions. Pour découvrir comment définir ces paramètres supplémentaires, consultez Paramètres facultatifs.

Paramètres facultatifs

Les sections suivantes fournissent des détails sur certains paramètres facultatifs que vous pouvez transmettre à votre tâche AutoML de prévision de séries temporelles.

Par défaut, votre tâche de pilote automatique entraîne une liste prédéfinie d'algorithmes sur votre jeu de données. Vous pouvez toutefois fournir un sous-ensemble de la sélection d'algorithmes par défaut.

Pour les prévisions de séries chronologiques, vous devez choisir TimeSeriesForecastingJobConfig le type deAutoMLProblemTypeConfig.

Ensuite, vous pouvez spécifier un tableau de sélectionnés AutoMLAlgorithms dans l'AlgorithmsConfigattribut de CandidateGenerationConfig.

Voici un exemple d'AlgorithmsConfigattribut répertoriant exactement trois algorithmes (« cnn-qr », « prophet », « arima ») dans son champ. AutoMLAlgorithms

{ "AutoMLProblemTypeConfig": { "TimeSeriesForecastingJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["cnn-qr", "prophet", "arima"]} ] }, }, }, }

Pour la liste des algorithmes disponibles pour les prévisions de séries chronologiques, voir AutoMLAlgorithms. Pour plus d'informations sur chaque algorithme, consultez Prise en charge des algorithmes pour les prévisions de séries temporelles.

Autopilot entraîne 6 modèles candidats avec vos séries temporelles cibles, puis combine ces modèles à l'aide d'une méthode d'assemblage par empilement pour créer un modèle de prévision optimal pour une métrique d'objectif donnée. Chaque modèle de prévision Autopilot génère une prévision probabiliste en produisant des prévisions aux quantiles compris entre P1 et P99. Ces quantiles sont utilisés pour tenir compte de l'incertitude des prévisions. Par défaut, des prévisions seront générées pour les valeurs 0,1 (p10), 0,5 (p50) et 0,9 (p90). Vous pouvez choisir de spécifier vos propres quantiles.

Dans Autopilot, vous pouvez spécifier jusqu'à cinq quantiles de prévision compris entre 0,01 (p1) et 0,99 (p99), par incréments de 0,01 ou plus dans l'attribut de. ForecastQuantiles TimeSeriesForecastingJobConfig

Dans l'exemple suivant, vous configurez une prévision quotidienne des 10e, 25e, 50e, 75e et 90e percentiles pour la quantité attendue ou le niveau de demande attendu d'articles spécifiques sur une période de 20 jours.

"AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "ForecastQuantiles": ["p10", "p25", "p50", "p75", "p90"], "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },

Pour créer un modèle de prévision (également appelé meilleur modèle candidat issu de votre expérience), vous devez spécifier une fréquence de prévision. La fréquence de prévision détermine la fréquence des prédictions figurant dans vos prévisions. Par exemple, les prévisions de ventes mensuelles. Le meilleur modèle Autopilot peut générer des prévisions pour des fréquences de données supérieures à la fréquence à laquelle vos données sont enregistrées.

Pendant l'entraînement, Autopilot agrège toutes les données qui ne s'alignent pas sur la fréquence de prévision que vous spécifiez. Par exemple, vous pouvez disposer de certaines données quotidiennes mais spécifier une fréquence de prévision hebdomadaire. Autopilot aligne les données quotidiennes en fonction de la semaine à laquelle elles appartiennent. Autopilot les combine ensuite en un seul enregistrement pour chaque semaine.

Lors de l'agrégation, la méthode de transformation par défaut consiste à additionner les données. Vous pouvez configurer l'agrégation lorsque vous créez votre tâche AutoML dans l'Transformationsattribut de. TimeSeriesForecastingJobConfig Les méthodes d'agrégation prises en charge sont sum (par défaut) avg, first, min, max. L'agrégation n'est prise en charge que pour la colonne cible.

Dans l'exemple suivant, vous configurez l'agrégation pour calculer la moyenne des prévisions promotionnelles individuelles afin de fournir les valeurs de prévision agrégées finales.

"Transformations": { "Aggregation": { "promo": "avg" } }

Autopilot propose diverses méthodes de remplissage pour gérer les valeurs manquantes dans la colonne cible et les autres colonnes numériques de vos jeux de données de séries temporelles. Pour en savoir plus sur la liste des méthodes de remplissage prises en charge et leur logique de remplissage disponible, consultez Gestion des valeurs manquantes.

Vous configurez votre stratégie de remplissage dans l'Transformationsattribut de TimeSeriesForecastingJobConfiglors de la création de votre tâche AutoML.

Pour définir une méthode de remplissage, vous devez fournir une paire clé-valeur :

  • La clé est le nom de la colonne pour laquelle vous souhaitez spécifier la méthode de remplissage.

  • La valeur associée à la clé est un objet qui définit la stratégie de remplissage pour cette colonne.

Vous pouvez définir plusieurs méthodes de remplissage pour une seule colonne.

Pour définir une valeur spécifique pour la méthode de remplissage, vous devez définir le paramètre de remplissage sur la valeur de méthode de remplissage souhaitée (par exemple "backfill" : "value") et définir la valeur de remplissage réelle dans un paramètre supplémentaire suffixé par « _value ». Par exemple, pour définir backfill sur une valeur de 2, vous devez inclure deux paramètres : "backfill": "value" et "backfill_value":"2".

Dans l'exemple suivant, vous spécifiez la stratégie de remplissage pour la colonne de données incomplète, "price", correspondant aux prix, comme suit : toutes les valeurs manquantes entre le premier point de données d'un article et le dernier sont définies sur 0, après quoi toutes les valeurs manquantes sont remplies avec la valeur 2 jusqu'à la date de fin du jeu de données.

"Transformations": { "Filling": { "price": { "middlefill" : "zero", "backfill" : "value", "backfill_value": "2" } } }

Autopilot produit des métriques de précision pour évaluer les modèles candidats et vous aider à choisir lequel utiliser pour générer des prévisions. Lorsque vous exécutez une expérience de prévision de séries temporelles, vous pouvez choisir AutoML pour laisser Autopilot optimiser le prédicteur pour vous ou choisir manuellement un algorithme pour votre prédicteur.

Par défaut, Autopilot utilise la perte quantile pondérée moyenne. Toutefois, vous pouvez configurer la métrique objective lorsque vous créez votre tâche AutoML dans l'MetricNameattribut A utoMLJob Objective.

Pour obtenir la liste des algorithmes disponibles, consultez Prise en charge des algorithmes pour les prévisions de séries temporelles.

Dans Autopilot, vous pouvez incorporer à vos séries temporelles un jeu de données obtenu par ingénierie des fonctionnalités d'informations sur les fêtes nationales. Autopilot fournit un support natif pour les calendriers des jours fériés de plus de 250 pays. Une fois que vous avez choisi un pays, Autopilot applique le calendrier des jours fériés de ce pays à chaque élément de votre jeu de données pendant l'entraînement. Cela permet au modèle d'identifier les schémas associés à des jours fériés spécifiques.

Vous pouvez activer la fonctionnalité de vacances lorsque vous créez votre tâche AutoML en passant HolidayConfigAttributesun objet à HolidayConfig l'attribut de. TimeSeriesForecastingJobConfig L'objet HolidayConfigAttributes contient l'attribut CountryCode à deux lettres qui détermine le pays du calendrier des fêtes nationales utilisé pour compléter votre jeu de données de séries temporelles.

Reportez-vous à Codes pays pour consulter la liste des calendriers pris en charge et leur code pays correspondant.

Autopilot vous permet de déployer automatiquement votre modèle de prévision sur un point de terminaison. Pour activer le déploiement automatique pour le meilleur modèle candidat d'une tâche AutoML, incluez un élément ModelDeployConfig dans la demande de tâche AutoML. Cela permet de déployer le meilleur modèle sur un SageMaker terminal. Vous trouverez ci-dessous les configurations disponibles pour la personnalisation.

Vous pouvez configurer votre tâche AutoML V2 pour lancer automatiquement une tâche distante sur Amazon EMR Serverless lorsque des ressources de calcul supplémentaires sont nécessaires pour traiter des ensembles de données volumineux. En effectuant une transition fluide vers le mode EMR Serverless lorsque cela est nécessaire, la tâche AutoML peut gérer des ensembles de données qui, autrement, dépasseraient les ressources initialement allouées, sans aucune intervention manuelle de votre part. EMRLe mode Serverless est disponible pour les types de problèmes liés aux tableaux et aux séries chronologiques. Nous recommandons de configurer cette option pour les ensembles de données chronologiques de plus de 30 Go.

Pour permettre à votre tâche AutoML V2 de passer automatiquement à EMR Serverless pour les grands ensembles de données, vous devez fournir un EmrServerlessComputeConfig objet, qui inclut un ExecutionRoleARN champ, à la demande d'entrée de AutoMLComputeConfig la tâche AutoML V2.

ExecutionRoleARNIl s'agit ARN du IAM rôle octroyant à la tâche AutoML V2 les autorisations nécessaires pour exécuter des tâches EMR sans serveur.

Ce rôle doit avoir la relation de confiance suivante :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Et accordez les autorisations pour :

  • Créez, listez et mettez à jour des applications EMR sans serveur.

  • Démarrer, répertorier, obtenir ou annuler des tâches exécutées sur une application EMR sans serveur.

  • Marquez les ressources EMR sans serveur.

  • Transmettez un IAM rôle au service EMR Serverless pour exécution.

    En accordant l'iam:PassRoleautorisation, la tâche AutoML V2 peut assumer temporairement le EMRServerlessRuntimeRole-* rôle et le transmettre au service EMR Serverless. Il s'agit IAM des rôles utilisés par les environnements d'exécution de tâches EMR sans serveur pour accéder à d'autres AWS services et ressources nécessaires pendant l'exécution, tels qu'Amazon S3 pour l'accès aux données, la journalisation, CloudWatch l'accès au catalogue de AWS Glue données ou d'autres services en fonction de vos exigences en matière de charge de travail.

    Consultez la section Rôles d'exécution de Job pour Amazon EMR Serverless pour plus de détails sur les autorisations associées à ces rôles.

La IAM politique définie dans le JSON document fourni accorde les autorisations suivantes :

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EMRServerlessCreateApplicationOperation", "Effect": "Allow", "Action": "emr-serverless:CreateApplication", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessListApplicationOperation", "Effect": "Allow", "Action": "emr-serverless:ListApplications", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessApplicationOperations", "Effect": "Allow", "Action": [ "emr-serverless:UpdateApplication", "emr-serverless:GetApplication" ], "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessStartJobRunOperation", "Effect": "Allow", "Action": "emr-serverless:StartJobRun", "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessListJobRunOperation", "Effect": "Allow", "Action": "emr-serverless:ListJobRuns", "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessJobRunOperations", "Effect": "Allow", "Action": [ "emr-serverless:GetJobRun", "emr-serverless:CancelJobRun" ], "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessTagResourceOperation", "Effect": "Allow", "Action": "emr-serverless:TagResource", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "IAMPassOperationForEMRServerless", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*", "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }