Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
SageMakerから学ぶ 時系列情報の予測に 機械学習を適用するコツ 株式会社ナビタイムジャパン 開発部 早川 拳人
Slide 2
Slide 2 text
自己紹介
Slide 3
Slide 3 text
自己紹介 ● 早川 拳人(はやかわ けんと) ● 経歴 ○ 2017 新卒として入社、現在3年目 ○ 2017-18 地図データの運用・改善 ○ 2018- 交通情報に関わる開発 ● 機械学習のスキル ○ 大学で講義をとってた ○ 今年の4月から本で独学
Slide 4
Slide 4 text
会社紹介
Slide 5
Slide 5 text
主にBtoCで多彩な経路探索サービスを展開 公共交通 ドライブ ツーリング 外国人&海外 トラベル& フィットネス
Slide 6
Slide 6 text
ユーザー数 月間ユーザー数 約5100万UU 有料会員数 約480万人 ※2018年9月現在 日本人の2.5人に1人が使っている サービス 2001年にサービス提供を開始以来、 確実に増え続けている
Slide 7
Slide 7 text
最近のリリース紹介
Slide 8
Slide 8 text
「2019お盆渋滞予測」を提供 合計高速8路線の上下線に対応!
Slide 9
Slide 9 text
本題
Slide 10
Slide 10 text
問題設定 ● 予測したいもの ○ ある道路のある地点を通過する速度 例えば.... 明日の16時に 〇km/hで走れるのか
Slide 11
Slide 11 text
問題設定 ● 使えるデータ ○ 過去ユーザが実際に通過した速度 ■ どこをいつ〇〇km/hで通過したか ○ その地点の情報 ■ 高速, 一般道 ■ 本線, トンネル, 交差点内
Slide 12
Slide 12 text
従来の手法 ● 曜日ごとにある程度周期性があることが分かっている ○ 平日は通勤時間帯が混雑する ○ 土曜は外出が増えるのでより渋滞が発生する ○ 日曜は夕方に帰宅が集中する ● →過去の同じ曜日・時間帯の速度の調和平均
Slide 13
Slide 13 text
従来の手法の課題 ● 過去の速度しか予測に用いていない ● 曜日ごとの周期性に合わないパターンが存在する ○ 天気 ■ 雨だと視界が悪いため自動車の速度が落ちる ○ イベント ■ お祭りによる交通規制によってその周辺が混雑 ● 直近2か月分しかインプットデータに使用していない
Slide 14
Slide 14 text
さらに精度を上げるために ● 速度以外の特徴を使いたい ○ 例) 制限速度、天気、イベント.... ● 道路の接続性や類似性を考慮したい ○ 従来は地点単位の予測だった この2地点の速度には 関係性があるのでは?
Slide 15
Slide 15 text
さらに精度を上げるために ● 考慮するパラメータが増えてくる ○ 最適な考慮方法が分からない ○ 既存の統計予測だと限界がある 機械学習を利用しよう!
Slide 16
Slide 16 text
とりあえず試してみたいが、、、 ● どの手法が適切なのか分からない ● どうやってモデリングするのか 分からない ● 実装難しそう
Slide 17
Slide 17 text
悩んでいたところに、 SageMakerハンズオンのお誘い
Slide 18
Slide 18 text
SageMakerを利用して実装しよう! ハンズオンで悩みが解決! ● どの手法が適切なのか分からない ● どうやってモデリングするのか 分からない ○ プロが相談に乗ってくれる ● 実装難しそう ○ ビルトインアルゴリズム ■ CSV形式で機械学習を適用できる ○ 実際にデモを行ってくれる
Slide 19
Slide 19 text
今回用いた予測手法 ● XGBoost ○ 勾配ブースティング木を扱うためのフレームワーク ■ 決定木を複数組み合わせることでより精度の高いモデルを 構築できる ○ Kaggleなどのデータ分析コンペでよく使われている ○ Sagemakerのビルトインアルゴリズムでサポートされている
Slide 20
Slide 20 text
決定木 例)自動車の制動距離を予測する 60km/h以上出ていたか No Yes 20m 雨が降っていたか Yes No 24m 40m ● 条件分岐によってデータを分割 ● 木構造ができ、葉ノードが予測結果にな る ● どの特徴が予測に重要か計算できる
Slide 21
Slide 21 text
今回扱ったデータ × 約120万レコード 地点を識別するID 地点の情報を表すID
Slide 22
Slide 22 text
ひとまずこのまま学習させてみた結果 特徴は捉えられていそう ある地点の1日の実際の速度と予測の比較
Slide 23
Slide 23 text
決定木を可視化
Slide 24
Slide 24 text
決定木を可視化 IDによって 条件分岐が発生して しまっている
Slide 25
Slide 25 text
IDによる条件分岐のなにが良くないか ● 血液型を例に説明する ● 次のデータを機械学習の特徴量として使うことを考える
Slide 26
Slide 26 text
IDによる条件分岐のなにが良くないか ● 文字列を特徴量には使えないため、整数に置き換える ○ 今回扱ったデータはこの状態
Slide 27
Slide 27 text
IDによる条件分岐のなにが良くないか ● このまま学習させてしまうと意図しない条件分岐が発生 学習 blood_typeが2以上か Yes No
Slide 28
Slide 28 text
ダミー変数化 ● one-hot 表現に変換すること ○ ひとつの要素が 1 でその他が 0 のベクトルで表すこと
Slide 29
Slide 29 text
ダミー変数化 ● これにより意味のある条件分岐にさせることが出来る blood_type_2が0.5以上か Yes No 学習
Slide 30
Slide 30 text
ダミー変数化の問題 ● カテゴリの数分カラムが増える ○ 全国の2000万地点分ダミー変数化するのは現実的でない 地点ごとの平均速度をカラムに持たせる
Slide 31
Slide 31 text
IDによる分岐がなくなり精度向上! 実際の決定木に うまく適用できた
Slide 32
Slide 32 text
季節変動を考える ● 月単位で渋滞の規模が異なることが分かっている ○ 現状は直近2か月を元に作成しているため、特に 3月の予測は難しい https://www.shutoko.jp/traffic/traffic-info/guide/guide_01/
Slide 33
Slide 33 text
季節変動を考える ● 1年前の平均速度をカラムに追加する 季節変動考慮なしの予測 季節変動考慮ありの予測 速度の落ち込みが より正確に予測できるように
Slide 34
Slide 34 text
データ加工や分析について ● Pythonで分析/可視化するとメモリエラーが度々発生 ○ そのままインスタンスごと固まることも....
Slide 35
Slide 35 text
Athenaを利用する ● S3のデータに対して標準SQLを用いて解析出来る ● 実行が速い ● Re:dashを使うと可視化が楽 ○ クエリだけでグラフを作成可能
Slide 36
Slide 36 text
Athenaを利用する ● aws cliからAthenaのクエリを実行できるので、 ノートブッ クインスタンス上から連携出来る ○ ノイズ除去や加工をしてしまうと楽
Slide 37
Slide 37 text
やったことまとめ ● ダミー変数化 ○ カテゴリが多い場合は別の手段を考える ● 季節変動を考慮 ● データ加工/分析はAthenaを利用した
Slide 38
Slide 38 text
従来手法 vs XGBoost ● 所要時間の二乗誤差の平均で精度比較 従来手法 XGBoost 0.05445 0.04279
Slide 39
Slide 39 text
感じたこと
Slide 40
Slide 40 text
ノートブックインスタンスで快適に開発できる ● 作成後でも柔軟にスペック変更可能 ○ インスタンスが停止中のみ ● 利用するデータサイズによって変更すると、開発速度を維持するこ とが出来る
Slide 41
Slide 41 text
ノートブックインスタンスのメモリは多めにしておくと良 い ● メモリエラーが出てしまうとインスタンスごと固まることが何回かあっ た ○ ファイル保存も出来なくなるので作業が消えてしまったことも....
Slide 42
Slide 42 text
決定木/特徴量の可視化にビルトインアルゴリズムで 対応して欲しい ● 現状、S3に配置されたモデルをデシリアライズする必要がある ● (ついでに特徴量が変数名になってくれたら嬉しい) このへん
Slide 43
Slide 43 text
まとめ
Slide 44
Slide 44 text
● SageMakerを使って機械学習をさくっとお試しできた ● 機械学習の知識は実践する中でも習得可能 ● この後のハンズオンに参加後、 とりあえず機 械学習を試してみてはいかかでしょうか?
Slide 45
Slide 45 text
● AWS InnovateでいくつかSagemakerのセッションが開催 ● 無料&ライブ配信なので、興味ある方はぜひ!
Slide 46
Slide 46 text
ご清聴ありがとうございました!