Teile und herrsche (Nr. 1)

Was sich erstmal einfach anhört, hat bei näherer Betrachtung unzählige Facetten. Wie soll die Gesamtarchitektur aussehen? Lieber klassische Serverapplikation oder Serverless? Wie sieht die Datenbank im Hintergrund aus? In welcher Programmiersprache soll es geschrieben werden, und welche Frameworks nutzt man? Wie kann ich als Nutzer über ein ansprechendes Frontend die ganze Funktionalität am besten nutzen?

Die einzelnen Funktionen werden von mir als (Micro-)Services entwickelt, wofür ich in Java auf Quarkus zurückgreife. Viele davon sind aber noch gar nicht fertig implementiert, da es ein umfangreiches Unterfangen ist. Deshalb liegt der Artikelfokus auf dem für mich spannendsten Teil, dem maschinellen Lernen und damit insbesondere dem Training und der Inferenz der Spritpreisprognose. Denn wann eine Tankstelle ihren Preis ändern wird, ist nicht direkt bekannt, sondern das Verhalten muss anhand von Daten gelernt werden, um es vorhersagen zu können.

Dabei entsteht schon die erste Frage: Woher kommen eigentlich die Spritpreisdaten? Seit Ende 2013 gibt es die Markttransparenzstelle für Kraftstoffe (MTS-K), an die alle öffentlichen Tankstellen in Deutschland innerhalb eines kurzen Zeitfensters ihre Spritpreisänderungen melden müssen. Die MTS-K bietet dafür eine kostenfreie API an, die überraschenderweise gut dokumentiert und die Grundlage nahezu jeder heutigen Tank-App ist.

Ärgerlicherweise bekommt man den API-Zugriff aber erst nach einer recht umfassenden, tiefgehenden Beschreibung des geplanten Vorhabens, in der es auch um Wirtschaftlichkeitsaspekte geht. Für mein Hobbyprojekt ist das zu viel bürokratischer Aufwand. Jedoch gibt es mit Tankerkoenig.de auch einen Spritpreisvergleich, der die Daten als Open Data unter einer Creative-Commons-Lizenz zur Verfügung stellt – sowohl in Form täglicher Datenbankdumps als auch mit begrenztem Echtzeitzugriff über eine eigene API. Gegen Geld sind dort auch unbeschränkte API-Zugriffe möglich.

Datenbank aufsetzen

Ausgangspunkt meiner Software ist eine zentrale Datenhaltung in Form einer Datenbank. Klar, ich könnte jetzt die ungewöhnlichsten Datenbanksysteme der Welt ausprobieren, aber am Ende entscheide ich mich für PostgreSQL.

Zum einen ist das relationale Datenbankschema ziemlich simpel: Es gibt eine Relation Tankstelle, die die Daten jeder Tankstelle speichert, und eine Relation Preise, die alle Preisänderungen mit der Tankstellen-ID als Fremdschlüssel sowie einem Zeitstempel speichert. Zum anderen hat PostgreSQL eine für mich bessere Open-Source-Lizenz, wohingegen der frühere Marktführer MySQL bei einer möglichen kommerziellen Nutzung lizenztechnisch kniffliger ist.

Ein weiteres Schmankerl von PostgreSQL ist die Geospatial-Erweiterung PostGIS. Da Nutzer aufgrund einer Ortsangabe Tankstellen in der Nähe finden wollen, braucht die Software eine effiziente Möglichkeit, diese zu finden. Die Tankstellen sind mit Adressangaben sowie Geokoordinaten in der Datenbank gespeichert. Dank des in PostGIS integrierten R-Baums als Geospatial-Index können so schnell und effizient die Tankstellen rund um eine Geokoordinate gefunden werden, so dass ich mir jedes Mal einen aufwendigen Full Table Scan sparen kann.

  • Preisentwicklung für Diesel an einer Tankstelle (Bild: Andreas Meier)
  • Entwicklung der Anzahl registrierter Tankstellen; alte nicht gelöscht (Bild: Andreas Meier)
  • Angedachte Spritpreisvorhersage  (Bild: Andreas Meier)
  • Kontinuierliches maschinelles Lernen auf Datenströmen, hier per Windowing, mit Vorhersage von i' (Bild: Andreas Meier)
  • Ablauf der Trainings- und Inferenzkomponente (Bild: Andreas Meier)
Entwicklung der Anzahl registrierter Tankstellen; alte nicht gelöscht (Bild: Andreas Meier)

Um die Datenbank zu befüllen, schreibe ich mir zwei Services. Der eine importiert regelmäßig die Datenbankdumps von Tankerkoenig.de, der andere nutzt die kostenfreie Echtzeit-API, um alle fünf Minuten für die Tankstellen um meinen Wohn- und Arbeitsort die Preise abzufragen.

Auch um den Entwicklungsaufwand beherrschbar zu halten, konzentriere ich mich damit erst mal auf 44 Tankstellen. Da ich zumindest einen Teil davon kenne, kann ich auch leichter gelernte Muster validieren.

Die Abbildung 2 zeigt die Entwicklung der Anzahl der bei der MTS-K registrierten Tankstellen. Diese scheint interessanterweise nicht abzunehmen, sprich auch nicht mehr existente Tankstellen verbleiben in der Datenbank. Aber man erkennt, dass selbst innerhalb eines Monats regelmäßig neue Tankstellen entstehen. Das wird noch von hoher Bedeutung sein.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Benzinpreise vorhersagen: Effizientes, maschinelles Lernen für SparfüchseWarum Deep Learning diesmal keine gute Idee ist 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


ChristophMoehl 27. Apr 2023 / Themenstart

Danke für die ausführliche und erhellende Antwort. Der Punkt mit den Standortfaktoren ist...

Brennholzverleih 25. Apr 2023 / Themenstart

Aber solange sein Hobby jedes mal bei mir übers Grundstück geht nervt mich das schon...

Lemo 25. Apr 2023 / Themenstart

Ich danke dir für die Warnung, allerdings glaube ich, dass mein Motor das mit seinen...

Emulex 25. Apr 2023 / Themenstart

Die Deutschen sind Sparfüchse, die wollen das. Man kauft im Angebot - im Supermarkt...

Kommentieren



Aktuell auf der Startseite von Golem.de
Forschung
Erstes Röntgenbild von einem einzelnen Atom

Bisher war die Röntgenemission eines einzelnen Atoms zu schwach, um es auf einer Röntgenaufnahme abzulichten. Mit einer neuen Technik geht das jetzt.

Forschung: Erstes Röntgenbild von einem einzelnen Atom
Artikel
  1. US Air Force: KI-Drohne bringt in Gedankenexperiment Befehlshaber um
    US Air Force  
    KI-Drohne bringt in Gedankenexperiment Befehlshaber um

    Die US Air Force und der verantwortliche Offizier stellen klar, dass es sich nur um ein Gedankenspiel handelt - und keinen echten Test.

  2. Streaming: Verbraucherschützer warnen vor Netflix-Phishing
    Streaming
    Verbraucherschützer warnen vor Netflix-Phishing

    Phishing-Nachrichten im Namen von Netflix sind nichts Neues - in der aktuellen Verwirrung rund um das Kontensharing könnten sie aber einfacher verfangen.

  3. Forschung oder Ölbohrung?: China gräbt ein zehn Kilometer tiefes Loch
    Forschung oder Ölbohrung?
    China gräbt ein zehn Kilometer tiefes Loch

    Die Bohrung im Westen Chinas soll dazu dienen, mehr über das Innere des Planeten herauszufinden - oder doch dazu, um nach Öl zu suchen?

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Tiefstpreise: AMD Ryzen 9 7900X3D 534€, KFA2 RTX 3060 Ti 329,99€, Kingston Fury SSD 2TB (PS5-komp.) 129,91€ • Sony Days of Play: PS5-Spiele & Zubehör bis -70% • Roccat PC-Zubehör bis -50% • AVM Modems & Repeater bis -36% • Sony Deals Week [Werbung]
    •  /