Amazon Forecast を使った予測の手順まとめ

はじめに

今回は、Amazon Forecast を用いた予測を実施します。手順は以下となります。
AWS 公式の Amazon Forecast の開発ガイドについては、下記リンク参照で。

■リンク
Amazon Forecast 開発者ガイド

■手順

①予測するデータセットの準備(csv を S3 にインポートしておく)
②Amazon Forecast に csv データをインポート
③トレーニングモデルの作成
④予測の実施

Amazon Forecast とは

■Amazon Forecas の特徴

  • 時系列データと、それに関するデータを組みあせて予測を実施
  • 一度に複数のアイテムの予測をすることが可能(最大100,000)
  • 予測結果は csv にして S3 にエクスポート可能
  • 予測をしたい内容に合わせて、以下からドメインを選択して予測を実施

■Amazon Forecast のドメイン一覧

  • RETAIL:小売の需要予測
  • INVENTORY_PLANNING:サプライチェーンとインベントリの計画
  • EC2 CAPACITY:EC2 のキャパシティ予測
  • WORK_FORCE:従業員の計画(労働力需要)
  • WEB_TRAFFIC:今後のウェブトラフィックの見積もり
  • METRICS:収益、およびキャッシュフローなどの予測メトリクス
  • CUSTOM:その他すべての時系列予測のタイプ

予測準備

csv の準備

今回は予測の実施にあたって、2つの csv を用意しました。

■用意した csv データ

  • target_time_series:予測をしたいcsv データ。こちらの csv データだけでも予測の実施は可能
  • related_time_series:target_time_series の補助となる csv データ(天候や気温、曜日など説明変数にあたるデータ)

今回は、RETAIL というドメインを利用して予測を行いたいと思います。ドメインごとに必要な項目が異なりますので、注意しましょう。また、Amazon Forecast で予測できる期間はインポートしたデータの1/3までです。今後1ヶ月の予測をしたい場合は、少なくとも直近3ヶ月分のデータが必要となります。

■RETAILドメインを利用する場合のcsv データセットタイプに必要な項目

  • target_time_series データセットに必要な項目
    • item_id (string) :需要を予測する商品名や商品の ID など
    • timestamp (teimstamp):時系列
    • demand (float) :時系列ごとの商品の販売数。Amazon Forecast が予測を生成するターゲットフィールド
    • location(string):商品の販売先店舗や地域名など(※任意で使用)

2020-07-17_15h37_55.png

  • related_time_series データセットに必要な項目
    • item_id (string) :需要を予測する商品名や商品の ID など
    • timestamp (teimstamp):時系列
    • price (float) :時系列ごとの商品の価格(※任意で使用)

※related_time_series データセットでは、天候や曜日、気温などの項目も使用可能です。

2020-07-21_15h38_32.png

予測実施

データのインポート

コンソール画面から「Amazon Forecast」を検索します。
データセットグループの作成、時系列データセットの作成、そしてcsv データのインポートを実施します。

■データセットグループの作成
image.png

  • Dataset group name:予測をするこのデータセットグループ名を入力
  • Forecasting domain:予測に使用するドメインを選択

■時系列データセットの作成
image.png

  • dataset name:時系列データセット名を入力(S3 にインポートした csv と同じの方が分かりやすい)
  • Frequency of your data:時系列データセットの時系列(月・日・時)を選択
  • Data schema;時系列データのスキーマをJSON 形式で入力

■csv データのインポート
image.png

  • Dataset import name:インポートする csv データ名を推奨
  • Timestamp format:csv のtimestamp 形式をこの形式に合わせておくこと
  • Data location:csv データの置いてあるパス

データのトレーニング

無事にインポートが完了したら、次はインポートしたデータを用いてモデルのトレーニングを実施します。
ここでは、以下の項目を入力します。
image.png

  • Predictor name :予測モデルの名前(任意)
  • Forecast horizon:予測をしたい期間決め(期間は最大で csv データの1/3まで)
  • Forecasat frequency:csv データと同じ時系列を選択
  • Algorithm selection:利用するアルゴリズムを選択(特に希望が無ければ「Automatic」を選択)
  • Country for Holidays:休日・祝日情報を追加する場合、こちらを使用(「Japan」を検索して使用)

夜速のトレーニグの完了には、データにもよりますが大体30分以上はかかります。

予測の実施

それでは、いよいよ予測を実行してみましょう。
image.png

  • Forecast name:予測を実行して出てくる予測結果モデルの名前
  • Predictor:予測の実施にあたり利用する予測モデル(先程の学習モデルを選択すればOK)

上記の2つを入力したら、「Create forecast」を選択し、暫く待ちましょう。
これで、完了です。

Forecast lookup の使用

Amazon Forecast lookup で、Amazon Forecast のコンソール画面上で予測結果を可視化することができます。

image.png

  • Forecast:可視化したい予測結果モデルを選択
  • Start date:可視化したい最初の月日を選択(インポートした csv データの最後の時系列を選択)
  • End date:可視化したい最終の月日を選択(選択できる月日はインポートした csv データの1/3の期間まで)
  • Value:可視化したいアイテム名を選択

可視化結果は、図のように3つの予測モデルが表示されます。
image.png

  • P90 forecast:予測値の上限
  • P50 forecast:一般的に言う予測値
  • P10 forecast:予測値の下限

その他

S3 へのエクスポート

Amazon Forecast で行った予測は、 csv で S3 にエクスポートすることが可能です。
以下が手順です。

image.png
■手順
①ダッシュボードの左の「Forecasts」を選択
②作成した予測モデルを選択
③「Create forecast export」を選択

image.png
■手順
④以下の項目を入力、選択したら S3 へのエクスポートを実行

  • Export name:S3 へ送る csv の名前を決める
  • Generated forecast:S3へ送る 予測結果を選択
  • S3 forecast export location:csv を送る先の S3 のパスを入力

S3 へのエクスポートが完了するのには10数分かかります。

料金体系について

Amazon Forecast は従量課金制です。課金対象は以下の3つです。

■課金対象

  • 予測をしたいアイテムの総数×3パターンの予測モデル
  • csv データの重さ
  • モデルのトレーニングに費やした時間

おわりに

Amaozn Forecast を用いた予測は以上となります。
詳細な内容については、AWS公式を参照ください。