Amazon Forecast memo

流れ

データセット作成

予測子をトレーニング

予測 生成

データセット作成

データセットドメイン

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

販売量は RETAIL ドメイン かな

データセットタイプ

TARGET_TIME_SERIES データセットタイプ

予測するフィールド(今回は販売量)が含まれているデータがこれ。

item_id (文字列) – 需要を予測する商品または製品の固有の ID。
timestamp (タイムスタンプ)
demand (float) – タイムスタンプ時の商品の販売数。これは、Amazon Forecast が予測を生成するターゲットフィールドでもあります。

↑今回の販売量予測はこれのみ使ってみる

RELATED_TIME_SERIES データセットタイプ

データが時系列でも、予測するフィールド(今回は販売量)が含まれていないデータ
↑商品の販売量予測では、なし。

ITEM_METADATA データセットタイプ

時系列ではないデータ
e.g. 商品のブランド、カラー、何らかのカテゴリなど

↑もらったデータにはなし

データセット作成

2012/12~2017/2のデータから2017/6の予測をしたい
データは↓こんな感じ ※demandは平米

item_id,timestamp,demand,
商品ID_1,2012-12-03,560.087,
商品ID_2,2012-12-03,117.826,
商品ID_3,2012-12-03,190.522,

687467.png

データセットGroupの中に、データセットをつくる
Automatic dataset import jobs→S3のデータを更新したときに自動で更新してくれるっぽいけど、必要ないので、一旦off
スクリーンショット 2019-06-04 14.16.47.png

  • データの間隔 → 1日ごと
  • timestampのフォーマットは 2012-12-03
  • データはカンマ区切り
  • データにはヘッダーがあります。 item_id,timestamp,demand
  • S3の置き場所 s3://xxxxx/yyyyyyy.csv 68747.png

作成中です(数分待つ)
スクリーンショット 2019-06-04 14.25.28.png

予測子をトレーニング

はじめに

予測子を予測するには、インポートしたターゲット時系列データにレシピを使用します。手動で特定のレシピを選択するか、[AutoML] を選択して Amazon Forecast にデータを処理させてデータセットグループに最適なレシピを選択するかを選択できます。

レシピ一覧

  • 自己回帰和分移動平均 (ARIMA) のレシピ
  • DeepAR+ のレシピ*
  • 指数平滑法 (ETS) のレシピ
  • 混合密度ネットワーク (MDN) のレシピ
  • マルチクォンタイルリカレントニューラルネットワーク (MQRNN) のレシピ
  • ノンパラメトリック時系列 (NPTS) のレシピ
  • Prophet のレシピ
  • スプライン変位予測 (SQF) のレシピ

勉強しないとわからないので、とりあえずAutoMLを使ってみる

予測子をトレーニングする

Predictor Training < START >
スクリーンショット 2019-06-04 14.38.36.png

  • トレーニングに名前をつける
  • Forecast horizon
    データセットのデータ入力頻度を掛け算して、予測したい期間を設定する
    今回はdailyのデータから1ヶ月間の予測をしたいので、30?? ←失敗作
    2017/6を予測したいので
    [与えたデータ] : ~2017/2
    [欲しい予測の期間] : 2017/6
    2017/3, 2017/4, 2017/5, 2017/6の4ヶ月分(130くらい?)に設定してみる

  • レシピは一旦AutoMLに設定

  • 自動で再トレーニングは不要なので、off(そもそもデータの自動更新をしないので、必要ない)

スクリーンショット 2019-06-04 14.46.33.png
予測子トレーニング開始
スクリーンショット 2019-06-04 14.53.19.png

※ トレーニング作成の間に読む!
Amazon Forecast 予測子のメトリクス

予測 生成

トレーニングが終了したので、deployする

  • Predictor - さっき作ったトレーニングしたPredictorを選ぶ
  • バージョンは1つしかないので、指定しない
  • 自動deployは不要 68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3333333833382f64306335346431352d616336612d633733382d343961662d6435336430336331653363312e706e67.png

デプロイを待つ
スクリーンショット 2019-06-04 23.50.04.png

予測を見る

Lookup forecast
スクリーンショット 2019-06-05 14.52.37.png

  • 予測を見たい商品のID
  • Predictor - さっき作ったPredictor
  • version - ひとつしかないので、指定しない
  • 予測の開始日、終了日を設定
  • Dailyのデータで予測したので、Dailyの予測を作る(当然ながら、与えたデータより大きい間隔での指定が必要)

66e67.png

----- 失敗作 -----
Bad requestとのこと。
Start dateEnd dateの間隔を広げてみる
スクリーンショット 2019-06-05 15.02.25.png
2017年3月分しか出てこない...(予測したいのは2017年6月)
スクリーンショット 2019-06-05 15.09.10.png
Demandで与えたデータが 2012/12~2017/02 だから2017/2月末に隣接した予測しかしてくれない??
予測子をトレーニングする に戻って、作り直してみる

成功\(^o^)/
スクリーンショット 2019-06-14 15.54.48.png
データをoutputしたいけれど、csv downloadの機能が見つからないので、コンソール画面からはできない...?
→AWS CLIの設定をする

※2019年6月時点のメモ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account