So we feed our machine learning model data across a few main parameters, in order to more accurately predict travel times. Parameters include the:

Time of day (to judge rush hour vs. normal traffic) Day of week (Sunday ≠ Monday traffic) How old the GPS report is (fast GO update >> slower STM update) Schedule delay (when the bus actually comes vs. when it’s supposed to) and Location variables (which can tease out correlations between lines that run on the same street, and account for travel time disparity between, say, a highway and a quiet street.)

Once our machine learning model has historical data for actual ETAs (the “targets”) and historical data for all the different parameters (which affect those ETAs), we can start training it.

The model starts off by making random ETA predictions from the parameter data (totally random!). Then it looks at the actual ETA (or “ground truth”) to see how it did. The model will automatically update its prediction formula — tweaking the weight given to each of the different parameters — to fit the data better, in its next attempt. Rinse and repeat a million times, until you have the best possible formula. Machine-made. No brains required!

With our prediction formula established, it was ready for the big time. We put it in production, for all of our riders in Montreal. When riders look up an ETA, we poll the real-time parameters (time of day, day of week, location, etc.) feed them into the formula, then spit out an ETA. The result? Transit is now able to improve STM predictions by ~15%, with better location data (thanks, GO riders! 📡) and a better prediction formula (thanks, machines! 🤖)

That’s 15% less patience required at the bus stop. 15% fewer missed buses. 15% closer to an app with perfect reliability. And our prediction engine is only going to get better, over time…

so close 🤞

While “man-made” prediction formulas can’t account for changes to historical traffic patterns over time (without being thrown out, and re-written completely 🤢) — our machine learning model can use real-time feedback from riders to improve automatically. Bit of an upgrade from pencils and stopwatches.

So we’re excited for you to try it out. To see the impact on rider behaviour. We hope you can start budgeting for less and less “built-in” ETA inaccuracy. But even though our machines are smart, they’re not perfect. Sometimes they make errors. Good thing we have a team of engineers sorting through those errors to make your ETAs even better.

Once we perfect the recipe, we’ll be bringing it to cities beyond Montreal. What’s the ETA for that? Maybe you should ask a machine… 🤞🤖