Zurich Tram Flow

Verspätungsvorhersage im Zürcher Tramnetz
Datengetriebenes Analyse- und ML-Projekt | 2023–2025

Detailed Description

Der gesamte Daten-Lifecycle: von Rohdaten über Analyse bis Vorhersage-Modell. Portfolio-Vollansicht.

94,4 M
Halt-Ereignisse
87 %
OTP heute · Ziel: 95 %
18,56 s
MAE LightGBM v2
−63 %
vs. Baseline
Einstieg

Übergreifende These

Ein Satz, der das gesamte Projekt trägt

Die Verspätungen im Zürcher Tramnetz sind vorhersagbar — weil sie im Fahrplan-Design verankert sind, nicht im zufälligen Betrieb.

Was vorhersagbar ist, ist steuerbar. Das Modell bestätigt die Analyse: prev_trip_delay ist das stärkste neue Feature in v2, MAE sinkt von 45,7 s auf 18,56 s. Fahrplan-Redesign an L11 ist der Hebel.

Agenda

Inhaltsübersicht

Der gesamte Daten-Lifecycle von Rohdaten bis Vorhersage-Modell

1Ausgangssituation
2Exploration / EDA
3Data Preprocessing
4Analyse & Erkenntnisse
5Machine Learning
6Praxisanwendung
7Empfehlungen
8Technische Umsetzung
9Ausblick
Ausgangssituation

Strukturelle Lücke im Netz

87 % OTP seit drei Jahren — dauerhaft unter dem VBZ-Ziel von 95 %

87 %
OTP 2023–2025 (netzweit)
Ist-Zustand 2023–2025: 87 % netzweit. Konstant unter dem VBZ-Zielwert, über alle drei Betriebsjahre ohne erkennbaren Aufwärtstrend.
95 %
VBZ-Ziel bis 2028
VBZ-Zielwert: 95 % OTP (On-Time Performance, Ankunft ≤ 2 Minuten Verspätung)
−8 %
Strukturelle Lücke
Der Rückstand ist systemisch, nicht episodisch — er taucht in jedem Jahr, auf jeder Linie auf.
56,3 s
Ø Ankunfts- verspätung
Jede achte Tramfahrt überschreitet den 2-Minuten-Schwellwert. Stabil über alle drei Betriebsjahre.
Ausgangssituation

Vorgehen in zwei Schritten

Von der Ursachenanalyse zur Vorhersage

Analyse

Identifikation der Entstehungsmuster und Einflussfaktoren. Analyse in 6 Dimensionen: Temporal · Räumlich · Netzwerk · Meteorologie · Events · Zieldefinition.

Vorhersage

Machine-Learning Modelling für die Verspätungsvorhersage. Folgen sie Mustern, die ein Modell lernen kann? — LightGBM, MAE 18,56 s (arrival_delay in Sekunden), −63 % vs. Baseline.

Ausgangssituation

Alle Linien nicht im Soll

Keine einzige Linie erreicht dauerhaft das Ziel
Die Lücke zieht sich durch das gesamte Netz

OTP nach Tramlinien
OTP nach Tramlinien, 2023–2025. Alle 16 Linien liegen unter dem 95 %-Ziel.
Ausgangssituation

Kein Aufwärtstrend erkennbar

OTP schwankt saisonal, aber der Mittelwert bewegt sich seit 2023 nicht

OTP Jahresverlauf
OTP-Jahresverlauf netzweit. Die Lücke zum VBZ-Ziel ist konstant und zeigt keinen Aufwärtstrend.
Exploration / EDA

Widerlegte Annahmen

Drei initiale Annahmen wurden mit Befunden aus den Daten klar widerlegt

Annahme: Stadtzentrum
Die Innenstadt ist der Verspätungs-Hotspot
Befund: Stadtzentrum
Central (48,3 s) und Paradeplatz (48,2 s) liegen unter dem Netzschnitt. Hotspots: Enzenbühl 93,8 s, Balgrist 85,2 s — periphere Aussenkorridore
Annahme: Berufsverkehr
Der Morgenrush ist das grösste Zeitproblem
Befund: Berufsverkehr
7h liegt mit 48,9 s unter Netzschnitt. Echter Peak: 21h (67,9 s) durch Abreisewellen nach Veranstaltungen. Donnerstag ist der schlechteste Wochentag
Annahme: Wettereinfluss
Schlechtes Wetter ist die Hauptursache
Befund: Wettereinfluss
Schnee ist ein Verstärker (+54 s), Regen +23,3 s. Geografisch trennbar: Schnee trifft Höhenlagen (K10/K12), Regen Flusstäler (K5). Grundrauschen bleibt wetterunabhängig
Exploration / EDA

Innenstadt ist pünktlicher

Räumlich: Verspätungs-Hotspots liegen an der Peripherie, nicht im Stadtzentrum

Ø Ankunftsverspätung pro Haltestelle. Hotspots ausschliesslich in peripheren Stadtkreisen 7, 11, 12.

Verspätungshotspots nach Haltestelle
Exploration / EDA

Peak am Abend

Temporal: Um 21 Uhr entstehen die höchsten Verspätungen — nicht im Morgenrush
Der Peak um 2 Uhr ist ein Artefakt des Nachtbetriebs — bei minimaler Fahrtenzahl wirkt jede einzelne Verspätung überproportional gross

Delay nach Tageszeit
Ø Delay nach Tageszeit (0–23h). Peak 21h, nicht 7h. Abend-Effekt durch Veranstaltungs-Abreisewellen.
Exploration / EDA

Weitere Eindrücke

Erste Kennzahlen aus der explorativen Datenanalyse

+54 s
Schnee-Effekt netzweit
+23,3 s
Regen-Effekt netzweit
−9,9 s
Feiertage vs. Normal
66,0 s
Fachmessen (schlechteste Event-Kategorie)
Einordnung
  • Feiertage sind der beste Tagestyp: −9,9 s vs. Normal
  • Der Rückgang des motorisierten Individualverkehrs (MIV) an Feiertagen überwiegt jeden Event-Effekt
  • Event-Wirkung ist ein Abend-Phänomen (18–22h): tagsüber kein messbarer Unterschied
Data Preprocessing

Master-Datensatz und GTFS-Fahrplandaten

Data Refinement als Fundament mit initialen Master-Datensatz und GTFS Fahrplandaten

VBZ IST-Daten (Primärquelle)
  • Reale Ankunfts- und Abfahrtszeiten aller Tramhalte 2023–2025
  • Granularität: Fahrt × Haltestelle × Timestamp
  • Enthält canceled = True Fahrten — bewusst behalten (relevante Extremfälle)
GTFS (Fahrplandaten)
  • Geplante Ankunfts-/Abfahrtszeiten, dwell_time, stop_sequence
  • Liniengeometrien und Haltestellen-Koordinaten (lat/lon)
  • Join-Key: trip_id × stop_id × service_date

Master-Datensatz

Der Master-Datensatz entsteht in zh-tram-data aus den VBZ IST-Daten, angereichert um GTFS, Meteo Schweiz und Event-Kalender — 94,4 Mio. Zeilen, 26 Features. Er liefert die Basis für alle Analysen in diesem Projekt.

GTFS (Fahrplandaten)

Für Karten, Geo-Visualisierungen und Tramlinien-Darstellungen wurde GTFS zusätzlich gesondert geladen — der Master-Datensatz allein liefert keine Liniengeometrien und Streckenverläufe.

Data Preprocessing

Kontextquellen der Dimensionen

Für jede Analysedimension wurden die Datenquellen im Vorfeld im Master-Datensatz schon kontextuell angereichert

Meteo Schweiz
  • Stündliche Messwerte: Temperatur, Niederschlag, Windgeschwindigkeit
  • Join über Zeitstempel (hour-level) auf IST-Daten
  • Abgeleitete Flags: has_rain, has_snow, has_heavy_rain, is_hot
Event-Kalender
  • Grossveranstaltungen Zürich 2023–2025: Konzerte, Messen, Sport
  • Kategorisierung: event_type, event_size, event_weight
  • Ergebnis: 94,4 Mio. Zeilen · 26 Features · 541 MB Parquet
Network
  • Linientopologie: 16 Linien, ca. 190 Haltestellen
  • Kontext-Features: n_lines_at_stop, n_stops_line
  • Basis für linienübergreifendes Lernen (stop_sequence_pct)
Target
  • arrival_delay in Sekunden, aus IST- vs. Soll-Zeit berechnet
  • OTP-Schwellwert: Ankunft ≤ 2 Minuten Verspätung
  • canceled = True bewusst als Extremfall im Target erhalten
Data Preprocessing

Cleaning, Split und Encoding

Mit der passenden Data Preparation zur finalen Struktur für das Modell

Annahme: Canceled-Flag
Canceled-Fahrten entfernen
Befund: Canceled-Flag
Bewusst behalten: canceled = True Fahrten sind Extremfälle, die das Modell kennen muss. Entfernen würde die Realität des Netzes verfälschen.
Annahme: Split-Type
Shuffle-Split für mehr Trainingsdaten
Befund: Split-Type
Temporal Split (kein Shuffle): Train 2023–Jun 2024 / Val Jul–Dez 2024 / Test 2025. Data Leakage wäre sonst unvermeidbar.
Annahme: OHE für Haltestellen
Haltestellen über One-Hot Encoding
Befund: OHE für Haltestellen
Native Categoricals in LightGBM: stop_name, line_name, event_type direkt als Kategorie. Kein Dimensionsproblem, schnelleres Training.
Analyse & Erkenntnisse

Kaskade der Verspätungen

Ohne Puffer im Fahrplan überträgt sich jede Verspätung auf die Folgefahrten — in Zahlen

71,5 %
Halte akkumulieren Delay
L11
68,7 s · OTP 82 % — stärkste Akkumulation
71,3 %
Haltestellen ohne Standzeit (0 s)
r ≥ 0,85
Kaskadenkorrelation alle 16 Linien

Was an einem Halt beginnt, endet nicht dort:

Ohne Standzeit-Puffer überträgt sich jede Verspätung strukturell auf die Folgefahrt — messbar auf allen 16 Linien, am stärksten auf L11.

Analyse & Erkenntnisse

Aufbau der Kaskade

Vier Schritte, vom ersten Anzeichen bis zum netzweiten Beweis

1

Anomalie

Hotspots an Endstationen, nicht an zentralen Knotenpunkten. Null Überschneidung mit den dichtest bedienten Haltestellen.

2

Gradient

Der Delay wächst entlang der Strecke. L11: Verspätung am Streckenende doppelt so hoch wie am Anfang.

3

Mechanismus

71,3 % aller Haltestellen haben 0 Sekunden eingeplante Standzeit. Kein Puffer, keine Erholung möglich.

4

Kaskade

Pearson r ≥ 0,85 zwischen aufeinanderfolgenden Halts auf allen 16 Linien. Systematisch, kein Einzelfall.

Analyse & Erkenntnisse

Fahrplan-Design-Thema

Die Verspätungen sind durch die Fahrplangestaltung strukturell angelegt

Das ist kein Betriebsversagen.

Es ist ein Fahrplan-Design-Thema.
Was im Fahrplan nicht vorgesehen ist, kann im Betrieb nicht ausgeglichen werden.
Analyse & Erkenntnisse

Einfluss externer Faktoren

Wetter und Grossevents wirken, das Grundproblem bleibt strukturell

Wetter & Events

Zwei externe Einflussfaktoren sind messbar und erheblich: Schnee (+54 s) und Grossevents (bis +66 s bei Fachmessen). Doch das Grundniveau der Verspätung bleibt auch bei optimalen Bedingungen konstant hoch. Externe Faktoren verstärken, was intern bereits strukturell angelegt ist.

Betriebsbedingte Faktoren

Trotz Bauphasen, Streckensperrungen und Fahrplanumstellungen hält die VBZ das System bemerkenswert stabil. Die Verspätungslevel schwanken durch diese Eingriffe kaum. Die Ursache liegt nicht in externen Störungen, sondern im Fahrplan-Design selbst.

Machine Learning

Dynamische Modelle statt starrer Regeln

Herkömmliche Systeme scheitern an nichtlinearen Daten

Die Struktur der Daten ist nicht linear.

Linie × Haltestelle × Tageszeit × Wetter × Event interagieren auf eine Weise, die kein handcodiertes Modell erfassen kann — und prev_trip_delay liefert ein Echtzeit-Signal für einen Feedback-Loop im Modell.

Machine Learning

Drei Iterationen der Modellierung

Von der Baseline über Feature Engineering zum finalen Ensemble-Modell

AnsatzFeaturesMAE (Test)Verbesserung
Baseline (Stop Mean)50,0 sAusgangspunkt
LightGBM v1 — Zeit · Wetter · Netz-Features · kein Live-Signal · MBE +8,3 s3245,7 s−4,3 s
LightGBM v2 — +prev_trip_delay · +stop_sequence_pct · Isotonic-Kalibrierung · MBE −0,69 s3418,56 s−31,4 s (−63 %)

Feature Engineering schlägt Hyperparameter-Tuning.

Der Sprung von v1 auf v2 kam nicht durch einen besseren Algorithmus. Das richtige Signal aus der Analyse wurde mit dem Kaskadenindikator (prev_trip_delay) sichtbar gemacht.

Machine Learning

18,56 Sekunden MAE

Mittlerer Vorhersagefehler auf einem vollständigen, ungesehenen Testjahr — 63 % unter der Baseline

41 Mio.
Trainings-Fahrten 2023–Jun 2024
~29 Mio.
Test-Fahrten vollständiges Jahr 2025
−0,69 s
MBE nach Isotonic-Regression-Kalibrierung

18,56 Sekunden bestätigen die Analyse.

prev_trip_delay erklärt den Sprung von 45,7 s auf 18,56 s MAE. Das Signal war in den Daten — die EDA hat es zuerst aufgezeigt, das Modell hat es bestätigt.

Machine Learning

Feature Importance

prev_trip_delay und stop_sequence_pct dominieren
Temporale und Wetter-Features zeigen konsistente, aber schwächere Beiträge

Feature Importance LightGBM v2
Die Kaskadenanalyse (r ≥ 0,85) hat die Feature-Wichtigkeit korrekt antizipiert — das Signal steckt in den Daten, nicht im Algorithmus.
Praxisanwendung

Konkreter Nutzen in der Praxis

Konkrete Vorhersagen für reale Betriebssituationen zeigen die operative Relevanz

Das Modell kombiniert Tageszeit, Linie, Haltestelle, Wetterlage und den Verspätungsstatus des Vorgänger-Trips zu einer konkreten Sekundenvorhersage. So lassen sich kritische Situationen identifizieren, bevor die Kaskade einsetzt.
74 s
Prognose
Donnerstag · 21h · Linie 11 · Schnee
Frühwarnung aktiv, bevor die Kaskade einsetzt
48 s
Prognose
Dienstag · 17h · Paradeplatz · leichter Regen
Verspätung im Akzeptanzbereich
22 s
Prognose
Sonntag · 10h · Linie 6 · trocken
Normalbetrieb, kein Handlungsbedarf
Empfehlungen

Konkrete Handlungsempfehlungen

Jede Empfehlung ist direkt durch einen Befund aus der Analyse gedeckt

R1 · Fahrplan-Design
Standzeit-Puffer L11 an Koppelstellen
  • dwell_time = 0 s an 71,3 % aller Haltestellen ist das Root-Cause-Feature
  • +10 s Puffer an 3–5 kritischen Koppelstellen unterbricht den Kaskadeneffekt
R2 · Real-Time Dispatch
prev_trip_delay als Echtzeit-Signal im Dispatching
  • prev_trip_delay ist das stärkste Feature — und in Echtzeit aus VBZ-System verfügbar
  • MAE 18,56 s auf Test 2025: Produktionsreife bereits nachgewiesen
R3 · Kapazitätsplanung
Taktanpassung 20–22h auf L11 und L8
  • Peak 21h: 67,9 s — nicht der Morgen (7h: 48,9 s unter Netzschnitt)
  • Spitzenlastmomente sind kalendarisch planbar
R4 · Monitoring
Stadtkreise 11 und 12 als strukturelle Prioritätszonen
  • Kreis 11: OTP 83 %, Ø 68,3 s — strukturell benachteiligt, nicht situativ
  • district_nr gehört zu den Top-Features im Modell
Technische Umsetzung

Datenbasis & TechStack

Umfang der Datenbasis und eingesetzte Technologie

Datenbasis und Umfang
  • VBZ IST-Daten · GTFS · Meteo Schweiz · Event-Kalender
  • 94,4 Mio. Zeilen · 26 Features · 541 MB Parquet
  • 3 vollständige Betriebsjahre · 16 Linien · ca. 190 Haltestellen
  • 66 dokumentierte Befunde in 12 Jupyter-Notebooks
Technologie-Stack
  • Python · Polars (85 Mio. Zeilen, lazy evaluation) · Jupyter · uv
  • LightGBM (Modellierung) · Plotly (Visualisierung) · Streamlit (Dashboard)
  • Trainingszeit LightGBM v2: ca. 18 Minuten auf Consumer-Hardware
Technische Umsetzung

AI Workflow & Pipeline

Open Data, AI-Workflow, vollständig reproduzierbar

AI-Workflow als Differenziator
  • Claude Code für iterative Analyse, Code-Refactoring, Dokumentation
  • Promptbasiertes Scaffolding: von der Idee zur Notebook-Struktur in Minuten
  • Menschliche Entscheidungsverantwortung bleibt bei allen Finding-Interpretationen
Reproduzierbarkeit
  • Vollständiger Code auf GitHub, alle Datenquellen öffentlich
  • Data Engineering vollständig reproduzierbar via Polars-Pipeline
  • Alle Befunde rückverfolgbar auf Finding-IDs in den Notebooks
Ausblick

Was noch zu erforschen ist

Dashboard-Exploration offenbarte 7 systematische Forschungsmöglichkeiten

Warum sind Fahrtrichtungen asymmetrisch?
Welche Linien dämpfen Delays, welche verstärken sie?

Beim interaktiven Erkunden der 16 Linien entstehen neue Fragen. Diese Ad-hoc-Entdeckungen sind Signale für strukturelle Potenziale und wurden bereits in 7 Opportunities formuliert.

3 von 7 der Opportunities

OP-1
  • Direction-Asymmetrie (~10 s Delta zwischen Richtung A/B)
OP-2
  • Stop-Variabilität (Puffer-Stops vs. zeitkritische Stops)
OP-7
  • Kaskaden-Verstärker vs. -Dämpfer pro Linie

Zurich Tram Flow

Verspätungsvorhersage im Zürcher Tramnetz
Datengetriebenes Analyse- und ML-Projekt | 2023–2025

Was vorhersagbar ist, ist steuerbar.

Dieses Projekt zeigt: Datenanalyse ist kein akademisches Artefakt, sondern das Fundament für operative Entscheidungen. Das interaktive Dashboard macht diese Erkenntnisse direkt steuerbar — Szenarien lassen sich simulieren, um Entscheidungen fundiert zu begründen.

Linien erkunden · Linien vergleichen · Verspätungen vorhersagen