開始方法 (AWS CLI) - Amazon Forecast

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

開始方法 (AWS CLI)

この演習では、AWS Command Line Interface (AWS CLI) を使用して Amazon Forecast を詳しく学びます。Amazon Forecast データセットを作成し、予測子をトレーニングして、結果の予測子を使用して予想を生成します。開始する前に、AWS アカウントがあり、AWS CLI が設定されていることを確認してください。詳細については、「セットアップ」を参照してください。

注記

この演習の AWS CLI コマンドは Linux でテストされています。Windows での AWS CLI コマンドの使用については、「AWS Command Line Interface ユーザーガイド」の「AWS Command Line Interface のパラメータ値の指定」を参照してください。

まずデータセットを作成し、そこに電力使用量データをインポートすることから始めます。

Amazon Forecast データセットを作成するには
  1. 適切なドメインとデータセットのタイプを決定します。

    データセットにインポートするトレーニングデータは、データセットのドメインとタイプの選択に影響します。それでは、電力使用量データのいくつかのサンプル行を確認しましょう。

    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

    データ形式は CSV (カンマ区切り値) で、(タイムスタンプで示されるように) 1 時間ごとに収集されます。これらの列が含まれています。

    • 列 1 – 電力使用量がいつ記録されたかを示すタイムスタンプ。

    • 列 2 – 時間ごとの電力使用量の値 (タイムスタンプ値が 1 時間ごとに増加する様子に注意してください)。

    • 列 3 – 電気を使用しているお客様を識別するクライアント ID の値。

    このデータに対して、次の事前定義されているデータセットドメインとデータセットタイプを選択します。

    • カスタムドメイン – METRICS、RETAIL、または WEB_TRAFFIC などのデータセットドメインはこのデータには適用されないため、カスタムドメインを選択します。

    • ターゲット時系列タイプ – 時間の経過とともに、電力使用量を追跡するため、データは時系列です。また、予測するターゲット (列 2、電力使用量) も含まれています。したがって、ターゲット時系列データセットタイプを選択します。

      このタイプを選択する理由を理解するには、「事前定義済みのデータセットドメインとデータセットタイプ」を参照してください。

  2. データセットのスキーマを決定します。

    CUSTOM ドメイン のターゲット時系列タイプには、timestamptarget_value、および item_id などのフィールドが必要です。target_value フィールドはターゲットです。Amazon Forecast は、このフィールドの予測を生成します。

    必須フィールドをデータ内の列にマップするには、スキーマを作成します。スキーマの各属性が、データ内のフィールドにマッピングされます。

    重要

    スキーマ内の属性の順序は、トレーニングデータ内のフィールドの順序と一致している必要があります。

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

    これで、データセットを作成してデータをインポートするために必要な情報が得られました。

  3. データセットを作成します。

    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" } ] }'

    このリクエストでは、data-frequencyH は 1 時間ごとのデータ収集頻度を表します。以下に、応答の例を示します。

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

    このオペレーションの詳細については、「CreateDataset」を参照してください。

  4. (オプション) データセットの説明を取得します。

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

    以下に、応答の例を示します。

    { "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" }
    注記

    レスポンスのキーと値のペアの順序は任意です。

  5. データセットグループを作成し、データセットを追加します。domain パラメータの値は、データセットの domain と一致する必要があります。

    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

    以下に、応答の例を示します。

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

    このオペレーションの詳細については、「CreateDatasetGroup」を参照してください。

  6. (オプション) データセットグループの説明を取得します。

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

    以下に、応答の例を示します。

    { "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. Amazon S3 バケットからデータセットに電力使用量トレーニングデータをインポートします。指定した IAM ロールには、S3 バケットのデータを読み込むための許可が必要です。IAM ロールの作成方法については、「Amazon Forecast の IAM ロールを作成する (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" } }'

    以下は、data-source パラメータの短縮構文です。

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

    以下に、応答の例を示します。

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

    このオペレーションの詳細については、「CreateDatasetImportJob」を参照してください。

  8. インポートのステータスを確認します。

    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

    以下に、応答の例を示します。

    { "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" }

    データがすべてインポートされると、ステータスは ACTIVE に変わり、次の例に示すように、データの統計がレスポンスに含まれます。

    { "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 } }, ... }
    重要

    データセットグループで予測子を作成するには、ステータスが ACTIVE になるまで待つ必要があります。

    このオペレーションの詳細については、「DescribeDatasetImportJob」を参照してください。

予測子を作成するには、CreateAutoPredictor オペレーションを使用し、次の情報を入力します。

  • 予測子名 — 他の予測子と区別できるように予測子に名前を付けます

  • データセットグループ – 前のステップでデータセットグループを作成しました。

  • 予測頻度 – 予測の粒度 (毎時、毎日、毎週など)。

  • 予測期間 – 予測されるタイムステップの数。

予測子が作成されたら、Amazon Forecast によって生成された精度メトリクスを確認します。メトリクスは、予測の生成に予測子を使用するかどうかを決定するのに役立ちます。予測子の詳細については、「予測子のトレーニング」を参照してください。

予測子を作成して、精度メトリクスを確認するには
  1. 予測子を作成します。

    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

    以下に、応答の例を示します。

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. 予測子のステータスを取得します。

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

    以下に、応答の例を示します。

    { "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" } }
    重要

    モデルトレーニングには時間がかかります。トレーニングが完了し、予測子の状況が ACTIVE になるまで続行しないでください。

  3. 予測子の精度メトリクスを取得します。

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

    以下に、応答の例を示します。

    { "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 } ] } ] }

    メトリクスは各分位数のエラー損失を示します。たとえば、最初の分位に 11.7% の誤差がありました。メトリクスには二乗平均平方根誤差 (RMSE) の値も表示されます。

    要約メトリクスは、すべてのテストウィンドウで計算されたメトリクスの平均を示します。テストウィンドウは 1 つのみのため、要約と計算されたメトリクスは等しくなります。

    このオペレーションの詳細については、「GetAccuracyMetrics」を参照してください。

Amazon Forecast は、データセット内の一意の item_id ごとに、target_value フィールド (データセットドメインとタイプによって決定される) の予測を作成します。この例では、target_value フィールドは電力使用量を提供し、item_id はクライアント ID を提供します。お客様ごとの時間ごとの電気使用量の予測を取得します。

予測が作成されたら、単一のアイテムをクエリするか、完全な予測をエクスポートできます。

予測を作成、取得、エクスポートするには
  1. 予測を作成します。

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

    このオペレーションでは、予測子を使用して予測を作成します。レスポンスで、予測の Amazon リソースネーム (ARN) を取得します。この ARN を使用して予測を取得およびエクスポートします。以下に、応答の例を示します。

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

    このオペレーションの詳細については、「CreateForecast」を参照してください。

  2. client_1 の予測の最初の 2 時間を取得します。

    注記

    サービス名 forecastquery は、他で使用されているサービス名とは異なります。

    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"}'

    このオペレーションには次のパラメータが含まれます。

    • start-date および end-date – 予測を取得するためのオプションの日付範囲を指定します。これらのパラメータを指定しないと、このオペレーションは client_1 の予測全体を返します。

    • filtersclient_1 の電力予測を取得する item_id フィルターを指定します。

      以下は、filters パラメータの短縮構文です。

      --filters item_id="client_1"

    以下に、応答の例を示します。

    { "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 } ] } } }

    これは 1 時間ごとの予測であるため、レスポンスには 1 時間ごとの予測値が表示されます。レスポンスで、以下の点に注意してください。

    • mean – 特定の日時の平均値は、そのお客様の予測平均電力使用量です。

    • p90p50p10 - 指定された日時に実際の値が記載された値を下回る信頼レベルを指定します。例えば、2015-01-01T01:00:00 の時点で、Amazon Forecast は、電気の使用量が 24.5 未満になると 90% 確信しています。Amazon Forecast は、使用量が 20.8 未満になることについて 50% の確信しており、使用量が 18.5 未満になることについて 10% 確信しています。

    このオペレーションの詳細については、「QueryForecast」を参照してください。

  3. 完全な予測を Amazon S3 バケットにエクスポートします。提供する IAM ロールには、データを S3 バケットに書き込むことを許可する許可が必要です。IAM ロールの作成方法については、「Amazon Forecast の IAM ロールを作成する (AWS CLI)」を参照してください。

    予測エクスポートジョブを作成します。

    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'}"

    以下に、応答の例を示します。

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

    このオペレーションの詳細については、「CreateForecastExportJob」を参照してください。

  4. エクスポートジョブのステータスを取得します。

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

    以下に、応答の例を示します。

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

    ステータスが ACTIVE の場合は、指定した S3 バケットの予測ファイルを確認できます。