目的
- 仕事に直結していないが、時系列データの分析に興味があったため、基本動作を確認することにした。
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 アルゴリズムを選択するにそれぞれの解説があるが、さっぱり分からないため、理解して使おうとするとかなり奥深そう。
参考
-
Amazon Forecast を使ってお手軽に時系列予測する(GUI編)
- これを読めば一通り理解し、ハンズオンできる分かりやすい記事。
-
Amazon Forecastを使ってむこう1年のビットコインの相場を予想してみた
- 複数のアルゴリズムを全て試して差を確認している良記事。