MoTLab -GO Inc. Engineering Blog-MoTLab -GO Inc. Engineering Blog-

タクシーアプリ特有の到着予想時間算出エンジンの特徴

AIAlgorithm
November 26, 2021

AI技術開発部アルゴリズムグループの齋藤です。

今回は前回紹介した到着予想時間(Estimated Time of Arrival, ETA)について、タクシーアプリ「GO」を運用する際に出てくる特有の問題を考慮して開発した内製ETA算出エンジンの概要と特徴について紹介します。


はじめに

前回の記事では弊社が提供するタクシーアプリ「GO」における非常に大事な到着予想時間(Estimated Time of Arrival, ETA)とは何か、精度向上のためにどのような工夫をしているのかについて紹介させていただきました。

cf. https://lab.mo-t.com/blog/what-is-eta

今回はETAを算出するために

  • ETA算出エンジンを内製する理由
  • 内製したETA算出エンジンの概要と特徴

について、タクシーアプリ「GO」特有の問題と共に詳細に説明させていただきます。

なぜETA算出エンジンを内製したのか

これまでタクシーアプリ「GO」をはじめ、ETAを算出する必要があるユースケースでは外部の経路探索APIを用いておりました。

しかし、以下に示したような問題がユーザの皆様により良い体験を提供することや、今後のサービス拡大に向けてより顕著になってきたことからETA算出エンジンの内製に踏み切りました。

  1. 外部サービス利用コストの増大
  2. タクシー配車アプリ固有の問題設定とのズレ

外部サービス利用コストの増大

こちらは、外部サービスに依存しているようなサービスでは共通の問題かと思います。

料金体系は契約によって色々なケースがあるかと思います。例えば従量課金制などの契約の場合、サービスの規模拡大に伴いリクエスト数などが増えていくことで利用コストも比例して増えてしまいます。

外部サービスを利用することで、研究開発・運用コストを最小限に品質の高いサービスの提供が可能になる一方、増大するコストによってより便利なサービス提案などの足枷になってしまうケースも多々あります。そのため、内製することで外部サービス利用に掛かるコストを気にせず、より多くのユーザ満足度を向上させるような施策に投資できるという点で内製のメリットが十分にあると思います。

タクシー配車アプリ特有の問題設定とのズレ

2つ目は内製ETA算出エンジン導入の大きな動機となった問題です。

タクシー配車アプリで想定する問題設定の複雑性から、これまで外部の汎用的な経路探索サービスを利用する際は、実際の知りたい時間とは少しズレた範囲を予測していました。

具体的には下図で示される2つの時間のズレがユーザ満足度を改悪させる大きな要因の1つとなっておりました。

  • 経路探索によって算出される移動時間
  • リクエストから到着までの時間

An image from Notion

タクシー配車アプリでユーザに表示するETAは、以下5つのイベントに掛かる時間です。

  1. ユーザが周辺のタクシーにリクエストを送る (「タクシーを呼ぶ」ボタンを押す)
  2. タクシー乗務員さんがリクエストを了承する
  3. タクシー乗務員さんが目的地(ユーザの位置)までの移動経路を考える
  4. タクシー乗務員さんが目的地に向かって迎車を開始する
  5. ユーザの指定した迎車地に到着する

特に、1-3までのイベントというのはタクシー配車アプリ特有の時間となっているため一般的な経路探索エンジンなどでは考慮されず、そのまま経路探索によって算出される移動時間を用いてしまうと実際の表示よりも車両が遅れてしまう(遅着)ことの原因となってしまいユーザ体験の悪化につながってしまいます。

また、1-3までの経過時間というのは、個々のタクシー乗務員さんによる要因、4-5の経過時間というのは迎車地までの経路や距離などによって大きく変わるため、定数などを掛けてETAを長く表示させるなどの単純なロジックだと全体的な精度改善は期待できません。

このような問題を解決するため、コスト削減をしつつ、算出する時間などの設定を柔軟にカスタマイズできるETA算出エンジンの開発を行っております。

ETA算出エンジンの概要

そこで、タクシー配車アプリに特化したETA算出エンジンとして、以下のような構造の機械学習モデルを構築して運用しています。

An image from Notion

先程も例として挙げましたが、「タクシーを呼ぶ」ボタンを押してから到着までの時間はタクシー乗務員さんによるクセや迎車地までの距離や道路の混雑状況、道路状況などは時間帯によって大きく影響してきます。

そのため、主にタクシーアプリ「GO」に蓄積された実際の迎車状況の実績データと地図から得られる経路情報を用いて機械学習モデルを構築し、タクシー配車アプリに特化したETAエンジンの学習を行いました。

構築したMLモデルの感度分析

実際に構築したETA算出エンジンが

「時間帯による混雑状況を加味しているのか」

というのを検証するためモデル特徴量の感度分析を行ってみました。

時間帯は道路の混雑状況やタクシー車両の数などに大きく関わってくるため、ETAも時間帯によって大きく変動します。

例えば、ある1週間の30分単位でのアプリ経由迎車数と平均迎車時間を可視化すると以下のような傾向となります。

An image from Notion

グラフからもわかるように、以下の要因などから時間帯によって迎車数や迎車時間は大きく異なります。

  • 朝の通勤時間帯(8-10時)は道路が混んでいるため動きづらく迎車時間が長くなる
  • 夜の帰宅時間帯(19時頃)も道路が混みだして迎車時間が長くなる
  • 深夜帯(0 - 4時)は道路が比較的空いていて動きやすく、迎車時間が短くなりがち, etc.

このような時間帯による傾向が構築した機械学習モデルにも表れていれば直感的にも理解しやすくなります。

構築したモデルの時間帯変化を検証するために、推論時に特徴量として用いている入力時間のみを変化させてみると以下のようになりました。

An image from Notion

上述した平均ETAと同様に通勤時間帯で多少ETAが長くなっており、深夜帯では短くなっている傾向がわかるかと思います。平均迎車時間との相関係数も0.8以上となっており構築した機械学習モデルが時間帯による傾向を捉えていそうです。

細かい検証はまだできておりませんが、例えばアプリ経由の迎車数と乗務員の人数を比較すると多様性がわかります。

An image from Notion

一部の乗務員さんがほとんどのアプリ経由の迎車をさばいているわけではなく、多くの乗務員さんが少しずつアプリ経由の迎車に向かうことで全体の需要をカバーしているのが現状です。

そのためETA算出時には各乗務員さんの傾向を考慮できるとさらなる精度改善が期待できます。

モデルの特徴量などにはまだまだ改善の余地があるため引き続き改善を続けていきます!

おわりに

本記事では、タクシーアプリ「GO」においてETA算出エンジンを内製する理由から概要、モデル特徴量の感度分析の一例を紹介させていただきました。

ETAはアプリを使用してくださるユーザの皆様をはじめ、タクシーアプリ「GO」を導入してくださっているタクシー乗務員の皆様のUXに大きく影響を与える技術です。

今回のようなMoTならではのデータ活用、アプローチを検討し、継続的に改善を行なっていきます!


We're Hiring!

📢
Mobility Technologies AI技術開発部 アルゴリズムグループでは、「データ分析」「機械学習モデル構築」だけでなく、サービス影響までを考えたエンジニアリングにも挑戦してみたいデータサイエンティストの方も募集しています!

興味のある方は 採用ページ も見ていただけると嬉しいです。

Twitter @mot_techtalk のフォローもよろしくお願いします!