0
0

More than 1 year has passed since last update.

Amazon Forecastを試してみる

Last updated at Posted at 2022-01-30

Amazon Forecastとは

  • Amazon Forecastは、機械学習を使用して精度の高い予測を行う完全マネージド型のサービス

検証データ内容

  • 日別の予約数(っぽいもの)を記録したCSVを作成し、Forecastに読み込ませて予測を行ってみる
    • 作成したCSVはS3においておく
  • 項目は店舗ID、予約日付、予約数
  • 2020/11/1から2020/1/31までの3ヶ月分のデータ(92行)
  • 土日祝日は予約数多め、平日だと比較的火曜日が多い。予約数は増加傾向を示している。というデータとなっている
  • このデータを使って2月の予約数の予測を算出してもらおう

検証データ項目

  • item_id
    • Forecastで必須の項目
    • ディメンション(○○別に見るといった分析軸を示すもの
    • 店舗IDを当てはめる
  • timestamp
    • Forecastで必須の項目
    • 時間軸を示す
    • yyyy-MM-dd(日単位)
    • 予約日付を当てはめる
  • target_value
    • Forecastで必須の項目
    • 予約数を当てはめる

AWSマネジメントコンソールからForecastを試す

操作方法

  • Amazon Forecastを開く

Screen Shot 2021-01-31 at 23.34.58.png

  • 「View dataset groups」ボタンをクリック

Screen Shot 2021-01-31 at 23.35.14.png

  • 「Create dataset group」ボタンをクリック

Screen Shot 2021-01-31 at 23.36.44.png

  • 以下項目を入力
  • 「NEXT」ボタンをクリックする

screencapture-ap-northeast-1-console-aws-amazon-forecast-home-2021-01-31-23_40_34.png

  • 以下項目を入力
    • Dataset name
      • 英数字&アンダースコアで適当に入力する(例:forecast_sample_dataset)
    • Frequency of your data
      • 読み込ませるデータの日付の単位
      • 分、時、日、週、月、年から選択
      • 今回は日単位で作成
    • Schema Builder
      • item_id
      • timestamp
        • yyyy-MM-dd HH:mm:ss / yyyy-MM-ddからフォーマットを選択(yyyy/MM/ddはないので、CSVの形式に注意)
      • target_value
    • ちなみに読み込ませられるデータ型(Attribute Type)は以下が用意されている
      • string(文字列)
      • float(浮動小数点)
      • integer(整数)
      • geolocation(地理データ。USとヨーロッパのみ)
    • Dataset import name
      • 英数字&アンダースコアで適当に入力する(例:forecast_sample_dataset_import)
    • Select time zone
      • timestampがUTC時刻だったら選択すると良いのかも(未検証)
      • Do not use time zoneを選択
    • Data location
      • CSVデータをおいたS3を選択
    • IAM role
      • CSVを読み込めるIAMロールを選択。なかったらこの場で自動生成してもらえる
  • 「Start Import」を選択
  • 15分ほど待ち

Screen Shot 2021-02-01 at 0.19.15.png

  • Dashboardが表示されたら、Predictor trainingの「Start」ボタンをクリックして学習の設定を行う
  • 必要ならば、その前にItem metadata dataやRelated time series dataをインポートしておくこともできる(今回は何も入れてない)
    • item metadata data
      • item_idに指定した値の属性情報を読み込ませることができる
      • item_idを店舗IDにするならば、店舗の規模とか、取り扱い商品とか?
    • Related time series data
      • 時系列の属性情報を読み込ませることができる
      • 休日、特売日とか

screencapture-ap-northeast-1-console-aws-amazon-forecast-home-2021-02-01-00_20_44.png

  • 以下項目を入力
    • Predictor name
      • 英数字&アンダースコアで適当に入力する(例:forecast_sample_predictor)
    • Forecast horizon
      • 何行先まで予測するか
      • 入力データの1/3まで選択可能(Max:500)
      • 今回2月の予約数を予測したいので、28を設定
    • Forecast frequency
      • 日単位なのでdayを選択
    • Algorithm selection
      • 使用するアルゴリズムを選択する
      • とりあえずAutomaticにすればおすすめで予測してもらえる
      • Manualの場合は以下から選択
        • CNN-QR
        • DeepAR+
        • Prophet
        • NPTS
        • ARIMA
        • ETS
    • Forecast dimensions
      • 店舗別に予測を出したいならitem_idを選択する?
    • Number of backtest windows、Backtest window offset
      • 学習する際にテストデータを分割するかどうかみたいな
      • よくわからんのでデフォルトのままで
    • Forecast type
      • よくわからないのでデフォで
    • advanced configuration
      • 高度な設定。無視で
    • Weather
      • AWSが持ってる天気情報(2週間分)を学習に含めるか
      • geolocation型をデータに持っている場合に使用可能(つまりUSかヨーロッパ限定の機能)
    • Holiday
      • AWSが持ってる祝日情報を学習に含めるか
      • 日本も選択できるのでOnにしてみる
  • 「Train predictor」ボタンをクリックして学習開始
  • 2時間くらい待つ

Screen Shot 2021-02-01 at 0.19.15.png

  • Dashboardに戻って、Forecast generationの「Start」をクリックして予測の設定を行う

Screen Shot 2021-02-01 at 10.04.34.png

  • 以下項目を入力
    • Forecast name
      • 英数字&アンダースコアで適当に入力する(例:forecast_sample_forecast)
    • Predictor
      • 先程作成したPredictorを選択
    • Forecast types
      • 空欄で
  • 「Create new forecast」ボタンをクリックして予測開始
  • 30分くらい待つ

Screen Shot 2021-02-12 at 2.36.35.png

  • 「Lookup forecast」ボタンをクリックする

Screen Shot 2021-02-12 at 2.37.37.png

  • 以下項目を入力
    • Forecast
      • 先程作成したForecastを選択
    • Start date
      • 結果グラフの開始日付
      • 予測したデータ行分だけ過去日付を指定可能
      • 今回は予測開始日付の2/1から28日前までを指定可能(つまり1月4日)
    • End date
      • 結果グラフの終了日付
      • 2/28まで予測するのでこれを指定
    • Choose the keys you want to use to filter your forecasts
      • 店舗別に予測するようにしたので、表示する店舗IDを入力
  • 「Get Forecast」ボタンをクリックして結果を表示

Screen Shot 2021-02-12 at 2.43.14.png
どや

結果考察

  • 土日の予約数が多いってのは反映されている
  • 平日は火曜日が多いってのも反映されている
  • だんだん予約数が増加傾向にあることもでている
  • 祝日が多いってのは無視されている(2/11が少ない予測になっている)

所感

  • 日時の単位が分、時、日、週単位なので、30分単位での予測とかは用意されていない
    • 分単位を選択してがんばればできなかないが、それだと最大500行(8時間ちょい)までの予測しかできない
  • 祝日多いのが反映できていないのはAWSが用意しているHolidayデータがおかしいのでは?
  • 93行ぽっちのデータでもデータインポート>学習>予測で3時間くらいかかる。実データでやろうとするならば、読み込ませるデータ数でどれくらい時間がかかるか注意する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0