words

Daten

Die Daten stehen zum Download bereit: bbdc.zip (~26MB)


Aufgabenstellung

Einführung
In der diesjährigen Bremen Big Data Challenge soll es um Daten aus einem Online-Spiel gehen. Dabei sollt ihr vorhersagen, welcher Spieler im nächsten Match wie gut abschneidet. Neben naheliegenden Anwendungen wie Sport-Wetten sind solche Ranking-Probleme häufig im Wertpapierhandel und natürlich bei Suchmaschinen zu finden. Es gibt also eine Vielzahl von realen Anwendungen für die von euch entwickelten Methoden.

Das Online-Spiel
Bei dem Online-Spiel handelt es sich um ein Team-basiertes Spiel, in dem immer ein rotes gegen ein blaues Team spielt. Jedes Team besteht aus 5 Spielern. Die Spieler übernehmen verschiedene Rollen (Aufgaben, 'Role') innerhalb des Teams und sammeln dabei individuell Punkte ('Points').
Jedes Match hat eine eindeutige 'Match-Id'. Spieler werden durch eine eindeutige 'Player-Id' und einen Spielernamen ('Player-Name') identifiziert. Die Spieler werden in jedem Match neu einem Team ('Team') zugeordnet und nehmen überlicherweise an vielen Matches teil.

Ziel der Bremen Big Data Challenge
Ziel ist es, für ein Match vorherzusagen, wie viele Punkte die Spieler in jedem Team im Verhältnis zu ihren Teammitgliedern einsammeln. Es soll also ein Ranking darüber erstellt werden, welchen Rang im Team ('red' oder 'blue') der jeweilige Spieler im Match einnimmt. Als Grundlage für diese Vorhersage erhaltet ihr jeweils die Team-Konstellationen: Das heißt, pro Team die zugehörigen Spieler mit ihren zugehörigen Rollen. Zusätzlich stehen euch Informationen aus alten Matches zur Verfügung, an denen die selben Spieler teilgenommen haben.

Daten
In der Bremen Big Data Challenge stehen euch dieses Jahr drei Dateien zur Verfügung:

Um eure Vorhersagen zu erstellen oder zu validieren stellen wir euch die Komma-separierte Textdatei (CSV) 'train.csv' zur Verfügung (train.csv, 3001 Zeilen x 6 Spalten):

  • Die erste Zeile enthält die Spaltenbeschreibung:
    Match-Id,Player-Id,Player-Name,Role,Team,Points-Rank
  • Danach folgen in jeder Zeile ein Spieler in einem Team, seine gespielte Rolle und eine Zahl für seine Platzierung innerhalb des Teams
  • Jeweils 5 aufeinanderfolgende Einträge innerhalb der Datei gehören zu einem Team.
  • Jeweils 10 aufeinanderfolgende Einträge innerhalb der Datei gehören zu einem Match.
  • Die Daten des ersten Teams sehen also folgendermaßen aus:
    Match-Id,Player-Id,Player-Name,Role,Team,Points-Rank
    143179,353,Sarah_Smith,0x53,blue,3.0
    143179,345,Natalie_Obrien,0x4f,blue,1.0
    143179,65,Jane_Gonzales,0xd,blue,5.0
    143179,288,Carlton_Raposa,0x7,blue,4.0
    143179,343,Micheal_Puckett,0x2c,blue,2.0

Im Match mit der 'Match-Id' 143179 hat also Spieler 'Jane_Gonzales' (mit 'Player-Id' 65) mit 'Role' 0xd am meisten Punkte gesammelt (Points-Rank = 5.0).

Die Datei 'challenge.csv' ist eine Komma-separierte Textdatei (CSV), in der Ihr Matches findet, für die ihr Rankings vorhersagen sollt (challenge.csv, 2001 Zeilen x 6 Spalten):

  • Diese Datei ist aufgebaut wie train.csv, allerdings sind hier die Ränge für die Spieler nicht gegeben, es steht also ein 'X' anstelle des entsprechenden Rangs im Team

Als zusätzliche Information stehen euch für jeden Spieler aus 'train.csv' und 'challenge.csv' einige Matches aus der Vergangenheit zur Verfügung, die in 'history.csv' zu finden sind (history.csv, 1431781 Zeilen x 13 Spalten):

  • Die erste Zeile enthält die Spaltenbeschreibung:
    Match-Id,Player-Id,Player-Name,Role,Stat1,Stat2,Stat3,Stat4,Points,Player-Won,Team,Match-Duration
  • Danach folgt wieder in jeder Zeile ein Spieler in einem Match. Allerdings gibt es für diese Spiele in der Vergangenheit noch weitere Spielstatistiken, wie die Länge des Matches ('Match-Duration'), ob der Spieler im gewinnenden Team war ('Player-Won') und 4 weitere mysteriöse Spielstatistiken ('Stat1' - 'Stat4').
  • Für diese Matches sind die absolut verdienten Punkte jedes Spielers aufgelistet, diese sind noch nicht innerhalb des Teams gerankt worden.
  • Das erste Team in dieser Datei sieht also folgendermaßen aus:
    Match-Id,Player-Id,Player-Name,Role,Stat1,Stat2,Stat3,Stat4,Points,Player-Won,Team,Match-Duration
    1,1,Bonita_Thompson,0x1,0,7,14,0,8409,lost match,blue,0:31:51
    1,2,Ladonna_Shipley,0x2,4,8,10,0,10301,lost match,blue,0:31:51
    1,3,Annette_Mead,0x3,8,7,8,0,10808,lost match,blue,0:31:51
    1,4,Warren_Harper,0x4,3,8,9,0,11425,lost match,blue,0:31:51
    1,5,Sherry_Jennings,0x5,10,3,4,0,14519,lost match,blue,0:31:51

Ranking
Für das Ranking wird den Spielern eines Teams in einem Match eine Zahl zwischen 1 und 5 zugeteilt, jenachdem, wie viele Punkte sie im Vergleich zu ihren Teammitgliedern verdient haben. Dabei ist der Rang aufsteigend sortiert, der Spieler mit Rang 5 hat also mehr Punkte verdient als ein Spieler mit Rang 1. Wenn mehrere Spieler gleich viele Punkte verdient haben, wird ihnen der Mittelwert der von ihnen belegten Ränge zugewiesen (Beispiel: Haben zwei Spieler gleich viele Punkte verdient und liegen damit auf Rang 3 bzw. 4, so wird ihnen beiden der Rang 3.5 zugewiesen).

Auswertung
Zur Bewertung einer Vorhersage verwenden wir den durchschnittlichen absoluten Abstand zur richtigen Rang-Position aller Spieler.

$\text{Vorhersagefehler} = \frac{1}{n} \cdot \sum\limits_{i=1}^{n}\left|Rang_i^{Vorhersage}-Rang_i^{Richtig}\right|$
$\text{Mit }n = \text{Anzahl Spieler}$

Beispiele für die Auswertung

Beim ersten Team aus train.csv:

Match-Id,Player-Id,Player-Name,Role,Team,Points-Rank
143179,353,Sarah_Smith,0x53,blue,3.0
143179,345,Natalie_Obrien,0x4f,blue,1.0
143179,65,Jane_Gonzales,0xd,blue,5.0
143179,288,Carlton_Raposa,0x7,blue,4.0
143179,343,Micheal_Puckett,0x2c,blue,2.0

Hätte also eine Vorhersage der folgenden Form:

Match-Id,Player-Id,Player-Name,Role,Team,Points-Rank
143179,353,Sarah_Smith,0x53,blue,3.0
143179,345,Natalie_Obrien,0x4f,blue,3.0
143179,65,Jane_Gonzales,0xd,blue,3.0
143179,288,Carlton_Raposa,0x7,blue,3.0
143179,343,Micheal_Puckett,0x2c,blue,3.0

Einen Vorhersagefehler von $\frac{1}{5} * (|3-3| + |3-1| + |3-5| + |3-4| + |3-2|) = 1.2$

Eine sehr gute Vorhersage:

Match-Id,Player-Id,Player-Name,Role,Team,Points-Rank
143179,353,Sarah_Smith,0x53,blue,4.0
143179,345,Natalie_Obrien,0x4f,blue,1.0
143179,65,Jane_Gonzales,0xd,blue,5.0
143179,288,Carlton_Raposa,0x7,blue,3.0
143179,343,Micheal_Puckett,0x2c,blue,2.0

Hätte also einen Vorhersagefehler von $\frac{1}{5} * (|4-3| + |1-1| + |5-5| + |3-4| + |2-2|) = 0.4$

Je kleiner der mittlere Fehler, desto besser die Vorhersage. Naives Vorhersagen (immer Rang 3 vorhersagen) ergibt also einen absoluten Fehler von 1.2. Ihr müsst nicht sicherstellen, dass eure Vorhersage ein gültiges Ranking der Spieler innerhalb des Teams darstellt. Es wäre z.B. erlaubt, für jeden Spieler Rang 2 vorherzusagen oder für einen Spieler einen Rang von 6 (ob solche Vorhersagen gut sind, müsst ihr selbst entscheiden).

Abgabe
Als Abgabe erwarten wir die Datei 'challenge.csv' (im UTF8-Format) in der ihr die 'X' in jeder Zeile durch den von euch prädizierten Ranking-Wert ersetzt. Diese müsst ihr noch entsprechend eures zuvor registrierten Teamnamens umbenennen: <Teamname>.csv

Ansonsten solltet ihr die Datei unverändert lassen. Das Team mit dem kleinsten mittleren Fehler über alle Einträge der 'challenge.csv' gewinnt.

Registrierung der Teams
Die Anmeldung eines Teams erfolgt per E-Mail an Diese E-Mail-Adresse ist vor Spambots gesch├╝tzt! Zur Anzeige muss JavaScript eingeschaltet sein! . Wichtig dabei: Der Betreff der E-Mail sollte ausschließlich aus dem Team-Namen bestehen, der zukünftig bei allen Einsendungen verwendet wird. Der Team-Name muss mindestens 10 Zeichen lang sein. Die E-Mail sollte außerdem folgende Daten für alle Mitglieder des Teams enthalten: Voller Name, Hochschule, persönliche E-Mail-Adresse. Die E-Mail-Adresse, von der aus die Anmeldung verschickt wird, ist für uns maßgeblich für alle Benachrichtigungen etc., die wir bezüglich des Wettbewerbs versenden.

Abgabe Prozedere
Teams können beliebig oft neue Lösungen einsenden. Dies erfolgt per E-Mail an Diese E-Mail-Adresse ist vor Spambots gesch├╝tzt! Zur Anzeige muss JavaScript eingeschaltet sein! . Jede Einsendung eines Teams muss im Betreff ausschließlich den Teamnamen tragen. Einsendungen ohne vorher registrierten Teamnamen werden nicht berücksichtigt! Die E-Mail sollte leer sein und als einzigen Anhang eine Textdatei haben, die „<Teamname>.csv“ heißt. Dieser Anhang enthält die Lösung, entsprechend dem von uns bereitgestellten Format (siehe Aufgabenstellung bzw. die Datei „train.csv“). Jede Mail mit einem solchen Anhang macht alle bisherigen Einsendungen dieses Teams ungültig. Die letzte Einsendung, die vor dem Ablauf des 31.03.2016 (Mitteleuropäischer Zeit) für ein Team eingeht, wird für die Bestimmung der Gewinner gewertet.

Zwischenstände und Leaderboard
Damit ihr ein Gefühl für euren aktuellen Stand bekommt, ermöglichen wir euch zu
4 Zeitpunkten einen Zwischenstand zu erfahren. Für jedes Team mit eingereichter Lösung werden jeweils zum 7.3.2016, 14.3.2016, 21.3.2016 und 28.3.2016 um Mitternacht die aktuellsten Einreichungen evaluiert. Das Leaderboard, welches für jedes Team den Teamnamen und den aktuellen Vorhersagefehler anzeigt, wird dann innerhalb von 48 Stunden per E-Mail an die bisherigen Teilnehmer versendet.


UB csl