21.路線バス遅延時間の予測とWebアプリの開発

情報技術科 No.08 小桐斗馬
No.18 新村勇葵
No.21 髙井健人

①研究の背景

 登下校、通勤でバスを利用する人は多いのではないでしょうか。しかし、道路状況、天候等により時刻表通りの運行ができないということが多々あります。
そんなバスがいつバス停に到着し、いつ目的地へ着くのか、それがわかればより快適にバスを利用できる思いこの研究を始めました。

②仮説とねらい

 時間によって天候、曜日、イベントなど様々な環境の変化があり、それにより各時間ごと大きな外的変化が起こるため長期間でのデータを用いて予測することは難しいといえます。そのため外的変化が少ない直近の時間を用いて予測を行うことにしました。

 具体的には、直近の各バス停間の所要時間の平均を用いることで現在の各バス停間の所要時間を予測することができ、目的のバス停までに経由するバス停間の所要時間の和がバスの到着時間となるのではないかと考えました。

③研究内容

 昨年、一路線の一部分のみで上記のような予測を行った先輩の研究をもとに全346路線、2537バス停間での予測を行います。   

 インターネット上でバスの運行状況を公開している「バスどこ!?マップ」のhtmlソース上からスクレイピングという技術を用いてその情報を収集、抽出し、データベースへ蓄積します。

遠鉄バスどこ!?マップ
https://info.entetsu.co.jp/navi/pc/location.aspx?no=1

このサイトからこれらの情報を長期間に渡りスクレイピングし、データベースに蓄積します。

「バスどこ!?マップ」から取得できる無加工のデータ

これをもとに各バス停を通過する順番、各バス停の座標や各区間を作るバス停組などを形成します。

形成したバス停の情報
形成した路線の情報

これらの形成された路線などの情報を使って、各区間での実際の所要時間を蓄積。

各区間の実所要時間

 さらに直近の実所要時間をもとに全路線でのバスの到着時間を予測するのですが、この際過去の各区間の実所要時間のデータを用いて直近の時間は何分が適切なのか検証し各区間ごと一番適切だと判断された収集時間を用いて予測を行います。

 最終的にバス利用者がweb上で到着予測時間を確認できるようにしていきます。

 すべての路線での遅延時間を調べても、利用者が欲しいとは限りません。ページ表示時に毎回すべての路線で予測していては無駄が多いです。
 そのため、知りたい路線だけ予測できるように、Ajaxを用いて非同期通信が行えるようにした。

web上での予測到着時間の表示(スマートフォン)
https://alumni.hamako-ths.ed.jp/~bus/result.php

④技術的知識

1. スクレイピング

 ウェブサイトから情報を抽出するコンピュータソフトウェア技術のことを指します。スクレイピングツールは様々ですが、私たちはプログラミング言語のPHPを利用してスクレイピングを行いそのデータをデータベースに格納します。

phpを用いたスクレイピング

その際データベースはphpMyAdminを用いて、SQLでデータベースの操作を行います。

 C++で所要時間の予測の処理を行い、htmlやphp、javascriptでホームページを作成します。

2.Ajax (Asynchronous JavaScript + XML)

 ウェブブラウザ内でavaScriptの通信機能を使って、XML形式のデータを非同期に送受信する技術のことです。

 ブラウザでボタンをクリックしてデータの送信を行うと、サーバーにリクエストを通信し、レスポンスが返ってきます。この時同期通信ではすべての情報を通信するため画面は一瞬白くなります。

 非同期通信では一部の情報のみリクエストすることで、必要な情報のみ取得しそれ以外は変わりません。なので、画面は白くならず、同期通信に比べて早い通信ができます。

⑤取り組んだ内容

予測の問題点

 私たちは「だれでも利用できるwebアプリの開発」を目標にしました。

 そのためには予測精度と予測速度の両立が必要です。

 もし正確な予測ができても、一度の予測に何分もかかってしまうようでは使うに値しません。

 私たちのアプリははじめ、1路線の予測に数十秒必要としていました。

 これはSQLの実行回数がその路線のバス停数の二乗に比例しており、路線によってはSQLの処理回数が1000回を超えていたことが原因でした。プログラムを見直し、修正したところ、10分の1以下の速さで予測ができるようになりました。

⑥結果

検証1

 検証はバス停間ごとに行います。バス停間の距離にはばらつきがあるため、実際にバス停間を通過するのにかかった実測時間と遅延時間の割合を誤差率として求め、誤差率を比較することで検証することにしました。

 ただ、誤差率ではわかりにくいので、時間で比較することにしました。今年は、全バス停間の平均実測時間を基準にして遅延時間を換算して検証することにしました。基準となる全バス停間の平均実測時間は76.82秒となりました。

 さまざまな時間帯、曜日、天候の条件下で全バス停間2537か所で収集された84204件の予測値と実測値の検証を、先ほどの通り平均実測時間を基準にして行いました。その結果、82%の確率で誤差1分以内の予測となりました。

検証2

 

 1つめの検証から、ある疑問が生まれました。

 ご存じの通り、路線・時間帯によってバスの運行数、つまり予測に用いるデータの数は異なります。

 そこで、予測に用いた直近のバスデータの数と実際の到着時刻と予想到着時刻の誤差には相関があるのではないかと考えました。

 この検証では、データのばらつきを表す指標である標準偏差を用いました。標準偏差は誤差の分布が判断しやすい特性があります。

 例として、誤差の平均が60秒、標準偏差が20秒であったとき、68%の確率で誤差20秒の予測が行われる、という推定が可能です。

 検証の結果、データ数が少ないとき標準偏差は40秒から50秒で安定しているが、データ数が多いときは偏差が急激にばらつくことがわかりました。この結果を考察するために、各標準偏差を出すための標本数を表示しました。

 棒グラフが、各軸で標準偏差を求めるための標本数です。

 標本数は急激に減り、予測に用いたデータ数が42を超えたあたりからは標本数は100を下回ります。

 標準偏差の線形近似ではたしかに予測に用いたデータ数が増えるほど標準偏差、つまり誤差は減少しています。しかし、運行数の関係で、予測に大量のデータを用いれる状況は稀です。それは標準偏差がばらつく原因にもなります。

 

⑦感想・考察

 検証1では82%で誤差1分以内という高精度な予測が行えていることがわかりましたが、実際にこのWebアプリを利用するとこの精度の高さは味わうことが出来ません。これは、バスどこマップの仕様に原因があると考えます。

 バスどこマップは1分単位の更新で、各バスの現在座標はそのバスが向かっているバス停の座標を指しています。そのため、私達が秒単位で正確な到着時刻を知ることは出来ません。

よって、バスどこマップから得られる情報で予測したときの精度は限界に近いと考えました。しかし、さらに高精度な情報源があれば、路線バスだけでなく別の事象の予測に同様の手法が適用できるでしょう。

 高校生ではありますが、工業にかかわる人間として、単なる「研究」で終わるのではなく、実用可能なものを作ることができました。
 この結果が少しでも多くの人がバスを利用するきっかけになればと思います。

コメントを残す

メールアドレスが公開されることはありません。