AWSハンズオン実践 〜Amazon Forecast〜

# はじめに

AWS公式のハンズオンシリーズの中から、[Amazon Forecastのハンズオン](https://pages.awscloud.com/event_JAPAN_Hands-on-Amazon-Personalize-Forecast-2019.html?trk=aws_introduction_page)を実施しました。

本記事は自身のハンズオン学習メモとして投稿します。
# 目次
- [Amazon Forecastとは](#Amazon Forecastとは)
- [ハンズオン本編](#ハンズオン本編)
- [おわりに](#おわりに)

# Amazon Forecastとは

機械学習を使用して精度の高い予測を行うフルマネージドサービス。
時系列データ (価格、プロモーション、経済的業績指標など) を利用し予測する。

### ユースケース  
#### Product DemandPlanning  
- ウェブサイトや特定の店舗、ロケーションで販売されている製品に対する需要予測
- サプライチェーンの需要予測  

#### Financial planning  
- 地域毎やサービス毎のキャッシュフロー、売上、利益、経費の予測  

#### Resource planning  
- コールセンターのオペレータ数、契約社員、ITスタッフ、需要を満たすのに必要なエネルギー  
- サーバーへのウェブトラフィック、AWS の使用状況、IoT センサーの使用状況  

![forecast1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/9327bd10-9314-dc7c-f740-d02452db5ce6.png)

(https://pages.awscloud.com/event_JAPAN_Hands-on-Amazon-Personalize-Forecast-2019.html?trk=aws_introduction_page より引用)


# ハンズオン本編

### データの準備  
過去の家庭の電⼒使⽤量のデータから将来の使⽤量を予測するモデルを構築する  

- 学習データを以下のURLからダウンロード・解凍  
(http://bit.ly/22Z4QCj)
- 各家庭の毎時の電⼒使⽤量（左から時刻、電⼒量、家庭のID）

![forecast2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/ef3c9c4b-ac18-c010-e29b-d3d2ce5e3c90.png)

- S3 に CSV をアップロード

### データセットのインポート  
- Forecast のコンソールに移動、Dataset groupsを選択
- データセットグループを作成  
  - Create dataset group を選択してデータセットグループを作成
  - TARGET_TIME_SERIES, RELATED_TIME_SERIES, ITEM_METADATA の3種のデータセットをデータセットグループに登録可能
  - このハンズオンでは、必須の TARGET_TIME_SERIES のみ利⽤

![forecast3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/a97e51e8-f566-be7a-f77f-fa5ed15dd9f6.png)


- データセットグループの設定
- TARGET_TIME_SERIES の設定
  - 時間の単位をhourに変更
  - CSV ファイルの列順に並び替える

![forecast4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/7ac980e1-8ef6-2fe9-99ff-51a9f309f8cb.png)

- データセットのインポート
![forecast5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/e21dfb64-1941-b0c0-481e-918b1ebd46b9.png)


- インポートの完了を待つ

###  Predictor を学習する
データインポートが終わると、Predictor の学習を start できるようになる

![forecast6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/9d807b83-4b9a-1d8a-04e9-d197c6be5be8.png)


- Predictor の設定

以下内容で設定。よく分からなくてもAutoMLで自動で選択してくれる機能も存在する。

![forecast7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/a1069dcb-e9f7-43fa-de62-961d3268cdcb.png)

- 学習完了まで待つ

### 予測を⾏う
Predictor の学習が終わると予測を作成できる

![forecast8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/2c817fab-b3d5-934b-bb67-dfef22022e4f.png)

- 予測の作成  
  - 学習した Predictor から予測 (forecast) を作成する
  - 予測を作成した段階では予測値を確認できず、Forecast export (S3へ出⼒)、Forecast lookup (条件を指定して予測値を出⼒) する必要がある

![forecast9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/ef88bad8-b30a-c018-8bee-9d22a68b5c1d.png)


- Lookup forecast (特定条件の予測値を出⼒)

Forecast の作成が完了すると Lookup forecast を実⾏できる

作成したForecaastを選択し、日時は以下を指定。
Start: 2015/01/01 0時0分(インポートしたデータ2014/12/31 23時 の次)
End: Start + Forecast horizon(forecast horizon が36 のとき2015/01/02 12時 (36時間後)

![forecast10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/3725eaf2-2c9a-ef89-7251-7c007c75b300.png)

- 結果の確認

![forecast11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/83202e3f-e5f6-0060-21f2-5917fcf05a22.png)

P50が⽰す値は、50%の確率でこの値以下に収まることを表す。
P10とP90はどこまで⼩さい・⼤きい値をとりうるかを⽰す。
需要予測で⽋品を防ぎたい場合は、P90にあわせて多めに在庫を補充。

- Forecast export (S3に⼀括出⼒)

Forecast を選んで Create forecast export

![forecast12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646352/4a406258-07b2-8bd1-a3a3-e282919032d2.png)

しばらく待つと結果の csv ファイルがS3に出⼒される

### 作成した AWS リソースの削除

粛々と削除。特筆すべき事はなし。


#おわりに

今回はAmazon Forecastを利用したハンズオンを実施した。
Amazon Personalizeと同様に、機械学習の専門知識がなくとも簡単に導入する事が出来るのは大きな特徴である。

今後はGCP等の他プラットフォームのAIサービスについても調べていく予定。