Démarrage (AWS CLI) - Amazon Forecast

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.

Démarrage (AWS CLI)

Dans cet exercice, vous allez utiliser leAWS Command Line Interface (AWS CLI) pour explorer Amazon Forecast. Vous créez un jeu de données Amazon Forecast, vous entraînez un prédicteur et vous utilisez le prédicteur obtenu pour générer une prévision. Avant de commencer, assurez-vous d'avoir un Compte AWS et d'avoir configuré la AWS CLI. Pour plus d'informations, veuillez consulter Configuration.

Note

LesAWS CLI commandes de cet exercice ont été testées sous Linux. Pour plus d'informations sur l'utilisation desAWS CLI commandes sous Windows, consultez la section Spécification des valeurs des paramètres pour leAWS Command Line Interface dans le Guide deAWS Command Line Interface l'utilisateur.

Commencez par créer un ensemble de données et importez-y les données de consommation d'électricité.

Pour créer un ensemble de données Amazon Forecast
  1. Décidez quel domaine et quel type d'ensemble de données sont appropriés.

    Les données de formation que vous importez dans l'ensemble de données influencent votre choix de domaine et de type d'ensembles de données. Alors, nous allons examiner quelques lignes d'exemples de données de consommation d'électricité :

    2014-01-01 01:00:00, 2.53807106598985, client_0 2014-01-01 01:00:00, 23.648648648648624, client_1 2014-01-01 02:00:00, 9.648648648612345, client_0

    Les données sont au format CSV (valeurs séparées par des virgules) et collectées chaque heure (comme indiqué par les horodatages). Il inclut ces colonnes :

    • Colonne 1 — Horodatages indiquant quand la consommation d'électricité a été enregistrée.

    • Colonne 2 — Valeurs de consommation d'électricité par heure (notez que les valeurs d'horodatage augmentent d'heure en heure).

    • Colonne 3 — Valeurs d'identification des clients qui identifient les clients qui consomment de l'électricité.

    Pour ces données, choisissez le domaine et le type d'ensembles de données prédéfinis suivants :

    • Domaine personnalisé : aucun domaine du jeu de données, tel que METRICS, RETAIL ou WEB_TRAFFIC, ne s'applique à ces données. Choisissez donc le domaine personnalisé.

    • Type de série chronologique cible — Les données sont des séries chronologiques car elles permettent de suivre la consommation d'électricité au fil du temps. Elles incluent également la cible pour laquelle nous voulons des prévisions (colonne 2, consommation d'électricité). Par conséquent, choisissez le type d'ensemble de données TARGET_TIME_SERIES.

      Pour comprendre pourquoi vous choisissez ce type, consultez Domaines et types d'ensembles de données prédéfinis.

  2. Déterminez un schéma d'ensembles de données.

    Le type TARGET_TIME_SERIES pour le Domaine CUSTOM nécessite ces champs : timestamp, target_valueet item_id. Letarget_value champ est la cible. Amazon Forecast génère les prévisions pour ce champ.

    Pour mapper les champs obligatoires aux colonnes de vos données, vous créez un schéma. Chaque attribut du schéma est mappé à un champ dans les données.

    Important

    L'ordre des attributs dans le schéma doit correspondre à l'ordre des champs des données de formation.

    { "Attributes":[ { "AttributeName": "timestamp", "AttributeType": "timestamp" }, { "AttributeName": "target_value", "AttributeType": "float" }, { "AttributeName": "item_id", "AttributeType": "string" } ] }

    Vous avez maintenant les informations nécessaires pour créer un ensemble de données et y importer des données.

  3. Créez l'ensemble de données.

    aws forecast create-dataset \ --dataset-name electricity_demand_ds \ --domain CUSTOM \ --dataset-type TARGET_TIME_SERIES \ --data-frequency H \ --schema '{ "Attributes": [ { "AttributeName": "timestamp", "AttributeType": "timestamp" }, { "AttributeName": "target_value", "AttributeType": "float" }, { "AttributeName": "item_id", "AttributeType": "string" } ] }'

    Dans la demande, la valeur de data-frequencyH représente une fréquence de collecte de données horaire. Voici un exemple de réponse.

    { "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds" }

    Pour plus d'informations sur cette opération, consultez CreateDataset.

  4. (Facultatif) Obtenez la description de l'ensemble de données.

    aws forecast describe-dataset \ --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds

    Voici un exemple de réponse.

    { "DatasetName": "electricity_demand_ds", "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "CreationTime": 1564533087.907, "LastModificationTime": 1564533087.907, "Domain": "CUSTOM", "DatasetType": "TARGET_TIME_SERIES", "DataFrequency": "H", "Schema": { ... }, "EncryptionConfig": {}, "Status": "ACTIVE" }
    Note

    L'ordre des paires clé-valeur dans la réponse est arbitraire.

  5. Créez un groupe d'ensembles de données et ajoutez-lui l'ensemble de données. La valeur du paramètre domain doit correspondre à la valeur domain de l'ensemble de données.

    aws forecast create-dataset-group \ --dataset-group-name electricity_ds_group \ --dataset-arns arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \ --domain CUSTOM

    Voici un exemple de réponse.

    { "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group" }

    Pour plus d'informations sur cette opération, consultez CreateDatasetGroup.

  6. (Facultatif) Obtenez la description du groupe d'ensembles de données.

    aws forecast describe-dataset-group \ --dataset-group-arn arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group

    Voici un exemple de réponse.

    { "DatasetGroupName": "electricity_ds_group", "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group", "DatasetArns": [ "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group" ], "Domain": "CUSTOM", "CreationTime": 1564533719.852, "LastModificationTime": 1564533719.852, "Status": "ACTIVE" }
  7. Importez les données d'entraînement à la consommation d'électricité depuis votre compartiment Amazon S3 dans l'ensemble de données. Le rôle IAM que vous fournissez doit être autorisé à lire les données à partir de votre compartiment S3. Pour de plus amples informations sur la création d'un rôle IAM, veuillez consulterCréation d'un rôle IAM pour Amazon Forecast () AWS CLI.

    aws forecast create-dataset-import-job \ --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \ --dataset-import-job-name electricity_ds_import_job \ --data-source '{ "S3Config": { "Path": "s3://bucket/electricityusagedata.csv", "RoleArn": "arn:aws:iam::acct-id:role/Role" } }'

    Voici la syntaxe raccourcie du paramètre data-source.

    --data-source S3Config="{Path='s3://bucket/electricityusagedata.csv',RoleArn='arn:aws:iam::acct-id:role/Role'}"

    Voici un exemple de réponse.

    { "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job" }

    Pour plus d'informations sur cette opération, consultez CreateDatasetImportJob.

  8. Vérifier le statut d'importation.

    aws forecast describe-dataset-import-job \ --dataset-import-job-arn arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job

    Voici un exemple de réponse.

    { "DatasetImportJobName": "electricity_ds_import_job", "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job", "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "DataSource": { "S3Config": { "Path": "s3://bucket/electricityusagedata.csv", "RoleArn": "arn:aws:iam::acct-id:role/ForecastRole" } }, "DataSize": 0.14639010466635227, "TimeStampFormat": "yyyy-MM-dd HH:mm:ss", "CreationTime": 1564537011.114, "LastModificationTime": 1564537028.223, "Status": "CREATE_IN_PROGRESS" }

    Lorsque toutes les données ont été importées, l'état passe à ACTIVE et la réponse inclut des statistiques pour les données, comme illustré dans l'exemple suivant.

    { "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds", "Status": "ACTIVE", "FieldStatistics": { "date": { "Min": "2014-01-01T01:00:00Z", "Max": "2015-01-01T00:00:00Z", "Count": 3241200, "CountDistinct": 8760, "CountNull": 0 }, "target": { "Min": "0.0", "Max": "168200.0", "Avg": 606.5167610461679, "Stddev": 3518.405223972031, "Count": 3241200, "CountDistinct": 1196961, "CountNull": 0, "CountNan": 0 }, "item": { "Count": 3241200, "CountDistinct": 370, "CountNull": 0 } }, ... }
    Important

    Vous devez attendre que le statut soit ACTIVE avant de créer un prédicteur avec le groupe d'ensembles de données.

    Pour plus d'informations sur cette opération, consultez DescribeDatasetImportJob.

Pour créer un prédicteur, vous utilisez l'opération CreateAutoPredictor et vous fournissez les informations suivantes :

  • Nom du prédicteur : attribuez un nom au prédicteur afin de le distinguer de vos autres prédicteurs

  • Groupe de jeux de données : vous avez créé le groupe de jeux de données à l'étape précédente.

  • Fréquence des Forecast — La granularité de vos prévisions (horaires, quotidiennes, hebdomadaires, etc.).

  • Horizon de Forecast : nombre d'étapes temporelles prévues.

Une fois le prédicteur créé, vous passez en revue les mesures de précision générées par Amazon Forecast. Les métriques vous aident à décider si vous souhaitez utiliser le prédicteur pour générer une prévision. Pour plus d'informations sur les prédicteurs, consultez Prédicteurs d'entraînement.

Pour créer un prédicteur et vérifier les métriques de précision
  1. Créez le prédicteur.

    aws forecast create-predictor \ --predictor-name electricitypredictor \ --input-data-config DatasetGroupArn="arn:aws:forecast:us-west-2:acct-id:dsgroup/electricity_ds_group" \ --forecast-horizon 36 \ --forecast-frequency D

    Voici un exemple de réponse.

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. Obtenez le statut du prédicteur.

    aws forecast describe-predictor \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    Voici un exemple de réponse.

    { "PredictorArn": "arn:aws:forecast:<region>:<acct-num>:predictor/electricitypredictor", "PredictorName": "electricitypredictor", "ForecastHorizon": 36, "ForecastTypes": [ "0.1", "0.5", "0.9" ], "ForecastFrequency": "D", "DatasetImportJobArns": [ "arn:aws:forecast:<region>:<acct-num>:dataset-import-job/getting_started_dataset/gs_import" ], "DataConfig": { "DatasetGroupArn": "arn:aws:forecast:<region>:<acct-num>:dataset-group/getting_started", "AttributeConfigs": [ { "AttributeName": "target_value", "Transformations": { "aggregation": "sum", "backfill": "zero", "frontfill": "none", "middlefill": "zero" } } ] }, "EstimatedTimeRemainingInMinutes": 97, "Status": "CREATE_IN_PROGRESS", "CreationTime": "2022-02-23T09:26:24.643000-08:00", "LastModificationTime": "2022-02-23T09:49:26.899000-08:00", "ExplainabilityInfo": { "Status": "NOT_AVAILABLE" } }
    Important

    La formation de modèle nécessite un certain temps. Ne poursuivez pas tant la formation n'est pas terminée et que le statut du prédicteur n'est pas ACTIVE.

  3. Obtenir les métriques de précision pour le prédicteur.

    aws forecast get-accuracy-metrics \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    Voici un exemple de réponse.

    { "PredictorEvaluationResults": [ { "TestWindows": [ { "EvaluationType": "SUMMARY", "Metrics": { "RMSE": 448.19602551622864, "WeightedQuantileLosses": [ { "Quantile": 0.9, "LossValue": 0.11574311406253326 }, { "Quantile": 0.5, "LossValue": 0.1706269067283527 }, { "Quantile": 0.1, "LossValue": 0.11724164222477837 } ] } }, { "EvaluationType": "COMPUTED", "Metrics": { "RMSE": 448.19602551622864, "WeightedQuantileLosses": [ { "Quantile": 0.9, "LossValue": 0.11574311406253326 }, { "Quantile": 0.5, "LossValue": 0.1706269067283527 }, { "Quantile": 0.1, "LossValue": 0.11724164222477837 } ] }, "TestWindowEnd": 1420070400.0, "TestWindowStart": 1420002000.0 } ] } ] }

    Les métriques montrent la perte d'erreur pour chaque quantile. Par exemple, une erreur de 11,7 % s'est produite pour le premier quantile. Les métriques indiquent également l' root-mean-square erreur (RMSE).

    Les métriques récapitulatives affichent la moyenne des métriques calculées sur toutes les fenêtres de test. Comme il n'y avait qu'une seule fenêtre de test, les métriques récapitulatives et calculées sont égales.

    Pour plus d'informations sur cette opération, consultez GetAccuracyMetrics.

Amazon Forecast crée une prévision pour letarget_value champ (déterminée par le domaine et le type du jeu de données) pour chaque élément uniqueitem_id du jeu de données. Dans cet exemple, le champ target_value fournit la consommation d'électricité et le champ item_id fournit les ID client. Vous obtenez une prévision pour la consommation d'électricité horaire par client.

Une fois la prévision créée, vous pouvez interroger un seul élément ou exporter la prévision complète.

Pour créer, récupérer et exporter une prévision
  1. Créez la prévision.

    aws forecast create-forecast \ --forecast-name electricityforecast \ --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor

    L'opération utilise le prédicteur pour créer une prévision. Dans la réponse, vous obtenez l'Amazon Resource Name (ARN) de la prévision. Vous utilisez cet ARN pour récupérer et exporter la prévision. Voici un exemple de réponse.

    { "ForecastArn": "arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast" }

    Pour plus d'informations sur cette opération, consultez CreateForecast.

  2. Récupérez les deux premières heures de la prévision pour client_1.

    Note

    Le nom du service forecastquery, est différent de celui utilisé ailleurs.

    aws forecastquery query-forecast \ --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \ --start-date 2015-01-01T00:00:00 \ --end-date 2015-01-01T02:00:00 \ --filters '{"item_id":"client_1"}'

    L'opération inclut les paramètres suivants.

    • start-dateetend-date — Spécifie une plage de dates facultative pour laquelle récupérer la prévision. Si vous ne spécifiez pas ces paramètres, l'opération renvoie l'ensemble de la prévision pour client_1.

    • filters— Spécifie leitem_id filtre pour lequel récupérer les prévisions d'électricitéclient_1.

      Voici la syntaxe raccourcie du paramètre filters.

      --filters item_id="client_1"

    Voici un exemple de réponse.

    { "Forecast": { "Predictions": { "mean": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 20.952411651611328 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 19.11078453063965 } ], "p90": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 24.524038314819336 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 22.319091796875 } ], "p50": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 20.7841739654541 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 19.237524032592773 } ], "p10": [ { "Timestamp": "2015-01-01T01:00:00", "Value": 18.507278442382812 }, { "Timestamp": "2015-01-01T02:00:00", "Value": 16.15062141418457 } ] } } }

    Comme il s'agit d'une prévision à l'heure, la réponse indique les valeurs prévisionnelles horaires. Dans la réponse, notez les points suivants :

    • mean— Pour la date et l'heure spécifiques, la moyenne est la valeur moyenne de consommation d'électricité prévue pour le client.

    • p90p50, etp10 — Spécifiez le niveau de confiance selon lequel la valeur réelle sera inférieure à la valeur répertoriée à la date et à l'heure spécifiées. Par exemple, au 01/01/2015 T 01:00:00, Amazon Forecast est sûr à 90 % que la consommation électrique sera inférieure à 24,5. Amazon Forecast est certain à 50 % que l'utilisation sera inférieure à 20,8 % et à 10 % qu'elle sera inférieure à 18,5.

    Pour plus d'informations sur cette opération, consultez QueryForecast.

  3. Exportez la prévision complète dans votre compartiment Amazon S3. Le rôle IAM que vous fournissez doit être autorisé à écrire des données dans votre compartiment S3. Pour de plus amples informations sur la création d'un rôle IAM, veuillez consulterCréation d'un rôle IAM pour Amazon Forecast () AWS CLI.

    Créez une tâche d'exportation de prévisions.

    aws forecast create-forecast-export-job \ --forecast-export-job-name electricityforecast_exportjob \ --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \ --destination S3Config="{Path='s3://bucket',RoleArn='arn:aws:iam::acct-id:role/Role'}"

    Voici un exemple de réponse.

    { "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087" }

    Pour plus d'informations sur cette opération, consultez CreateForecastExportJob.

  4. Obtenez le statut de la tâche d'exportation.

    aws forecast describe-forecast-export-job \ --forecast-export-job-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast

    Voici un exemple de réponse.

    { "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087", "ForecastExportJobName": "electricityforecast_exportjob", "Status": "CREATE_IN_PROGRESS" }

    Lorsque le statut est ACTIVE, vous pouvez trouver les fichiers de prévision dans le compartiment S3 spécifié.