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
200
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
370
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
120
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.4k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.3k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
240
不確実性に打ち勝つ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
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
410
スケールし続ける事業とサービスを支える組織とアーキテクチャの生き残り戦略 / The survival strategy for Money Forward’s engineering.
moneyforward
0
240
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
150
プロダクト組織で取り組むアドベントカレンダー/Advent Calendar in Product Teams
mixplace
0
660
Denoで作るチーム開発生産性向上のためのCLIツール
sansantech
PRO
0
140
20241218_マルチアカウント環境におけるIAM_Access_Analyzerによる権限管理.pdf
nrinetcom
PRO
3
150
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
2
190
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
140
最近のSfM手法まとめ - COLMAP / GLOMAPを中心に -
kwchrk
8
1.8k
Azureの開発で辛いところ
re3turn
0
200
大規模言語モデルとそのソフトウェア開発に向けた応用 (2024年版)
kazato
2
450
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
1.5k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Thoughts on Productivity
jonyablonski
68
4.4k
Rails Girls Zürich Keynote
gr2m
94
13k
How to Ace a Technical Interview
jacobian
276
23k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
340
Producing Creativity
orderedlist
PRO
343
39k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
190
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のセッションが開催 • 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!