Amazon Forecastとは
統計アルゴリズムと機械学習アルゴリズムを使用して、時系列予測を実現するフルマネージドサービスです。
Amazon.comでの時系列予測で使用されているものと同じテクノロジーに基づいており、最先端のアルゴリズムで提供されます。
また、機械学習の経験は必要ありません。
一般的なユースケースとしては、下記のようなものがあります。
- 小売の需要計画
製品需要を予測し、さまざまな店舗の場所に合わせて、在庫と価格をより正確に設定できるようにします。 - サプライチェーン計画
製造に必要な原材料、サービス、またはその他の項目の量を予測します。 - リソース計画
人員配置、広告、エネルギー消費、およびサーバー容量の要件を予測します。 - 運用計画
ウェブトラフィック、AWS の使用状況、および IoT センサーの使用状況のレベルを予測します。
データセットドメインとデータセットタイプ
予測を行うにはデータセットを作成し、データセットグループに追加します。
作成したデータセットにデータセットドメインとデータセットを関連付けます。
データセットドメインには下記が選択できます。
- RETAIL ドメイン
小売の需要予測 - INVENTORY_PLANNING ドメイン
サプライチェーンとインベントリの計画 - EC2 CAPACITY ドメイン
Amazon Elastic Compute Cloud (Amazon EC2) の容量を予測するため - WORK_FORCE ドメイン
従業員の計画 - WEB_TRAFFIC ドメイン
今後のウェブトラフィックの見積もり - METRICS ドメイン
収益およびキャッシュフローなどの予測メトリクス - CUSTOM ドメイン
その他すべての時系列予測のタイプ
データセットは下記の3つのタイプとなります。
- ターゲット時系列 (必須)
唯一必要なデータセットタイプ。このタイプは、予測を生成するターゲットフィールドを定義します。たとえば、一連の製品の売上を予測する場合は、予測する製品ごとに履歴の時系列データのデータセットを作成する必要があります。同様に、予測する収益、キャッシュフロー、売上などのメトリクス用のターゲット時系列データセットを作成できます。 - 関連する時系列
ターゲットの時系列データに関連する時系列データ。たとえば、価格は製品の売上データに関連しているため、関連する時系列として指定できます。 - 項目メタデータ
ターゲットの時系列データに適用可能なメタデータ。例えば、特定の商品の売上を予測している場合 ブランド、色、ジャンルなどの商品の属性は項目メタデータの一部になります。EC2 インスタンスの EC2 キャパシティを予測するとき、メタデータにはインスタンスタイプの CPU とメモリが含まれる場合があります。
事前設定
それでは設定していきます。
今回は下記の公式サイトのチュートリアルに沿って設定を行います。
https://docs.aws.amazon.com/ja_jp/forecast/latest/dg/getting-started.html
トレーニングデータのアップロード
electricityusagedata.zipをダウンロードして解凍します。
解凍したファイルをS3バケットにアップロードします。
下記のファイルの一部抜粋にあるように、利用時間
,電力使用量
,クライアントID
の項目に分かれており、クライアンID毎に1時間毎に電力使用量が記されております。
2014-01-01 01:00:00,2.53807106598985,client_0
2014-01-01 01:00:00,23.648648648648624,client_1
2014-01-01 01:00:00,0.0,client_2
IAMポリシーの作成
Forecastではファイルのインポートとエクスポートする為にS3へのアクセス権限が必要になります。
下記の内容でポリシーを作成します。bucket-name
をS3バケット名に書き換えてください。
今回は、allow_test-bucket-it-ouji
という名前でポリシーを作成しました。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:Get*",
"s3:List*",
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::bucket-name",
"arn:aws:s3:::bucket-name/*"
]
}
]
}
IAMロールの作成
次に、IAMロールを作成します。
ロールを作成
をクリックして、
信頼されたエンティティタイプ:AWSのサービス
ユースケース:EC2
を選択します。
作成済のポリシーallow_test-bucket-it-ouji
を選択します。
ロール名:ForecastRole
と入力して、一旦ロールを作成を完了します。
このままでは、信頼関係(principal)がec2になっているので、forecastに変更します。
作成されたロールを選択して、信頼関係
タブをクリックし、信頼ポリシーを編集
ボタンをクリックして、信頼ポリシーを下記に変更します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "forecast.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
トレーニングデータのインポート
forecastサービスからCreate dataset group
ボタンをクリックします。
Dataset group name
:my_dsgroupForecasting domain
:Custom
Dataset name
:my_datasetFrequency of your data
:1hourData schema
:JSON schemaを選択して下記のschemaを入力
{
"Attributes": [
{
"AttributeName": "timestamp",
"AttributeType": "timestamp"
},
{
"AttributeName": "target_value",
"AttributeType": "float"
},
{
"AttributeName": "item_id",
"AttributeType": "string"
}
]
}
Dataset import name
:my_dsimportjobData location
:S3にアップロードしたファイルのS3 URICustom IAM role ARN
:作成したIAMロール(ForecastRole)のARN
予測子のトレーニング
インポートが完了後、予測子をトレーニングします。
データセットグループのダッシュボードのTrain a predictorのStart
ボタンをクリックします。
Predictor name
:my_predictorForecast horizon
:予測を実行する期間を入力。今回は36時間としました。
その他の入力項目はデフォルトのままとしました。
予測の作成
次に予測子を使用して予測を作成します。
データセットグループのダッシュボードのGenerate forecastsのStart
ボタンをクリックします。
Forecast name
:my_forecastPredictor
:作成した予測子(my_predictor)を選択
予測結果の取得
予測が作成されたら、単一のアイテムをクエリしたり、完全な予測をエクスポートする事ができます。
単一のアイテムをクエリー
データセットグループのダッシュボードのGenerate forecastsのQuery forecast
ボタンをクリックします。
Forecast
:作成した予測(my_forecast)を選択Start date
:2015/01/01 00:00:00End date
:2015/01/02 12:00:00
※36時間の間隔は予測子をトレーニングしたForecast horizon
に対応します。Value
:client_21(データセットに含まれている特定のクライアントID)
実行すると、下記の通りに予測が表示されました。
デフォルトの分位数は、p10,p50,p90となっております。(変更可能)
完全な予測のエクスポート
次に予測結果をエクスポートします。
作成した予測を選択して、詳細画面を表示してCreate forecast export
をクリックします。
Export name
:my_forecast_export_jobCustom IAM role ARN
:作成したIAMロール(ForecastRole)のARNS3 forecast export location
:S3のエクスポートする場所
しばらくするとS3にファイルがエクスポートされておりました。
分位数p10,p50,p90の値が出力されておりました。
item_id,date,p10,p50,p90
client_339,2015-01-01T01:00:00Z,17.500665443060036,28.253285334395336,37.24388618652974
client_339,2015-01-01T02:00:00Z,11.128412664437446,20.073487504470382,33.26756268784284
client_339,2015-01-01T03:00:00Z,6.59241143969121,15.883262909724161,30.800936006453778
client_339,2015-01-01T04:00:00Z,3.591523423895688,14.177114028651177,31.515768611610795
client_339,2015-01-01T05:00:00Z,-4.624901070367518,17.96228974234035,32.13093482158613
client_339,2015-01-01T06:00:00Z,11.330635919685239,23.185823296644966,41.83080496986132
client_339,2015-01-01T07:00:00Z,19.84688344206473,40.72576642059288,57.44246708803272