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を算出するために
について、タクシーアプリ「GO」特有の問題と共に詳細に説明させていただきます。
これまでタクシーアプリ「GO」をはじめ、ETAを算出する必要があるユースケースでは外部の経路探索APIを用いておりました。
しかし、以下に示したような問題がユーザの皆様により良い体験を提供することや、今後のサービス拡大に向けてより顕著になってきたことからETA算出エンジンの内製に踏み切りました。
こちらは、外部サービスに依存しているようなサービスでは共通の問題かと思います。
料金体系は契約によって色々なケースがあるかと思います。例えば従量課金制などの契約の場合、サービスの規模拡大に伴いリクエスト数などが増えていくことで利用コストも比例して増えてしまいます。
外部サービスを利用することで、研究開発・運用コストを最小限に品質の高いサービスの提供が可能になる一方、増大するコストによってより便利なサービス提案などの足枷になってしまうケースも多々あります。そのため、内製することで外部サービス利用に掛かるコストを気にせず、より多くのユーザ満足度を向上させるような施策に投資できるという点で内製のメリットが十分にあると思います。
2つ目は内製ETA算出エンジン導入の大きな動機となった問題です。
タクシー配車アプリで想定する問題設定の複雑性から、これまで外部の汎用的な経路探索サービスを利用する際は、実際の知りたい時間とは少しズレた範囲を予測していました。
具体的には下図で示される2つの時間のズレがユーザ満足度を改悪させる大きな要因の1つとなっておりました。
タクシー配車アプリでユーザに表示するETAは、以下5つのイベントに掛かる時間です。
特に、1-3までのイベントというのはタクシー配車アプリ特有の時間となっているため一般的な経路探索エンジンなどでは考慮されず、そのまま経路探索によって算出される移動時間を用いてしまうと実際の表示よりも車両が遅れてしまう(遅着)ことの原因となってしまいユーザ体験の悪化につながってしまいます。
また、1-3までの経過時間というのは、個々のタクシー乗務員さんによる要因、4-5の経過時間というのは迎車地までの経路や距離などによって大きく変わるため、定数などを掛けてETAを長く表示させるなどの単純なロジックだと全体的な精度改善は期待できません。
このような問題を解決するため、コスト削減をしつつ、算出する時間などの設定を柔軟にカスタマイズできるETA算出エンジンの開発を行っております。
そこで、タクシー配車アプリに特化したETA算出エンジンとして、以下のような構造の機械学習モデルを構築して運用しています。
先程も例として挙げましたが、「タクシーを呼ぶ」ボタンを押してから到着までの時間はタクシー乗務員さんによるクセや迎車地までの距離や道路の混雑状況、道路状況などは時間帯によって大きく影響してきます。
そのため、主にタクシーアプリ「GO」に蓄積された実際の迎車状況の実績データと地図から得られる経路情報を用いて機械学習モデルを構築し、タクシー配車アプリに特化したETAエンジンの学習を行いました。
実際に構築したETA算出エンジンが
「時間帯による混雑状況を加味しているのか」
というのを検証するためモデル特徴量の感度分析を行ってみました。
時間帯は道路の混雑状況やタクシー車両の数などに大きく関わってくるため、ETAも時間帯によって大きく変動します。
例えば、ある1週間の30分単位でのアプリ経由迎車数と平均迎車時間を可視化すると以下のような傾向となります。
グラフからもわかるように、以下の要因などから時間帯によって迎車数や迎車時間は大きく異なります。
このような時間帯による傾向が構築した機械学習モデルにも表れていれば直感的にも理解しやすくなります。
構築したモデルの時間帯変化を検証するために、推論時に特徴量として用いている入力時間のみを変化させてみると以下のようになりました。
上述した平均ETAと同様に通勤時間帯で多少ETAが長くなっており、深夜帯では短くなっている傾向がわかるかと思います。平均迎車時間との相関係数も0.8以上となっており構築した機械学習モデルが時間帯による傾向を捉えていそうです。
細かい検証はまだできておりませんが、例えばアプリ経由の迎車数と乗務員の人数を比較すると多様性がわかります。
一部の乗務員さんがほとんどのアプリ経由の迎車をさばいているわけではなく、多くの乗務員さんが少しずつアプリ経由の迎車に向かうことで全体の需要をカバーしているのが現状です。
そのためETA算出時には各乗務員さんの傾向を考慮できるとさらなる精度改善が期待できます。
モデルの特徴量などにはまだまだ改善の余地があるため引き続き改善を続けていきます!
本記事では、タクシーアプリ「GO」においてETA算出エンジンを内製する理由から概要、モデル特徴量の感度分析の一例を紹介させていただきました。
ETAはアプリを使用してくださるユーザの皆様をはじめ、タクシーアプリ「GO」を導入してくださっているタクシー乗務員の皆様のUXに大きく影響を与える技術です。
今回のようなMoTならではのデータ活用、アプローチを検討し、継続的に改善を行なっていきます!
興味のある方は 採用ページ も見ていただけると嬉しいです。
Twitter @mot_techtalk のフォローもよろしくお願いします!