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
210
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
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
440
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
160
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.5k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.4k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
270
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.3k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.3k
Other Decks in Technology
See All in Technology
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
170
Goで作って学ぶWebSocket
ryuichi1208
3
2.4k
OPENLOGI Company Profile for engineer
hr01
1
20k
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
390
AI Agent時代なのでAWSのLLMs.txtが欲しい!
watany
2
160
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
510
Two Blades, One Journey: Engineering While Managing
ohbarye
3
680
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
250
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
1.1k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
6
1.8k
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
How to train your dragon (web standard)
notwaldorf
91
5.9k
Agile that works and the tools we love
rasmusluckow
328
21k
Docker and Python
trallard
44
3.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Building Applications with DynamoDB
mza
93
6.2k
Adopting Sorbet at Scale
ufuk
74
9.2k
Being A Developer After 40
akosma
89
590k
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のセッションが開催 • 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!