下記のような知識があるとこの記事が理解しやすいです。
- AWS Forecastについて基本知識
- AWS SDK (boto3等)やCLIでAWS Forecastの予測の実施方法がわかる
- Python
AWS Forecastとは
https://docs.aws.amazon.com/ja_jp/forecast/latest/dg/what-is-forecast.html
AWS boto3 forecast Doc
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/forecast.html
再学習とは
Forecastの予測の実施流れ
Forecastの予測は以下のような流れで行われます。
- Dataset Group作成
- Dataset 作成
- Dataset インポート
- Predictor 作成
- Forecast 作成
- Forecast エクスポート
予測を行うたびに全体の流れを繰り返すのは非効率的です。
再学習の実施流れ
- 既に作成済みのDatasetに追加データをインポート
- 既に作成済みのPredictorを指定してPredictorを作成
- Forecast作成からの手順は同上です。
とくにPredictorの処理が高速になります。
予測子の再学習は、新しい予測子をゼロから作成するよりも最大 50% 高速です。
Predictor のトレーニング時間は短くなり、Forecast では既存の構成設定が自動的に使用されます。
参照:https://docs.aws.amazon.com/ja_jp/forecast/latest/dg/retrain-predictors.html
実装ノーハウ
利用ライブラリ:boto3
forecast = boto3.client(service_name='forecast', region_name='ap-northeast-1')
引数:create_dataset_import_job
- 過去作成した
dataset-group
の既に存在するdataset
へ追加データをインポート - 追加データをインポートする際は
create_dataset_import_job
の引数にImportMode='INCREMENTAL'
を指定
dataset_import_job_response = forecast.create_dataset_import_job(
DatasetImportJobName=import_job_name,
DatasetArn=dataset_arn, # `dataset-group`の既存の`dataset`
DataSource={
"S3Config" : {
"Path": s3_path,
"RoleArn": role_arn
}
},
TimestampFormat=time_stamp_format,
ImportMode='INCREMENTAL' # `ImportMode='INCREMENTAL'`を指定
)
※ ImportMode='FULL'
を指定すると追加とはならなく全体データが上書きされます。
引数:create_auto_predictor
-
ReferencePredictorArn
引数に再学習する対象のPredictor
を指定
create_predictor_response = forecast.create_auto_predictor(
PredictorName=predictor_name,
ReferencePredictorArn=retraining_predictor_arn # 再学習する対象の`Predictor`を指定
)
※ 引数のForecastHorizon
, ForecastFrequency
, DataConfig
は指定しないことにご注意ください。
検証結果
- Predictor作成時間が明らかに短くなっています。
区分 | 実績データ | 再学習元 | Predictor作成時間 | Forecast作成時間 | 予測対象期間 |
---|---|---|---|---|---|
1回目予測 | 2022年1月1日~2022年8月31日 | なし | 50分 | 17分 | 2022年9月1日~2022年10月30日 |
2回目予測(再学習) | 2022年9月1日~2022年9月30日(追加分) | 1回目予測Predictor | 34分 | 15分 | 2022年10月1日~2022年11月29日 |
3回目予測(再学習) | 2022年10月1日~2022年10月31日(追加分) | 2回目予測Predictor | 34分 | 15分 | 2022年11月1日~2022年12月30日 |