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.4k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.4k
Other Decks in Technology
See All in Technology
MIMEと文字コードの闇
hirachan
2
1.4k
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
7
670
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
150
ESXi で仮想化した ARM 環境で LLM を動作させてみるぞ
unnowataru
0
170
Ruby on Railsで持続可能な開発を行うために取り組んでいること
am1157154
3
140
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
1
350
AIエージェント元年@日本生成AIユーザ会
shukob
1
200
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
360
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
110
What's new in Go 1.24?
ciarana
1
110
ディスプレイ広告(Yahoo!広告・LINE広告)におけるバックエンド開発
lycorptech_jp
PRO
0
340
Raycast AI APIを使ってちょっと便利な拡張機能を作ってみた / created-a-handy-extension-using-the-raycast-ai-api
kawamataryo
0
210
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
A Tale of Four Properties
chriscoyier
158
23k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Writing Fast Ruby
sferik
628
61k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
990
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Faster Mobile Websites
deanohume
306
31k
What's in a price? How to price your products and services
michaelherold
244
12k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
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のセッションが開催 • 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!