drishti / docs /methodology.md
rittika03's picture
DRISHTI deploy
c8a8b27
|
Raw
History Blame Contribute Delete
2.89 kB

Methodology — Congestion Impact Index (CII)

Problem framing

The brief asks us to detect illegal-parking hotspots and quantify their impact on traffic flow. The dataset contains 298k+ parking-enforcement records with location, time, and violation type, but no direct traffic-speed/volume measurement. Rather than claim a flow metric we do not have, we build a transparent proxy for flow impact, derived only from enforcement data, with every weight exposed and defensible.

Pipeline

  1. Clean — keep records inside the Bengaluru bounding box with valid timestamps; parse the multi-label violation_type; keep only parking- relevant violations.
  2. Spatial unit — index every record to an H3 resolution-9 hexagon (~174 m edge ≈ a block / deployable patrol zone). Deterministic and map-friendly.
  3. Per-cell statistics — severity-weighted volume, active-day persistence, peak-hour concentration, junction proximity.
  4. CII — combine the components (below).
  5. Forecast — a LightGBM model predicts next-day intensity per cell.

Severity weighting

Each violation type is weighted by how much it physically blocks moving traffic (not legal severity):

Violation Weight Why
Parking in a main road 1.00 blocks the carriageway
Near road crossing / traffic light 0.90 blocks turning / sightlines
Double parking 0.85 removes a live lane
Near bus-stop / school / hospital 0.70 high-churn frontage
On footpath 0.50 pushes pedestrians into the road
Wrong parking 0.50 partial obstruction
No parking 0.40 designated-clear zone

A record's severity is the max weight across its violations.

The index

For each cell, with rank-normalised components in [0, 1]:

base = 0.45·volume + 0.30·persistence + 0.25·peak_concentration
CII  = base × (1 + 0.50·junction_share)          # then scaled to 0–100
  • Volume — total severity-weighted violations (how bad, weighted).
  • Persistence — active days ÷ total days. Separates a chronic daily bottleneck from a one-off spike. (In this data the worst cells are active ~149/151 days.)
  • Peak concentration — share of violations in commute windows (08–11, 17–20). A blockage that happens exactly at rush hour hurts flow more.
  • Junction proximity — amplifies cells near junctions, where a blockage cascades upstream.

All weights live in src/config.py and can be re-tuned in seconds.

Forecast model

LightGBM regression on a (cell × day) panel. Features: cell location + junction share, calendar (day-of-week, month, weekend), and lag/rolling features (1/7/14/28-day lags, 7/28-day rolling mean & max). Target: next-day severity-weighted intensity. Validated on the final 21 days, compared against a naive "same weekday last week" baseline.