Code Competition 12/2021: BIG DATA Predictions
Code Competition 12/2021: BIG DATA Predictions
Welche Vorhersagen lassen sich mit Big Data treffen?
Big Data ist in aller Munde. Daten sind Wissen und Wissen ist Macht. Aber was ist dran an diesem Spruch und dem gehypten Begriff der “Big Data”?
Du willst dabei sein?
Bitte melde dich über das Formular an und signalisiere damit, dass du an einer Lösung arbeitest.
Für alle Teilnehmer gibt es nach Anmeldung zusätzliche Hilfestellungen zur Entwicklung sowie eine Einladung zur Diskussion und Hilfestellung über unseren Discord-Server.
Die Abgabe deiner Lösung muss dann bis zum 31. Dezember erfolgen.
Weitere Informationen zur Abgabe erhältst du nach deiner Anmeldung.
{ABOUT}
Damit wollen wir uns in dieser Code Competition auseinandersetzen. Bei “Big Data” geht es um die Auswertung von großen Datenmengen. Die Auswertung besteht darin, die Datenmenge zunächst aufzubereiten, sodass sie von Software mit entsprechenden Algorithmen automatisch analysiert werden kann. Dann geht es um die Erkennung von Mustern und Zusammenhängen innerhalb der Daten und schließlich um die Herleitung von Erkenntnissen aus entdeckten Mustern und die Visualisierung dieser Erkenntnisse.
Folgende Schritte sind also wichtig:
- Aufbereiten
- Muster erkennen
- Erkenntnisse aus Mustern herleiten
- Erkenntnisse visualisieren
{INPUT}
Wir stellen dir einen Datensatz eines Rennspiels zur Verfügung. In diesem Datensatz findest Du über 160.000 eingetragene Rennen.
Aus diesen (Meta)-Daten lassen sich bereits viele spannende Aussagen treffen (Wer fährt präferiert wann und gegen wen Rennen? Gewonnen oder Verloren?) und Vorhersagen ableiten.
Tipp: Filtere die Einträge je nachdem, mit welcher Fragestellung Du die Daten untersuchst.
Wichtig: Dein Code gehört dir!
Dein Code bleibt dein Code – versprochen.
Du behältst alle Rechte an deinem Code, wir benötigen ihn nur, um ihn angemessen aus- und bewerten zu können, und dir hilfreiches Feedback geben zu können.
Weitere Infos dazu.
Die Daten
Um deine Lösung zu entwerfen, stellen wir dir den Datensatz zur Verfügung:
Jetzt herunterladen.
Der Datensatz beinhaltet folgende Informationen/Spalten:
- ID: Die ID des Eintrages
- race_created: Wann wurde das Rennen angesetzt/geplant?
- race_driven: Wann wurde das Rennen ausgetragen?
- track_id: ID der Rennstrecke, auf der das Rennen ausgetragen wurde.
- challenger: userID des Herausforderers
- opponent: userID des Gegners (Herausgeforderter)
- money: Einsatz des Rennens (in EUR); Erlaubter Wertebereich: 30- 1.000.000
- fuel_consumption: Spritverbrauch der Teilnehmer während des Rennens (in l)
- winner: Gewinner des Rennens (userID)
- status: Der Status des Rennens. Möglich sind: waiting, finished, retired, declined
- forecast: Wettervorhersage für das Rennen. Es handelt sich bei dem Feld (die CSV-Datei ist ein Export aus einer (My)SQL-Datenbank) um ein serialisiertes Array.
Das bedeutet, es wird ein Datentyp Array in Form eines Strings in der Datenbank gespeichert. Der Hintergrund ist, dass man nicht für jeden Wert im Array ein eigenes Feld in der Tabelle der Datenbank haben möchte.
Nun aber zu den Daten an sich. Wir wollen die Daten anhand des Strings aus dem „forecast“-Feld der ersten Zeile erläutern:
a:4:{s:5:”sunny”;i:10;s:5:”rainy”;i:70;s:8:”thundery”;i:0;s:5:”snowy”;i:20;}
Das a:4 bedeutet, dass es sich um ein serialisiertes Array mit 4 Datenpaaren handelt. Der Inhalt des Arrays steht dann in den geschweiften Klammern. Jedes Datenpaar repräsentiert eine Wetterart und die Wahrscheinlichkeit ihres Auftretens. Die Wetterarten (Einträge im Array) werden durch Semikolons getrennt. Es gibt vier Wetterarten (sunny, rainy, thundery, snowy). Jeweils davor steht „s:“ und eine Zahl. Die Zahl beschreibt lediglich die Länge des folgenden Strings (bei sunny 5 Zeichen, bei thundery 8 usw.). Hinter der Wetterart steht jeweils noch ein „i:“ und eine Zahl. Die Zahl hinter dem i (für Integer) beschreibt die prozentuale Wahrscheinlichkeit für das Auftreten des jeweiligen Wetters.
Der obige Eintrag bedeutet also aufgeschlüsselt:
10% sonniges Wetter (Wahrscheinlichkeit)
70% regnerisches Wetter (Wahrscheinlichkeit)
0% Gewitter (Wahrscheinlichkeit)
20% Schneefall (Wahrscheinlichkeit) - weather: Tatsächliches Wetter
Tipp: Das Feld “race_created” stellt tatsächlich den Zeitpunkt dar, an dem das Rennen geplant worden ist, aber nicht unbedingt den Zeitpunkt, an dem es durchgeführt worden ist.
Zur Erläuterung: In dem Spiel, aus dem der Datensatz stammt, können Benutzer andere Benutzer herausfordern. Sobald die Herausforderung von A an B geschickt wird, wird ein Datensatz erstellt. Das Feld “race_created” stellt also den Zeitpunkt der Herausforderung von A an B dar. Wenn die Herausforderung angenommen wird, wird das Feld “race_driven” mit einem Zeitpunkt gefüllt. Ist dort kein Zeitpunkt eingetragen, wurde das Rennen nicht ausgetragen.
Deine Abgabe soll:
- Die Daten aufbereiten, also fehlerhafte/auffällige Datensätze erkennen und filtern
- Spannende Fragestellungen an den Datensatz formulieren
- Die Daten anhand der Fragestellungen auswerten
- Die Aussagen/Ergebnisse visualisieren
- Optional: Voraussagen über weitere Rennen und Rennergebnisse zu verschiedenen Fahrer-IDs ausgeben.
Selbstverständlich kannst Du weitere Zusatzfeatures implementieren 😉
{REVIEW}
Worauf achten wir bei der Bewertung Deiner Abgabe?
Das Hauptaugenmerk bei dieser Code Competition liegt auf dem ERGEBNIS: Welche Zusammenhänge/Cluster wurden in den Daten gefunden und welche Erklärungsansätze lassen sich herauslsesen? Wurden die Daten sinnvoll aufbereitet? Das Ergebnis kann auch in Form einer PDF-Datei mit dem Ergebnis eingereicht werden, sofern der Lösungsweg ausführlich und sinnvoll erläutert und dokumentiert ist.
Darüber hinaus ist es immer gut folgende Aspekte bei
- Funktionalität: Lässt sich das Programm bedienen? Tut die Anwendung oder die Funktion, was sie soll? Wie umfangreich sind die Funktionen?
- Code-Qualität: Ist der Code sinnvoll strukturiert und effizient?
- Code-Lesbarkeit / Dokumentation: Lässt sich der Quellcode nachvollziehen? Ist der Code kommentiert?
- Setup: Ist das System einfach einzurichten / aufzusetzen? (z.B. mittels guter Dokumentation, Docker, Vagrant, Skripte, o.ä.)
- README: Wird eine README mitgeliefert, die zeigt, wie das Programm aufgerufen werden kann?
- Welche Zusatzfeatures wurden eingebaut?
Facts
Win!
- Platz: 500 €
- Platz: 400 €
- Platz: 300 €
Zeitlicher Ablauf
- Abgabetermin:
02. Januar 2021 – 23:59Uhr - Auswertung:
Januar 2022 - Siegerehrung:
März 2022
Abgabe
Programmiersprachen:
- Java, JavaScript, Python oder R.
- Als Form der Lösung ist erlaubt: Webseite, Desktopanwendung oder CLI Konsolen Ein- und Ausgabe.
- Die Verwendung von OpenSource Bibliotheken ist erlaubt und erwünscht.
Additional Details
Weiterleitungsevent - No
Partnerunternehmen -
Sponsor der Förderung -
Top-Event (Bezahlevent) - No
Talentpool-ID -