Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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 雨が降っていたか
YesNo
24m 40m
● 条件分岐によってデータを分割
● 木構造ができ、葉ノードが予測結果にな
る
● どの特徴が予測に重要か計...
今回扱ったデータ
× 約120万レコード
地点を識別するID 地点の情報を表すID
ひとまずこのまま学習させてみた結果
特徴は捉えられていそう
ある地点の1日の実際の速度と予測の比較
決定木を可視化
決定木を可視化
IDによって
条件分岐が発生して
しまっている
IDによる条件分岐のなにが良くないか
● 血液型を例に説明する
● 次のデータを機械学習の特徴量として使うことを考える
IDによる条件分岐のなにが良くないか
● 文字列を特徴量には使えないため、整数に置き換える
○ 今回扱ったデータはこの状態
IDによる条件分岐のなにが良くないか
● このまま学習させてしまうと意図しない条件分岐が発生
学習
blood_typeが2以上か
YesNo
ダミー変数化
● one-hot 表現に変換すること
○ ひとつの要素が 1 でその他が 0 のベクトルで表すこと
ダミー変数化
● これにより意味のある条件分岐にさせることが出来る
blood_type_2が0.5以上か
YesNo
学習
ダミー変数化の問題
● カテゴリの数分カラムが増える
○ 全国の2000万地点分ダミー変数化するのは現実的でない
地点ごとの平均速度をカラムに持たせる
IDによる分岐がなくなり精度向上!
実際の決定木に
うまく適用できた
季節変動を考える
● 月単位で渋滞の規模が異なることが分かっている
○ 現状は直近2か月を元に作成しているため、特に 3月の予測は難しい
https://www.shutoko.jp/traffic/traffic-info/guide/gui...
季節変動を考える
● 1年前の平均速度をカラムに追加する
季節変動考慮なしの予測 季節変動考慮ありの予測
速度の落ち込みが
より正確に予測できるように
データ加工や分析について
● Pythonで分析/可視化するとメモリエラーが度々発生
○ そのままインスタンスごと固まることも....
Athenaを利用する
● S3のデータに対して標準SQLを用いて解析出来る
● 実行が速い
● Re:dashを使うと可視化が楽
○ クエリだけでグラフを作成可能
Athenaを利用する
● aws cliからAthenaのクエリを実行できるので、       ノートブッ
クインスタンス上から連携出来る
○ ノイズ除去や加工をしてしまうと楽
やったことまとめ
● ダミー変数化
○ カテゴリが多い場合は別の手段を考える
● 季節変動を考慮
● データ加工/分析はAthenaを利用した
従来手法 vs XGBoost
● 所要時間の二乗誤差の平均で精度比較
従来手法 XGBoost
0.05445 0.04279
感じたこと
ノートブックインスタンスで快適に開発できる
● 作成後でも柔軟にスペック変更可能
○ インスタンスが停止中のみ
● 利用するデータサイズによって変更すると、開発速度を維持するこ
とが出来る
ノートブックインスタンスのメモリは多めにしておくと良
い
● メモリエラーが出てしまうとインスタンスごと固まることが何回かあっ
た
○ ファイル保存も出来なくなるので作業が消えてしまったことも....
決定木/特徴量の可視化にビルトインアルゴリズムで
対応して欲しい
● 現状、S3に配置されたモデルをデシリアライズする必要がある
● (ついでに特徴量が変数名になってくれたら嬉しい)
このへん
まとめ
● SageMakerを使って機械学習をさくっとお試しできた
● 機械学習の知識は実践する中でも習得可能
● この後のハンズオンに参加後、              とりあえず機
械学習を試してみてはいかかでしょうか?
● AWS InnovateでいくつかSagemakerのセッションが開催
● 無料&ライブ配信なので、興味ある方はぜひ!
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in …5
×

2

Share

Download to read offline

SageMakerから学ぶ時系列情報の予測に機械学習を適⽤するコ ツ

Download to read offline

2019年9月22日に開催された「第8回 Amazon SageMaker 事例祭り」にて発表した資料です。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

SageMakerから学ぶ時系列情報の予測に機械学習を適⽤するコ ツ

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

    Jun. 4, 2021
  • ssuserbbde5b

    Sep. 25, 2019

2019年9月22日に開催された「第8回 Amazon SageMaker 事例祭り」にて発表した資料です。

Views

Total views

2,786

On Slideshare

0

From embeds

0

Number of embeds

2

Actions

Downloads

29

Shares

0

Comments

0

Likes

2

×