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
170
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.6k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
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
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
100
Global Databaseで実現するマルチリージョン自動切替とBlue/Greenデプロイ
j2yano
0
130
事業を差別化する技術を生み出す技術
pyama86
2
400
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
120
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
500
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
170
データモデルYANGの処理系を再発明した話
tjmtrhs
0
120
OPENLOGI Company Profile for engineer
hr01
1
20k
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
480
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.9k
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
150
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.1k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Music & Morning Musume
bryan
46
6.4k
A Tale of Four Properties
chriscoyier
158
23k
Documentation Writing (for coders)
carmenintech
68
4.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Git: the NoSQL Database
bkeepers
PRO
428
65k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Unsuck your backbone
ammeep
669
57k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
Producing Creativity
orderedlist
PRO
344
40k
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のセッションが開催 • 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!