はじめに
Amazon Forecast が利用できるようになったので、使用感を確かめたいと思います。まずは、細かいことは気にせず、通して使うことを目指します。
結論
違和感のない、良い感じに予測できました。
オリジナルデータは、乗法的な季節性がみられます。例えば、源系列に SARIMA を使うと、季節成分がきれいに分離できず、予測に違和感が出ます。予測モデルを自動選択にしましたが、Amazon Forecast の中で上手いことやってくれてるようです。
Amazon Forecast とは?
aws のサービスのひとつです。
Amazon によると、
Amazon Forecast は、機械学習を使用して精度の高い予測を行う完全マネージド型のサービスです。
とのことでです。時系列データに対して、お手軽に精度の高い予測結果を得ることができるようです。まあ、どれだけの精度が出せるのかは、検証しないとわかりません。しかしながら、「完全マネージド型のサービス」は、非常に有用だと感じます。
対応データ形式
対応しているデータ形式です。
データの種類
- アイテム毎の時系列データ(週ごとの製品ごとの販売個数など)
- アイテムの属性情報(価格、重さ、製品個別の情報など)
- 時系列の属性情報(休日、特売日など)
時間間隔
「分、時、日、月、年」の時間間隔に対応しています。
データフォーマット
データフォーマットは、CSV です。
予測対象データで、CUSTOM ドメインのデフォルトスキーマを使う場合、以下のカラムが必要です。
- item_id (文字列:製品名等)
- timestamp (タイムスタンプ)
- target_value (浮動小数点)
予測品目が一つの場合、item_id カラムには全て同じ値を入れます。
何をしましょうか?
AirPassengers という、1949年から1960年までの飛行機の月次乗客数データを利用します。
データの準備
-
データ取得
https://github.com/jbrownlee/Datasets/blob/master/airline-passengers.csv -
フォーマットを整える
Excel 等で、以下の形式に整えます。
item_id,timestamp,target_value
passengers,1949-01-01 00:00:00,112
passengers,1949-02-01 00:00:00,118
passengers,1949-03-01 00:00:00,132
passengers,1949-04-01 00:00:00,129
passengers,1949-05-01 00:00:00,121
-
aws console にログインします
-
S3 にバケットを作ります
-
バケットにファイルをアップロードします
Amazon Forecast を使う
-
サービスサイトにアクセスします
https://ap-northeast-1.console.aws.amazon.com/forecast/home?region=ap-northeast-1#landing -
dataset group を作り、target 時系列データをインポートします
- dataset group name を指定
- ドメインを指定 → CUSTOM を指定
- dataset name を指定
- データの周期を指定 → Month を指定
- dataset import name を指定
- Timestamp format は変更しない
- IAM Role を作成
- アクセスする S3 Bucket 名を指定
- S3 に保存したデータのパスをコピー
- Data location へデータのパスを指定
- Start import をクリック → ちょっと待つ
-
学習する
- Dashboard で train predictor の Start をクリック
- Predictor name を指定
- Forecast horizen を指定 → 48 を指定(何期先まで予測するか?最大48らしい)
- Forecast frequency で予測の周期を指定 → month を指定
- Algorithm selection を指定 → AutoML を指定
- Train predict ボタンで学習開始 → 30分ほど待つ
-
予測する
- Dashboard で Forecast generation の Start をクリック
- Forecat name を指定
- Predictor を指定
- Create a forecast をクリック → しばらく待つ
-
予測結果を確認する
- Dashboard で Lookup forecast ボタンをクリック
- forecast に Forecast name を指定
- Start date に予測開始日を指定 → 1957/01/01
- End date に予測終了日を指定 → 1964/12/01
- Value に予測対象 item_id を指定 → passengers を指定
- Get Forecast ボタンをクリック
- 下にスクロールし予測結果を確認
-
予測結果データを出力する
- Dashboard の左側メニューで forecast をクリックする
- リストの Forecast name をクリック
- Create forecast export をクリック
- Export name を指定
- Generated forecast を指定
- IAM Role を指定
- S3 forecast export location を指定
- Create forecast export をクリック
- Exports 一覧で Status が Active になるまで待つ
-
予測結果データを取得する
- 出力先の S3 バケットを開く
- ファイル part-*****.csv をダウンロードする
- Excel 等でファイルを開く
スクリーンショットをいくつか
予測結果プレビュー
予測結果
まとめ
厳密にいうと色々と検証する必要はありますが、ちゃんと予測できたようです。他の時系列予測モデルでの結果とも比較したいところですが。
制限事項がありました。48期先までしか予測できないようです。月次データでは、4年先までしか予測できません。
他にも色々制限が。
本格的にシステムに組み込むには、CLIでゴリゴリ使うのが良さそうです。