Wir engagieren uns seit geraumer Zeit in der Open Knowledge Foundation, welche das Ziel verfolgt, ohnehin schon öffentliche Daten auch noch standardisiert und maschinenlesbar verfügbar zu machen, damit Mehrwert daraus generiert werden kann.

Ein schönes Beispiel für den Nutzen von Offenen Daten (Open Data) möchten wir am Beispiel der freien Parkplätze in Dresden zeigen. Die Stadt Dresden hat ein intelligentes Verkehrsleitsystem und -konzept (VAMOS), welches auch die freien Parkplätze in den jeweiligen Parkhäusern und -plätzen erfasst und bereitstellt.

Leider stehen diese Daten nicht offen – heißt: über eine Schnittstelle für jedermann – zur Verfügung. Die Open Data Aktivisten vom OKLab Dresden haben deshalb einen Scraper geschrieben, der die Zahlen von der Webseite holt und in eine Datenbank speichert sowie eine maschinenlesbare Schnittstelle zur Verfügung stellt. Erste Anwendungen auf Grund der offenen Daten sind bereits entstanden:

Da die Daten nun fast für ein gesamtes Jahr vorhanden sind (03/2014 – 03/2015) ist der Zeitpunkt gekommen, sich diese einmal anzusehen.

Zum einen sind statistische Aussagen interessant, zum anderen ist das Ziel ein Modell aufzustellen, welches die Belegung von innerstädtischen Parkhäusern vorhersagen kann. Wer samstags 11Uhr mit Auto zum Shopping nach Dresden kommt, der wird wissen, dass sich fast überall lange Schlangen vor den Parkhäusern bilden. Es ist für Touristen (auch aus Tschechien) also durchaus interessant, schon vorher zu wissen, wie in 1h die Belegung des angesteuerten Parkhauses ist. Dies ermöglicht intelligente Verkehrssteuerung. Man könnte sagen: Smart City!

Datenbasis: Open Data

Leider nicht von der Stadt Dresden direkt bereitgestellt, aber wenigstens von den Open Data Aktivisten aus Dresden. Ein aktueller Auszug aus der Datenbank kann hier heruntergeladen werden. Dieser bildet die Basis der nachfolgenden Visualisierungen.

Zeitreihenanalyse der Belegung

Die einfachste und logischste Analyse ist zuerst einmal die Zeitreihenanalyse. Dabei wird der Verlauf zeitbasiert angeschaut. Interessant sind z.B. Verläufe an bestimmten Events. Nachfolgend ist der Parkplatz „Altmarkt“ in Dresden um die Weihnachtszeit 2014 visualisiert.

Belegung des Parkplatzes "Altmarkt" in Dresden während Weihnachten 2014

Belegung des Parkplatzes „Altmarkt“ in Dresden während Weihnachten 2014

Schön zu sehen: Heiligabend 18Uhr ist wirklich der/die Letzte zu Haus, der Parkplatz ist völlig leer. Am 1. und 2. Weihnachtsfeiertag ist wenig los, dann am 27. Dezember (Samstag) geht der Umtausch-Wahnsinn wieder voll los. Der Sonntag danach ist zum Glück kein verkaufsoffener Sonntag, es ist wenig los.

Vergleich von Parkplätzen

Interessant ist auch der Vergleich zwischen den Parkplätze zur selben Zeit, welche offensichtlich völlig andere Nutzungen erfahren. Nachfolgend ausgewählte Parkplätze im Juli 2014:

Statistische Analysen

Schaut man sich die mittlere Belegung (über das gesamte Jahr) von verschiedenen Parkhäusern an, so fällt auf, dass die ‚Centrum-Galerie‘ offensichtlich sehr beliebt ist.

Durchschnittliche Belegung verschiedener Parkplätze tagsüber in Dresden

Durchschnittliche Belegung verschiedener Parkplätze tagsüber in Dresden

Vorhersage der Belegung mit Hilfe von Machine Learning

Eine interessante These ist, ob es möglich wäre, die Belegung eines Parkhauses vorherzusagen. Nicht nur innerhalb der nächsten 30min, sondern insgesamt, für jeden Tag des Jahres. Welche Faktoren beeinflussen die Belegung eines Parkhauses?

  • Uhrzeit (tagsüber ist mehr los als nachts)
  • Wochentag (am Samstag ist mehr los als am Sonntag)
  • Woche des Jahres (im Dezember ist mehr los als im Februar)
  • Event in Dresden (Konzert, Kongress, Messe, …)
  • verkaufsoffener Sonntag ja/nein
  • Feiertag in Sicht? (ist ein Freitag frei oder ein Montag, ist es ein langes Wochenende und die Menschen strömen in die Stadt zum Shopping)
  • Ferien
  • Ferien in Tschechien (da viele Touristen nach Dresden kommen)
  • Wetter

Nicht alle Faktoren (im Machine Learning auch ‚Features‘ genannt) sind leicht zu beschreiben, einige auch eher unwichtig, aber dennoch erhöhen sie die Modellgüte (im Machine Learning auch ‚Accuracy Score‘ genannt). Ein Hauptproblem bleibt die heterogene Datengrundlage, welche es schwer macht alle Features zu ermitteln. Beispiel: Events in Dresden. Es gibt keine einheitliche Datenbank mit allen (wirklich allen) Events in Dresden. Zwar gibt es Partywebseiten, Kongresskalender oder auch Konzertpläne für die Semperoper, das sind aber längst nicht alle Events. Beispiele die nicht erfasst sind: Pegida Demo bzw. NoPegida Demo, Empfang des Ministerpräsidenten, usw. All das hat Auswirkungen auf die Belegung eines Parkplatzes.

Dieser Beitrag beschränkt sich auf das Parkhaus „Centrum Galerie“ in Dresden. Es wurden folgende Features berücksichtigt: Kalenderwoche, Wochentag, Uhrzeit, verkaufsoffener Sonntag und die Anzahl der Werktage bis zum nächsten Feiertag.

Random Forest Klassifikator

AI

Da die Belegung des Parkhauses bekannt ist, stehen die Labels zum lernen fest, es kann also Supervised Machine Learning genutzt werden. Es wurde ein Random Forest Klassifikator angelernt, welcher auf Decision Trees beruht.

from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
trainwith = 0.5 # Learn with 50% of the data
features_train, features_test, labels_train, labels_test = train_test_split(features, labels, test_size=trainwith, random_state=42)
classifier = RandomForestClassifier().fit(features_train, labels_train)
labels_predict = classifier.predict(features_test)
accuracy_score(labels_test, labels_predict)
0.847

Eine Modellgüte von 85% ist, wenn man bedenkt, dass es 10 zu schätzende Labels gibt (0…100% in 10% Schritten), ziemlich beeindruckend. Andere Klassifikatoren wurden ebenfalls implementiert, ergaben in Standardkonfiguration folgende Accuracy Scores:

0.454 Accuracy Score by KNeighborsClassifier
0.387 Accuracy Score by SVC
0.233 Accuracy Score by GaussianNB
0.818 Accuracy Score by DecisionTreeClassifier
0.826 Accuracy Score by DecisionTreeRegressor

Es zeigte sich, dass die Faktoren unterschiedliche Relevanz auf die Vorhersage-Güte haben:

Relevanz der Faktoren

Relevanz der Faktoren. Es ist zu bedenken, dass es nur 4 offene Sonntage im gesamten Datensatz gab, daher ist die Relevanz dieses Features nicht so hoch.

Im zeitlichen Verlauf ist die hohe Qualität der Vorhersage deutlich zu sehen.

Vergleich zwischen Vorhersage und Realität

in grün: Machine Learning Vorhersage der Belegung des Parkhauses, in orange: Tatsächliche Belegung

in grün: Machine Learning Vorhersage der Belegung des Parkhauses, in orange: Tatsächliche Belegung

Fazit

Die zur Verfügung gestellten Offenen Daten haben es ermöglicht, mit Hilfe von Machine Learning ein Vorhersagemodell für die Belegung eines Parkhauses in Dresden aufzustellen. Es ist nun möglich, nur mit Hilfe der Angabe eines Datums und einer Uhrzeit (und mit bekannten Feiertagen), die Belegung eines Parkhauses vorherzusagen.

Im September 2015 (also in 6 Monaten!) wird das Parkhaus ‚Centrum-Galerie‘ folgende Belegung aufweisen:

Vom Machine Learning Algorithmus vorhergesagte Belegung des Parkhauses Centrum-Galerie für September 2015 (in 6 Monaten!)

Download Vorhersage .csv

Vorhersage Parkhausbelegung Centrum-Galerie Dresden

Hier können sie sich die Vorhersage der Parkhausbelegung (im 15min Raster) downloaden und für ihre eigenen Zwecke verwenden.
Download Vorhersage .csv

Natürlich vorbehaltlich eines verkaufsoffenen Sonntags oder eines Events in der Stadt.

Dresden – mit offenen Daten auf dem Weg zur Smart City!

 

[Update 31.03.2015]Die Vorhersage für die Centrum-Galerie hat als Experimental Feature den Weg in die Apps gefunden.

iOS Android
iOS-App-Prediction Android-Vorhersage

Update: Hier dazu unser Talk auf der PyData Berlin 2015

Titelbild: ‚Ostansicht‚ von Stefan Eissing unter CC-BY2.0 Lizenz von flickr.com