amazon forecastやってみた - 1. 学習データを取得する


はじめに

今日イベントでAmazon forecastで時系列予測の事例紹介を見たところ
とてもお手軽にできそうな感じがつかめたのでその日のうちにやってみた。
参考:https://dev.classmethod.jp/cloud/aws/amazon-forecast-getting-start/

大きな流れはコチラ。
 1. 学習データを取得する ←今回はココ
 2. 学習データのインポート
 3. amazon forecastの設定
 4. 学習結果の確認

やってみた元データ

気象庁が公開している平均気温データを使いました。
地元が岡山県倉敷なのでそこのデータを4年分使用。
期間:2016/11/1 ~ 2019/11/1

1. 学習データを取得する

自分がとった手順を紹介。
①「気象庁 > 過去の気象データ・ダウンロード」へアクセス
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

②都道府県を選択する
岡山県をクリック

②市を選択する
倉敷市をクリックして→ボタンをクリック

③項目を選ぶ
データの種類:日別値
項目>気温:日平均気温
を選択して→ボタンをクリック

④期間を選ぶ
単年だと季節の周期性が出ないかもと思ったのでまるっと4年分ぬいてみた。

⑤表示オプションを選んでダウンロード
欠損値は省くように選択肢をクリックして、[CSVファイルをダウンロード]をクリック。すると、"data.csv"という名前でダウンロードできた。

データの前処理をする

amazon forecastは複雑なモデル作成やバリデーション等々の処理は全部amazonのナレッジでうまいことしてくれるが
ちゃんと予測してもらうための前処理は各人でやる必要がある。

どんな加工をすればよいのか?についてはポイントがあり、
詳細は他サイトに譲るが、予測をするには最低限下記の項目が必要で特にtimestampはフォーマットが決められている。
 1. item_id
 2. timestamp(YYYY-MM-DD hhss)
 3. target_value
このtimestampは必ず合わせないといけないのでここは最低限頑張る。

で、気象庁のデータをどんな感じに加工したのか紹介

data.csv(before)
ダウンロードした時刻:2019/11/04 21:55:20

,岡山
,倉敷
年月日,平均気温(℃)
2016/11/1,13.8
2016/11/2,12.1
2016/11/3,11.8
2016/11/4,11.4
2016/11/5,12.6
2016/11/6,12.1
2016/11/7,10.5

これを↓↓のように直した。

data.csv(after)
item_id,timestamp,target_value
kurashiki,2016-11-01 00:00:00,13.8
kurashiki,2016-11-02 00:00:00,12.1
kurashiki,2016-11-03 00:00:00,11.8
kurashiki,2016-11-04 00:00:00,11.4
kurashiki,2016-11-05 00:00:00,12.6
kurashiki,2016-11-06 00:00:00,12.1
kurashiki,2016-11-07 00:00:00,10.5
kurashiki,2016-11-08 00:00:00,12.7
kurashiki,2016-11-09 00:00:00,9.4

おわりに

今回のデータは欠損値もないのでtimestampのフォーマットをforecast用に合わせるだけですんだけど実際はここが一番大変になるはずの工程。

通常の時系列予測だと、このデータができた後も
頑張ってモデル作成やらバリデーション作成やら
ある意味本来のプログラミングの腕の見せ所なわけだけど
そこをまるっとforecastが面倒見てくれる、というのが最大の売り。
ちょっと寂しい気もするけど、これで時系列予測を実行するハードル
が劇的に下がったのでforecastはすごい!

~次回へ続く~