Urban Safety · Machine Learning
Firefighters answer far more than fires — extrications, hazmat, EV battery incidents. Using a decade of Montreal open data, I built a borough-level model to find where road accidents pull the fire service hardest, and what those hotspots have in common.
The Service de sécurité incendie de Montréal (SIM) sends crews to road emergencies, not just fires. If you could predict which areas and which months put the heaviest load on the service, you could pre-position resources and target prevention. So: can open data tell us where — and why?
Interactive · Tableau Public
Borough-level view of where firefighter interventions for vehicle incidents concentrate, and how risk shifts across the year. Use the filters and hover for detail; full-screen and download are in the toolbar.
Two public datasets carry the analysis: SIM's record of every firefighter intervention, and the SPVM's record of every reported road collision. The catch is that they don't share a key — and the intervention coordinates are deliberately obfuscated for privacy, so you can't join an accident to the crew that responded to it. The whole method is built around getting past that.
Merge SIM's 2005–2014 and 2015–2022 files, trim to 2012–2021, and keep only the 25 vehicle-related incident types (extrication, vehicle fire, hazmat, etc.). Standardize borough names.
With coordinates obfuscated, a row-level join is impossible. So both datasets are rolled up to borough × year-month — a spatial-temporal cell that does exist in both, and becomes the unit of analysis.
Sum the units deployed per cell into a firefighter_risk_score, then flag the top quartile (75th percentile) as high-risk — a clean binary the model can predict.
Train Random Forest, LightGBM and XGBoost to predict high-risk cells from accident attributes; surface the drivers in Tableau.
Collision records are full of blanks — surface, lighting, and configuration fields are often unrecorded. Instead of imputing or dropping them, every categorical level (including "unknown") becomes its own dummy column when the data is aggregated to the borough-month grain. Missingness stops being a problem to patch and becomes a feature the model can weigh on its own — no rows thrown away, no values invented. (A dedicated missingness notebook documents the analysis behind that choice.)
Because the target is built from SIM deployment, the features are drawn only from the collision record — road geometry, zone type, lighting, weather, lane configuration. Nothing derived from the interventions themselves feeds the model, so it isn't quietly predicting interventions from interventions.
Interactive · Tableau Public
The model kept pointing at intersections, so this second dashboard drills into intersection collisions by borough — the structural pattern behind the risk.
Two patterns stand out. Seasonally, winter brings more material-damage accidents, but the more severe events — the ones that pull more crews — cluster in summer and fall. Spatially, interventions are far from evenly spread: a handful of boroughs carry a disproportionate share.
When the model is asked what separates high-strain cells from the rest, the features that matter most are strikingly structural:
The practical read for SIM and city planners: a targeted engineering review of high-risk commercial intersections — signal timing, lane configuration, pedestrian protection — is a more promising lever than weather-driven measures for reducing the severe accidents that strain the fire service.
An honest model is clear about its own edges. Three matter here:
The highest-value extension is an approximate spatial linkage that relates individual accidents to interventions, lifting the analysis from borough-level to something closer to intersection-level. Adding weather, traffic-volume and intersection-geometry data — and predicting the deployment score directly rather than a binary flag — would sharpen it further.
Method: SIM firefighter interventions
(filtered to 25 vehicle-related incident types) and SPVM road collisions, both
from the Ville de Montréal open-data portal, 2012–2021. Both datasets aggregated
to a borough × year-month grain; binary high-risk target at the 75th percentile of
units deployed; Random Forest / LightGBM / XGBoost compared with an emphasis on
recall (missing a high-risk zone is the costly error).
Sources:
SIM interventions (Montréal open data) ·
SPVM road collisions ·
Collision field documentation (PDF)