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
SageMakerから学ぶ時系列情報の予測に機械学習を適⽤するコ ツ
Search
NAVITIME JAPAN
PRO
September 22, 2019
Technology
0
190
SageMakerから学ぶ時系列情報の予測に機械学習を適⽤するコ ツ
2019年9月22日に開催された「第8回 Amazon SageMaker 事例祭り」にて発表した資料です。
NAVITIME JAPAN
PRO
September 22, 2019
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
22
14k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
260
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
88
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.3k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.3k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
220
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.2k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.2k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.2k
Other Decks in Technology
See All in Technology
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
200
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
400
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
350
強いチームと開発生産性
onk
PRO
34
11k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
The Cult of Friendly URLs
andyhume
78
6k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
What's in a price? How to price your products and services
michaelherold
243
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Unsuck your backbone
ammeep
668
57k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Transcript
SageMakerから学ぶ 時系列情報の予測に 機械学習を適用するコツ 株式会社ナビタイムジャパン 開発部 早川 拳人
自己紹介
自己紹介 • 早川 拳人(はやかわ けんと) • 経歴 ◦ 2017 新卒として入社、現在3年目 ◦ 2017-18
地図データの運用・改善 ◦ 2018- 交通情報に関わる開発 • 機械学習のスキル ◦ 大学で講義をとってた ◦ 今年の4月から本で独学
会社紹介
主にBtoCで多彩な経路探索サービスを展開 公共交通 ドライブ ツーリング 外国人&海外 トラベル& フィットネス
ユーザー数 月間ユーザー数 約5100万UU 有料会員数 約480万人 ※2018年9月現在 日本人の2.5人に1人が使っている サービス 2001年にサービス提供を開始以来、 確実に増え続けている
最近のリリース紹介
「2019お盆渋滞予測」を提供 合計高速8路線の上下線に対応!
本題
問題設定 • 予測したいもの ◦ ある道路のある地点を通過する速度 例えば.... 明日の16時に 〇km/hで走れるのか
問題設定 • 使えるデータ ◦ 過去ユーザが実際に通過した速度 ▪ どこをいつ〇〇km/hで通過したか ◦ その地点の情報 ▪
高速, 一般道 ▪ 本線, トンネル, 交差点内
従来の手法 • 曜日ごとにある程度周期性があることが分かっている ◦ 平日は通勤時間帯が混雑する ◦ 土曜は外出が増えるのでより渋滞が発生する ◦ 日曜は夕方に帰宅が集中する •
→過去の同じ曜日・時間帯の速度の調和平均
従来の手法の課題 • 過去の速度しか予測に用いていない • 曜日ごとの周期性に合わないパターンが存在する ◦ 天気 ▪ 雨だと視界が悪いため自動車の速度が落ちる ◦
イベント ▪ お祭りによる交通規制によってその周辺が混雑 • 直近2か月分しかインプットデータに使用していない
さらに精度を上げるために • 速度以外の特徴を使いたい ◦ 例) 制限速度、天気、イベント.... • 道路の接続性や類似性を考慮したい ◦ 従来は地点単位の予測だった
この2地点の速度には 関係性があるのでは?
さらに精度を上げるために • 考慮するパラメータが増えてくる ◦ 最適な考慮方法が分からない ◦ 既存の統計予測だと限界がある 機械学習を利用しよう!
とりあえず試してみたいが、、、 • どの手法が適切なのか分からない • どうやってモデリングするのか 分からない • 実装難しそう
悩んでいたところに、 SageMakerハンズオンのお誘い
SageMakerを利用して実装しよう! ハンズオンで悩みが解決! • どの手法が適切なのか分からない • どうやってモデリングするのか 分からない ◦ プロが相談に乗ってくれる •
実装難しそう ◦ ビルトインアルゴリズム ▪ CSV形式で機械学習を適用できる ◦ 実際にデモを行ってくれる
今回用いた予測手法 • XGBoost ◦ 勾配ブースティング木を扱うためのフレームワーク ▪ 決定木を複数組み合わせることでより精度の高いモデルを 構築できる ◦ Kaggleなどのデータ分析コンペでよく使われている
◦ Sagemakerのビルトインアルゴリズムでサポートされている
決定木 例)自動車の制動距離を予測する 60km/h以上出ていたか No Yes 20m 雨が降っていたか Yes No 24m
40m • 条件分岐によってデータを分割 • 木構造ができ、葉ノードが予測結果にな る • どの特徴が予測に重要か計算できる
今回扱ったデータ × 約120万レコード 地点を識別するID 地点の情報を表すID
ひとまずこのまま学習させてみた結果 特徴は捉えられていそう ある地点の1日の実際の速度と予測の比較
決定木を可視化
決定木を可視化 IDによって 条件分岐が発生して しまっている
IDによる条件分岐のなにが良くないか • 血液型を例に説明する • 次のデータを機械学習の特徴量として使うことを考える
IDによる条件分岐のなにが良くないか • 文字列を特徴量には使えないため、整数に置き換える ◦ 今回扱ったデータはこの状態
IDによる条件分岐のなにが良くないか • このまま学習させてしまうと意図しない条件分岐が発生 学習 blood_typeが2以上か Yes No
ダミー変数化 • one-hot 表現に変換すること ◦ ひとつの要素が 1 でその他が 0 のベクトルで表すこと
ダミー変数化 • これにより意味のある条件分岐にさせることが出来る blood_type_2が0.5以上か Yes No 学習
ダミー変数化の問題 • カテゴリの数分カラムが増える ◦ 全国の2000万地点分ダミー変数化するのは現実的でない 地点ごとの平均速度をカラムに持たせる
IDによる分岐がなくなり精度向上! 実際の決定木に うまく適用できた
季節変動を考える • 月単位で渋滞の規模が異なることが分かっている ◦ 現状は直近2か月を元に作成しているため、特に 3月の予測は難しい https://www.shutoko.jp/traffic/traffic-info/guide/guide_01/
季節変動を考える • 1年前の平均速度をカラムに追加する 季節変動考慮なしの予測 季節変動考慮ありの予測 速度の落ち込みが より正確に予測できるように
データ加工や分析について • Pythonで分析/可視化するとメモリエラーが度々発生 ◦ そのままインスタンスごと固まることも....
Athenaを利用する • S3のデータに対して標準SQLを用いて解析出来る • 実行が速い • Re:dashを使うと可視化が楽 ◦ クエリだけでグラフを作成可能
Athenaを利用する • aws cliからAthenaのクエリを実行できるので、 ノートブッ クインスタンス上から連携出来る ◦ ノイズ除去や加工をしてしまうと楽
やったことまとめ • ダミー変数化 ◦ カテゴリが多い場合は別の手段を考える • 季節変動を考慮 • データ加工/分析はAthenaを利用した
従来手法 vs XGBoost • 所要時間の二乗誤差の平均で精度比較 従来手法 XGBoost 0.05445 0.04279
感じたこと
ノートブックインスタンスで快適に開発できる • 作成後でも柔軟にスペック変更可能 ◦ インスタンスが停止中のみ • 利用するデータサイズによって変更すると、開発速度を維持するこ とが出来る
ノートブックインスタンスのメモリは多めにしておくと良 い • メモリエラーが出てしまうとインスタンスごと固まることが何回かあっ た ◦ ファイル保存も出来なくなるので作業が消えてしまったことも....
決定木/特徴量の可視化にビルトインアルゴリズムで 対応して欲しい • 現状、S3に配置されたモデルをデシリアライズする必要がある • (ついでに特徴量が変数名になってくれたら嬉しい) このへん
まとめ
• SageMakerを使って機械学習をさくっとお試しできた • 機械学習の知識は実践する中でも習得可能 • この後のハンズオンに参加後、 とりあえず機 械学習を試してみてはいかかでしょうか?
• AWS InnovateでいくつかSagemakerのセッションが開催 • 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!