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
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.4k
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
230
Taming you application's environments
salaboy
0
190
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
150
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
Featured
See All Featured
Statistics for Hackers
jakevdp
796
220k
Become a Pro
speakerdeck
PRO
25
5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Teambox: Starting and Learning
jrom
133
8.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
A better future with KSS
kneath
238
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
It's Worth the Effort
3n
183
27k
Designing for humans not robots
tammielis
250
25k
Unsuck your backbone
ammeep
668
57k
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 ご清聴ありがとうございました。