開始方法 (AWS CLI) - Amazon Forecast

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

開始方法 (AWS CLI)

この演習では、AWS コマンドラインインターフェイス (CLI) を使用して Amazon Forecast を検証します。Amazon Forecast データセットを作成し、予測子をトレーニングして、結果の予測子を使用して予測を生成します。始める前に、AWS アカウントを作成し、AWS CLI を設定してください。詳細については、「セットアップ」を参照してください。

注記

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

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

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:ds/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」を参照してください。

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

  • アルゴリズム – Amazon Forecast は、アルゴリズムを使用して、データセットグループのデータで予測子をトレーニングします。この演習では、Amazon Forecast によって提供されている forecast_DEEP_AR_PLUS というアルゴリズムを使用します。Amazon Forecast で用意されているアルゴリズムのリストについては、Amazon Forecast アルゴリズムを選択する を参照してください。

    注記

    使用するアルゴリズムがわからない場合は、CreatePredictor オペレーションで PerformAutoML フラグを設定して、AutoML を実行するように Amazon Forecast に 指示できます。AutoML は、予測子のトレーニングに使用するアルゴリズムを判別します。

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

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

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

  1. 予測子を作成します。

    aws forecast create-predictor \ --predictor-name electricitypredictor \ --algorithm-arn arn:aws:forecast:::algorithm/Deep_AR_Plus \ --input-data-config DatasetGroupArn="arn:aws:forecast:us-west-2:acct-id:dsgroup/electricity_ds_group" \ --forecast-horizon 20 \ --featurization-config '{ "ForecastFrequency": "H" }'

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

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

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

    { "PredictorName": "electricitypredictor", "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor", "AlgorithmArn": "arn:aws:forecast:::algorithm/Deep_AR_Plus", "DatasetImportJobArns": [ "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job" ], "InputDataConfig": { "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group" }, "ForecastHorizon": 20, "FeaturizationConfig": { "ForecastFrequency": "H", "Featurizations": [ { "AttributeName": "target_value", "FeaturizationPipeline": [ { "FeaturizationMethodName": "filling", "FeaturizationMethodParameters": { "frontfill": "none", "aggregation": "sum", "backfill": "zero", "middlefill": "zero" } } ] } ] }, "CreationTime": 1564611261.617, "LastModificationTime": 1564611279.896, "PerformAutoML": false, "PerformHPO": false, "EvaluationParameters": { "BackTestWindowOffset": 20, "NumberOfBacktestWindows": 1 }, "Status": "CREATE_IN_PROGRESS" }
    重要

    モデルトレーニングには時間がかかります。トレーニングが完了し、予測子の状況が 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 – 指定された日時に実際の値が記載された値を下回る信頼レベルを指定します。たとえば、Amazon Forecast は、電気使用量が 2015-01-01T01:00:00 に 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 バケットの予測ファイルを確認できます。