Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
時系列予測サービス Amazon Forecast の初学レポート
Search
holywater044
October 28, 2019
Technology
0
19
時系列予測サービス Amazon Forecast の初学レポート
JAWS-UG名古屋2019年10月登壇資料
https://jawsug-nagoya.doorkeeper.jp/events/97930
holywater044
October 28, 2019
Tweet
Share
More Decks by holywater044
See All by holywater044
Tableau & Snowflake ハンズオン ~ データコラボレーションをぷち体験しよう ~
holywater044
1
170
Prepの集計機能についておさらいしてみる
holywater044
1
60
SageMakerDataWranglerでノンコードデータ前処理を試してみた
holywater044
0
25
機械学習の勉強で出会った印象的なワード
holywater044
1
19
Other Decks in Technology
See All in Technology
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
10
1.1k
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
160
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
13k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
180
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
180
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
Ruby is Unlike a Banana
tanoku
97
11k
Faster Mobile Websites
deanohume
305
30k
Done Done
chrislema
181
16k
Building Adaptive Systems
keathley
38
2.3k
Become a Pro
speakerdeck
PRO
25
5k
Happy Clients
brianwarren
98
6.7k
Producing Creativity
orderedlist
PRO
341
39k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
KATA
mclloyd
29
14k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Transcript
時系列予測サービス Amazon Forecast の 初学レポート JAWS-UG名古屋 2019-10-28 AKIHIRO HORIKAWA 1
自己紹介 名前: Akihiro Horikawa 所属: 総合エネルギー企業の技術研究所 仕事: データ分析(主にアセスメントとマネジメント) 資格: 日本ディープラーニング協会G検定、他
コミュニティ: 機械学習名古屋、JAWS-UG名古屋、 JUASビジネスデータ研究会(仕事)、他 趣味: 子供、データサイエンス勉強、ゲーム SNS: まだやってない(今後の課題) 好きなAWS: ATHENA、Forecast 2
最初にお詫び ⚫ LT2回目です! 暖かい目で見守ってください ⚫ 基本的に「使ってみた」です。調査・理解が追い付いて ないところはご容赦ください ⚫ 本資料は、2019年10月27日時点の forecast
およ び開発者ガイドの情報に基づきます 3
目次 1.前置き 2.概念的な話 3.操作的な話 4.まとめ 4
1.前置き 5
Forecastについて Amazon Forecast は、時系列予測のためのフルマネー ジド型サービスです。 おそらく、AWS初のオートMLです。 6 Amazon Forecast
オートMLについて 最近流行っていて、AIベンチャー・IT大手などいろんな会 社が出してきています。 ⚫DataRobot 〔DataRobot〕 ⚫DriverlessAI 〔H2O.ai〕 ⚫Impluse 〔ブレインズテクノロジー〕 ⚫Google
AutoML 〔Google〕 ⚫PredictionOne 〔SONY〕 ・・・etc 7 GCPにあるので、AWSも何かないと見劣りしちゃうなーと 思っていたら、Forecastが出ました!
時系列予測について データ分析の種類を、以下のように捉えてます(私見) 8 扱うデータの種類 お題 構造化データ 表データ 分類、回帰、クラスタリング、etc 時系列データ 分類、回帰、クラスタリング、etc
非構造化データ 画像 分類、物体検出、etc 音響 分類、etc テキスト文章 テキストマイニング、etc 音声 音声認識、etc ・・・ ・・・ ・・・ Forecastの守備範囲は、ココだけです。 こう書くと「しょぼい」と思われるかもしれませんが・・・
時系列予測について 時系列データの分析はめんどくさいです。 ⚫長期トレンドや季節性、周期性 ⚫カレンダー要素(月次イベント、休祝日、曜日) ⚫時間窓、ラグ ⚫予測のための予測 ⚫時間軸を考慮したバリデーション ⚫AR、ARIMA、SARIMAXとかHMMとか謎の呪文 ・・・etc 9
なので、自動でやってくれるのは、非常にありがたいです。
時系列予測について 実務では、時系列回帰は多いです。 ⚫売上予測、在庫予測 ⚫来客数予測、コール数予測 ⚫エネルギー需要予測 ⚫変動相場の価格予測 ・・・etc 10 amazon自身が、「大規模小売業」かつ「大規模データ センター事業者」かつ「グローバル企業」なわけで、
その彼らが自分のために作った道具をサービスとして提供し てくれるんなら、これはもうきっとものすごいに違いない!! と期待せずにはいられません。
2.概念的な話 11
Retail Custom Inventory plannning Ec2 capacity Work force Web traffic
Metrics データセットグループ 12 Forecastの俯瞰図 (公式なものではありません!) 学習 train 予測生成 generate Forecast S3 ルックアップ lookup TARGET_TIME_SERIES データセット ドメイン RELATED_TIME_SERIES データセット ITEM_METADATA データセット CSV 予測結果 forcast エクスポート export CSV ARIMA DeepAR+ ETS NPTS Prophet アルゴリズム 学習データ 予測結果データ ※ 2019/10/27時点 ルックアップ表示 forecast lookup 時系列 時系列 必須 予測器 predictor インポート import
データセットグループ dataset group 13
データセットグループ dataset group 学習に使う一群のデータセットを入れる箱。 ⚫Forecastは、学習データを3つに分解して管理する (普通は、1つのデータセットにまとめる) ➢ 目的変数(時系列)のデータセット(TARGET_TIME_SIRIES) ➢ 時系列の説明変数のデータセット(RELATED_TIME_SIRIES)
➢ 時系列でない説明変数のデータセット(ITEM_METADATA) ⚫その1~3個をまとめる箱が、データセットグループ ⚫属性として「ドメイン」を1個だけ持つ 14
ドメイン domain 15
ドメイン domain どんな分野を予測するか。 選んだドメインで、データセットに制約かかる。 ➢ データセット3種のどれが必須か ➢ 各データセットの、必須フィールドやオプションフィールド 16 ドメイン名
予測対象 Retail 小売組織によって販売された品目・製品の販売数の予測 Custom 分野指定なし Inventory planning 特定の商品をどれだけ在庫するかの予測 Ec2 capacity Amazon EC2 キャパシティの予測 Work force 労働力需要の予測 Web traffic ウェブプロパティへのウェブトラフィックの予測 Metrics 収益、売上、キャッシュフローなどの予測
データセット 17
データセット(共通事項) Forecastが使う学習データ。 ⚫ドメインにより既定される「必須フィールド」と「オプションフィールド」 がある ⚫ユーザによるフィールド追加も可能だが、以下に注意 ➢ AWSが予約済のフィールド名は使えない ➢ データセット毎にフィールド数上限がある ⚫追加するフィールドは、以下の2種類のいずれか
➢ 予測ディメンション ➢ ただの説明変数 18 ←詳細未把握
TARGET_TIME_SERIESデータセット 目的変数用のデータセット。必ず作成。 ⚫必須フィールドは基本3個 ⚫追加フィールドは「予測ディメンション」のみで、最大10個 ⚫timestampの時間粒度(数&単位)を定義する ➢ 1日、2時間、30分、・・・etc ➢ Forecastはアップロード時に、データを時間粒度にまとめる 19
フィールド名 型 必須 説明 item_id 文字列 必須 商品の固有 ID timestamp タイムスタンプ 必須 時間粒度に従った時刻 demand 小数 必須 【予測ターゲット】 timestamp時の販売数 location 文字列 オプション 商品を販売した店舗 参考: RetailドメインのTARGET_TIME_SERIES
RELATED_TIME_SERIESデータセット 時系列の説明変数用のデータセット。 ⚫必須フィールドは基本2個 ⚫追加フィールドは「予測ディメンション」(最大10個)と、「ただの 特徴量」(最大13個) 20 フィールド名 型 必須 説明
item_id 文字列 必須 商品の固有 ID timestamp タイムスタンプ 必須 時間粒度単位の時刻 price 少数 オプション 商品の価格 webpage_hits 少数 オプション ウェブページのヒット数。ECのみ適用 Promotion _applied 0/1 オプション その商品のマーケティングプロモー ションがあったかどうか (他4つ) オプション 参考: RetailドメインのRELATED_TIME_SERIES
ITEM_METADATAデータセット itemに関する時系列でない説明変数 ⚫必須フィールドが基本1個 ⚫追加フィールドは「予測ディメンション」らしい(最大9個) ⚫DeepAR+(後述)で使うらしい 21 フィールド名 型 必須 説明
item_id 文字列 必須 商品の固有 ID category 文字列 オプション カテゴリー(?) brand 文字列 オプション ブランド color 文字列 オプション 色 genre 文字列 オプション ジャンル(?) 参考: RetailドメインのITEM_METADATA
アルゴリズム algorithm 22
アルゴリズム algorithm 学習に使うアルゴリズムを、5手法から選択。 直接指定するか、AutoMLに任せて選んでもらうか。 23 アルゴリズム名 概要 ARIMA 自己回帰和分移動平均。古典的なやつ。 DeepAR+
再帰型ニューラルネットワーク (RNN) 。AWS開発らしい。 ハイパーパラメータの最適化 (HPO)もサポートしてるらしい。 ETS 指数平滑法。古典的なやつ。 NPTS ノンパラメトリック時系列予測。詳細未把握。 Prophet 局所的なベイズ構造時系列予測。Facebook開発らしい。
予測器・予測結果・ルックアップ表示 24
予測器・予測結果・ルックアップ表示 説明できるところまで辿り着けませんでした・・・。 (また機会があれば・・・) 25
3.操作的な話 26
前準備 ◼ S3 ⚫インポートする学習データをS3に置き、パスを取得 s3://<name of your S3 bucket>/<folder path>/<filename.csv>
⚫エクスポートするS3フォルダを用意、パスを取得 s3://<name of your S3 bucket>/<folder path>/<filename.csv> ◼ IAM ⚫S3参照用のIAMロールを作成、ARNを取得 arn:aws:iam::<account-id>:role/<ロール名> 27
実際の操作 以下の3つの方法で実行できます。 ⚫マネコン ⚫AWS CLI ⚫Pythonノートブック 今回は、マネコンでやってみました。 28 ですが、・・・
実際の操作 ・・・そろそろ時間押してるハズなので、操作は省略します。 29 やったのは開発者ガイドの「開始方法(コンソール)」です。 ① データセットグループを作成 ② TARGET_TIME_SERIESを定義して電力データをインポート ③ アルゴリズムETSを指定して学習
④ できた予測器で予測結果を作成 ⑤ 予測結果のルックアップ ⑥ 予測結果のダウンロード
実際にやった証拠1: 終盤のダッシュボード 30
実際にやった証拠2: ルックアップの表示 31
実際にやった証拠3: S3エクスポートファイル 32
4.まとめ 33
忘れないうちに大事なこと AutoMLの一般的な注意点ですが、Forecastにも当ては まるかとと思います。 ⚫データや予測に対する、最低限の理解は必要 ➢ 手に入らない未来値の使用とか、因果の逆転とか ⚫精度が出ないときには、学習データの工夫が必要 ➢ 時間粒度変えるとか、特徴量加工・追加とか 34
⇒ 結局、専門家の助けがいることになるかも・・・
今回できたこと ⚫開発者ガイドを読んだ ⚫実際にマネコンでの一通りの操作を体験した ⚫それを元にForecastの構成要素を整理してみた (実質これが成果) 35 ⚫開発者ガイドの日本語訳に変なところがあったので、初めて AWSにフィードバックを送ってみた
今回わからなかったこと ⚫予測ディメンションは、何にどう使うのか? ⚫スキーマjsonで、予測ディメンションとただの特徴量の区別は? ⚫インポート時の時間粒度調整って、「足せない値」は大丈夫? ⚫学習パラメータで指定する、「予測期間 horizon」と「予測頻 度 frequency」は何者? ⚫予測器や予測結果はどこに保持されているの? ⚫未来予測値を使った予測って、できるよね?
⚫顧客に提供するサービスで使っていいの? ・・・etc 36
今回できなかったこと ⚫「実際に意味のあるデータ」を使っての予測 ⚫RELATED_TIME_SERIES、ITEM_METADATAの使用 ⚫学習パラメータの理解と、使用 ⚫各アルゴリズムの理解と、使用、比較 ⚫各ドメインの理解と、使用 ⚫処理時間、課金の測定 ⚫APIの把握 ・・・etc 37
今後の抱負 ⚫実務で時系列データ回帰のお題がいくつかあるので、使ってみよ うと思う ⚫それを通じて、「わからなかったこと」、「できなかったこと」を解消し ていきたいと思う 38 ⚫実務事例を登壇で発表できるように、会社とうまく調整できたら いいなぁ(Forecastに限らず)
39 俺たちの戦いはこれからだ!!
40 ご清聴ありがとうございました。