Hintergrund
Die Vorhersage von Zugverspätungen ist alles andere als einfach. Auf einem Streckennetz von gut 33.000 Kilometern Länge mit über 5000 Bahnhöfen waren im Jahr 2019 täglich etwa 13,4 Mio. Reisende unterwegs[1]. Verspätungen ergeben sich aus dem Zusammenspiel von Umständen wie technischen Störungen, Baustellen, Verzögerungen beim Ein- und Aussteigen oder andere verspätete Züge. Wegen der Vielzahl und komplexen Interaktion solcher Einflüsse stoßen regelbasierte Prognosesysteme schnell an ihre Grenzen.
So entstehen die Prognosen
Wie bei Big-Data-Projekten üblich, besteht ein großer Teil der Arbeit aus der Vorverarbeitung und Transformation der Eingangsdaten. Unterschiedlich strukturierte Rohdaten aus einer Vielzahl von Quellen müssen zu einem konsistenten Datenmodell zusammengefügt werden, das von implausiblen oder fehlerhaften Datensätzen, die z.B. bei Störungen entstehen können, so weit wie möglich bereinigt ist. Auf Basis der bereinigten Daten werden dann Einflussgrößen – sogenannte Features – berechnet, von denen man erwartet, dass sie die Verspätung möglichst gut erklären können. Solche Features sind beispielsweise die aktuelle Verspätung zum Zeitpunkt der Prognoseerstellung oder im Fahrplan vorgesehene Fahrzeiten.
Das Streckennetz wird in einzelne Abschnitte unterteilt, so dass am Anfang und Ende jedes Streckenabschnitts jeweils ein Messpunkt liegt, der die Durchfahrt eines Zuges erfasst. Ein Machine-Learning-Algorithmus lernt für jeden dieser Streckenabschnitte aus den Daten der Vergangenheit, die Zu- oder Abnahme der Verspätung auf diesem Streckenabschnitt aus den gemessenen Features vorherzusagen. Die prognostizierte Gesamtverspätung ergibt sich dann als Summe der geschätzten auf- oder abgebauten Verspätungen auf den noch zu durchlaufenden Streckenabschnitten.
So entwickeln wir das System weiter
Dieses Basisverfahren lässt sich noch verfeinern. Hierzu muss man mitunter erst Grundsatzfragen klären, etwa: Was genau heißt, den Fehler der Prognosen zu minimieren? Die Antwort ist keineswegs trivial. Versteht man darunter einen minimalen absoluten Fehler, also eine möglichst geringe durchschnittliche Abweichung der Vorhersage von der realen Ankunfts- oder Abfahrtszeit, so vernachlässigt man, dass eine überschätzte Verspätung für die Reisenden riskanter ist als eine unterschätzte. Meldet das System eine zu frühe Abfahrtszeit, wartet der Fahrgast zwar länger als nötig am Bahnsteig, fährt der Zug indes vor der prognostizierten Zeit ab, kann ein Reisender, der sich auf die Vorhersage verlässt, ihn verpassen. Somit richtet sich das Gütemaß, auf das die Prognose optimiert werden soll, nach der Annahme, wie gut die Fahrgäste mit den verschiedenen Fehlertypen leben können.
Ein weiteres Optimierungsfeld bildet der Umgang mit Sonderfällen in den Daten. Insbesondere nach Störungen fließen Daten in die Prognose ein, die aus einer komplexen Interaktion zwischen Mensch und Maschine resultieren. Eine differenziertere Berücksichtigung solcher Datenkonstellationen trägt zur fortlaufenden Verbesserung der Prognosen bei.
Consileon unterstützt die Deutsche Bahn auch beim Betrieb und bei der Weiterentwicklung einer Big-Data-Plattform, die Daten aus Quellen wie Fahrplänen oder Meldungen der Zugpositionen innerhalb einer Streaming-Architektur in Echtzeit aufbereitet und unter anderem der Anwendungen zur Erstellung der Verspätungsprognosen bereitstellt. Die Plattform dient auch dem Einspeisen der Prognosen in Abnahmemedien wie die App DB Navigator oder die Anzeiger am Bahnsteig. Sie basiert auf einer Microservice-Architektur, in der sich die einzelnen Komponenten der Gesamtanwendung schnell in Betrieb nehmen oder austauschen lassen. Programmiert wurde das Cloudsystem mit Open-Source-Frameworks wie Kubernetes, Helm und Ranger. Zur Überwachung kommen unter anderem Grafana und Prometheus zum Einsatz. Im gesamten Projekt arbeiten Mitarbeiter des Auftraggebers, Consileaner und weitere externe Dienstleister nach dem Scrum-Modell agil zusammen.
[1] Deutsche Bahn – Daten & Fakten 2019
[2] https://www.openrailwaymap.org/