Urban Safety · Machine Learning

Where Montreal's Road Emergencies Strain the Fire Service

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 question

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?

The story in five seconds: Across 2012–2021, the boroughs that strain SIM most are not where the weather or road surface is worst — they're where the intersections are. The model's strongest signals are intersections in commercial zones, under clear, daylight conditions — pointing at road design, not driving conditions, as the lever worth pulling.

Interactive · Tableau Public

High-risk intervention zones

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.

Figure 1. Firefighter interventions for vehicle-related incidents, aggregated by borough and month, 2012–2021.

How this was built

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.

1

Consolidate & filter

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.

2

Aggregate to a shared grain

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.

3

Define the target

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.

4

Model & visualize

Train Random Forest, LightGBM and XGBoost to predict high-risk cells from accident attributes; surface the drivers in Tableau.

Turning "missing" into signal

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.)

Keeping the two sides separate

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

A closer look: collisions at intersections

The model kept pointing at intersections, so this second dashboard drills into intersection collisions by borough — the structural pattern behind the risk.

Figure 2. Intersection collisions by borough — the geometry behind the high-strain zones in Figure 1.

What the data shows

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 counter-intuitive part: the heaviest load doesn't track bad weather or poor surfaces. It shows up under good conditions — clear, daylit intersections in commercial areas. That points away from "drivers behaving badly in bad conditions" and toward the geometry, traffic flow, and signal timing of the intersections themselves as the thing worth fixing.

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.

How far the claims go

An honest model is clear about its own edges. Three matter here:

Where it goes next

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.

Scope & sources

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)

J

Jeff Ahmadi

I write data-driven analysis — energy systems, public-safety and the city, read through primary data. Connect on LinkedIn.