【初心者】Amazon Forecast を使ってみる


目的

  • 仕事に直結していないが、時系列データの分析に興味があったため、基本動作を確認することにした。

Amazon Forecast とは(自分の理解)

  • 過去の時系列データ、および関連データを入力すると、それらのデータを元に未来予測を行ってくれるサービス。

やったこと

  • 気象庁のオープンデータから、過去の東京地方の日次平均気温データを取得。
  • 4年分の過去データ(2015/9/1~2019/8/31)をAmazon Forecastに入力。2019/9/1~2019/9/30の予測を出力させる。
  • 2019/9/1~9/30の値について、Forecastが出力した予測と、実際のデータを比較し、予測の正確性を確認する。

構成図

作業手順

データの準備

  • 気象庁のデータ公開サイトから、過去の東京の平均気温データをダウンロードする。
  • 整形前のデータ(.xls)は以下のフォーマットになる。

  • forecastで処理できるフォーマットに整形する。不要な列を削除し、日付のフォーマットを修正する。日付はExcelの機能で「yyyy-mm-dd hh:mm:ss」(「:」は実際には半角)を指定して整形する。

  • 4年分のデータをグラフにすると以下のようになる。30℃(真夏)~5℃(真冬)の間を推移する。

Forecastでの処理

処理プロセス

大きく分けて以下の3つの処理を実施する。

  • Dataset Group :入力データの作成

    • S3にcsvデータをアップロード。
    • forecastにて、入力データとしてそのcsvを指定して読み込ませる。
  • Train predictor :学習モデルの作成

    • 各種パラメータを入力し学習処理を行う。
      • Forecast Frequency(データの頻度): 今回は1日(日次データなので)
      • Forecast Horizon(何周期予測する): 100(約3か月分の未来を予測)
  • Generate forecasts :予測の作成

    • 実際に予測を作成する。

処理時間

上記のそれぞれのプロセスでの所要時間は以下の通り。今回のデータ量は約1500行(365日*4年分)だが、それなりに時間がかかる。

  • Dataset Groupの作成(データのimport):約4分
  • Train predictor(学習モデルの作成):約90分
  • Generate Forecasts(予測の作成):約90分

予測の出力

2019/7,8月分(入力データ)と、2019/9月分(予測データ)を表示。9月はだんだん寒くなっていくので、正しい傾向での予測はできている。

予測データの検証

2019/9月分について、forecastが予測したデータと、気象庁から取得した実データを比較する。大きく外してはなさそうだが正確かどうかは素人では判断不能。

所感

  • 基本的な手順としては簡単なので、サーバの負荷の予測とか、実業務に関わるところに活かせないかを考えてみたい。
  • 学習のアルゴリズムとして、ARIMA, Deep_AR_Plus, ETS, NPTS, Prophetが選択可能で、今回は自動選択にしたところ「Deep_AR_Plus」が使用されていた。公式ドキュメント: Amazon Forecast アルゴリズムを選択するにそれぞれの解説があるが、さっぱり分からないため、理解して使おうとするとかなり奥深そう。

参考