Amazon Web Services ブログ

AWSのサーバーレスと機械学習のサービスを活用した列車遅延予測機能の追加とその精度向上(小田急電鉄様の取り組み)

本投稿は小田急アプリや他社サービスなどに連携する列車遅延予測機能の追加とその精度向上の取り組みについて、実際に開発と構築をされました小田急電鉄株式会社経営戦略部の落合様に寄稿いただいたものです。

はじめに

図1 各駅の着発見込み時刻のご案内

鉄道各社ではより便利に鉄道をご利用いただくため、列車の走行位置や、個々の列車の遅れの情報を各社のアプリ等を通じてリアルタイムに配信しています。弊社も2017年に小田急アプリをリリースし現在に至るまで、多くのお客さまにご利用いただいております。リリース当初は「現在の遅れ」をご案内する機能しかありませんでしたが、2022年より遅延予測機能を追加し、「現在の遅れ」に加え、「各駅の到着見込み・発車見込み時刻」をご案内しています(図1)。加えて、昨今では様々な経路検索サービスにおいても、各列車の遅れに関する情報を表示して頂けるようになるなど、鉄道のリアルタイム情報を広くご利用いただけるようになってきました。本ブログでは、AWS サーバーレスサービスと機械学習サービスを活用した、小田急アプリにおける、列車遅延予測システムと、予測精度向上に関する取り組みについてご紹介いたします。

列車の遅延

欧州のように大規模な鉄道ネットワークで発生する遅延と比較すると、日本の鉄道で発生する遅延は小規模であることが多いものの、様々な事由により、日々大小さまざまな遅延が発生しています。このため、必要により列車を運転する順序を変更したり、運転する区間を変更したりするなど、各列車の遅延が少なくなるよう運転整理を行っているものの、2本のレールの上に、たくさんの列車が次々と走行しているため、ときに道路と同じように渋滞が発生してしまうこともあります(図2)。このため、“今時点”では定刻通り運転していても、先を走行している列車に遅れが発生していると、その影響を受けて、のちに遅れが発生するという現象もしばしば発生してしまいます。 そこで、現在の遅れをご案内することはもちろんのこと、その遅延がこの先減少していくのか、あるいは拡大してしまうかを精度高く予測しご案内をすることで、ご利用のお客さまのご不便の度合いを少しでも解消したいと考えています。

図2 典型的な遅延の伝播を表したクロマティックダイヤ

AWS Lambda とAmazon S3 で構成した列車の遅延予測の仕組み

図3に現状の小田急アプリ・列車遅延予測機能の構成図をお示しいたします。当社社内のネットワークから閉域網により Amazon VPC と接続し、AWS PrivateLink を通じて、Amazon S3 のバケットに最新の列車の走行位置と、この先の列車の運転順序に関する情報をほぼリアルタイムに連携しています。これらのデータを AWS Lambda で加工し、Amazon Aurora に格納し、小田急アプリ向けに配信しています。

遅延予測関連のシステムについては、構築当初から連携する経路検索各社様へのデータ配信も視野に入れ、小田急アプリの配信基盤と別に、当社の MaaS プラットホームである MaaS Japan 上に構築しています。

遅延予測の機能は、AWS Lambda と Amazon S3 を使用するのみの非常にシンプルな構成で、列車の在線位置から「いつ、どこに、どの列車がいたか」という情報を取得し、時系列を整えた在線履歴データを Amazon S3 に出力する関数と、在線履歴データと列車の運転順序に関する情報から、15秒に1回、この先の列車の運行をシミュレーション予測し、同じく予測結果を Amazon S3 出力する関数の2つからなります。

図3 システム構成図

用いた予測アルゴリズムもシンプルです。各列車の運行を各駅への到着、発車、通過という事象ごとにノードとして表現します。続いて各ノード間に必要な最低限の時間(駅間の走行に必要な時間・駅に停車している時間・列車と列車の間隔に必要な時間)を重みとした有向アークで結び、グラフネットワークを構成します(図4)。このグラフネットワークの各ノードの重みの和が最大の値(すなわちすべての制約を満たす最短の時刻)を最長径路探索により求めることで、予測時刻とするというものです[参考文献]。

図4 列車運行をグラフネットワークで表した例

従来の課題 – さらなる精度の向上に向けて

「現在の遅れ」のみご案内していた、遅延予測機能導入以前と比較すると、よりきめ細やかなご案内ができるようになったものの、課題がありました。それは、「駅に停車している時間」が毎日同じ時刻に発車する同じ列車でも、実は日々まちまちであるという点です。

自明ながら、駅に停車している時間が(計画よりも)長ければ、その先の遅延が拡大しますし、駅に停車している時間が(計画よりも)短ければ、この先回復できる見込みが生まれます。

図5は実際のばらつきを散布図に示したものです。横軸に当社の湘南台駅到着時の遅れを、縦軸は4駅先(所要時間約10分)の藤沢駅到着時の遅れの大きさを示しており、双方の関係性をプロットしています。例えば湘南台駅に30秒の遅れで到着した列車に着目すると、藤沢駅の遅れが -15秒(すなわち少々早着)~ 120秒の間まで存在することがご覧いただけます。図5 遅れのばらつき

各システムでご案内できる見込み時刻は1つであることから、現状では「発車見込み時刻をご確認いただいた際、乗り遅れてしまわないこと」を優先し、遅延予測をする際には若干短めの数値を採用してきました。このため、今度はご乗車しているお客さまから、「実際はもっと遅れるのに、いつも回復する見込みの案内が出ていて不便」というご意見を頂いてしまうこともありました。

そこで、2023年度、新たな仕組みを導入することとしました。

機械学習を用いた停車時分予測モデルの導入

遅延予測精度の向上を図るため、過去の運行実績を学習データとして、リアルタイムに各駅の停車時間を予測できる、相関ルールをベースとした機械学習モデルの導入を検討しました。具体的には、連続する数駅分の停車に要した時間のみの情報から、その先各駅の停車に必要な時間を確率的に予測するというモデルです。

実施に当たっては、図3に示した通り、AWS で用意されている分析機能と、機械学習実施環境の基礎的な機能を用いて、以下の手順で実施しています。

  • Amazon S3に蓄積した運行実績を、Amazon Athena を使って整形し、訓練用のデータセットを抽出
  • Amazon SageMaker に用意されている Notebook 内で、訓練用データから Apriori アルゴリズム[参考文献]を用いて相関ルールを抽出したのち、予測に有用なルール Map ( JSON ファイル)を作成
  • リアルタイム情報と、出来上がったルール Map を用いて、駅での停車に必要な時間を予測、結果を Amazon S3 に出力する機能を AWS Lambda にて実施
  • 予測した停車時間を加味して運行予測シミュレーションを実施

この機械学習モデルの導入を検証したところ、予測精度の向上を実現することができる見込みが立った(図6)ため、現在は一部の列車・区間で運用しています。

図6 機械学習モデル導入前後の精度の差

今後、適用範囲を拡大するとともに、AWSの各種機能を活用し、一定期間経過後に自動的に再学習し、モデルを最新の状態で予測できるよう、MLOpsの仕組みを整備していきたいと考えています。併せて、今回は相関ルールをベースとしていますが、XGBoostやニューラルネットワークといった他の手法の適用も試み、さらなる精度の向上を図れないか検討してまいります。

まとめ

本ブログ記事では、小田急電鉄における列車の遅延予測とその精度向上の取り組みについて、AWS Lambda と Amazon S3 というシンプルな組み合わせで、容易に遅延予測の仕組みを構築できたこと、ならびに、Amazon Athena 、Amazon SageMaker といったサービスを用いることで、容易に機械学習モデルを構築し、適用できることをご紹介いたしました。このように AWS のサーバーレスと機械学習サービスを活用することで容易に機械学習を用いた機能の追加ができることは AWS クラウドを利用する大きな利点だと感じました。

デジタル技術を活用し、鉄道をより便利にご利用いただくために取り組むべき課題はまだまだたくさんありますが、 AWS のみなさまにもサポートいただきながら、一つ一つ真摯に取り組んでまいりますので、これからも弊社をご愛顧いただけますと幸いです。


著者略歴

著者小田急電鉄株式会社 経営戦略部 落合 康文

2002年入社、駅・車掌・運転士を経験後、2012年より輸送計画業務を担当。2019年より現職に従事。小田急アプリや鉄道に関連するデータ分析業務などを担当。2021年日本大学にて博士(工学)修得