[PYTHON] Ich habe an Kaggles NFL-Wettbewerb teilgenommen
Überblick über den Wettbewerb
- Vom 10. Oktober 2019 bis 27. November 2019 (https://www.kaggle.com/c/nfl-big-data-bowl-2020/)
)
- Geben Sie die Anzahl der Meter an, die der Angreifer im American-Football-Laufspiel vorrücken wird
Verfügbare Daten
-
Für jedes Laufspiel werden allgemeine Informationen und spielerspezifische Informationen angegeben
-
Gesamtinformationen:
-
Wetter, Temperatur, Windgeschwindigkeit, Windrichtung
-
Stadion, Lage, Rasenzustand
-
Startzeit
--Home / Away Score
- etc...
- NFL ID
-
Anzahl der Yards, die erforderlich sind, um den Angriff fortzusetzen - Anzahl der fortgeschrittenen Yards ← Vorhersage dieser - Spielerspezifische Informationen * 2 - Positionsinformationen (X, Y) - Bewegungsinformationen (S: Geschwindigkeit, A: Beschleunigung) - Richtung (Richtung: Körper) Orientierung: Orientierung)
-
Geburtstag
-
Größe, Gewicht
-
Zuhause / weg
--Trikot-Nummer
--Position
- etc...
- 1: Wenn Sie sich innerhalb von 4 Tiefen 10 Meter oder mehr vorwärts bewegen, wird der Angriff fortgesetzt. Wenn dies nicht möglich ist, werden Angriff und Verteidigung gewechselt.
- 2: Es gibt insgesamt 22 Datenzeilen, 11 offensive und 11 defensive Spieler pro Spiel.
Über das Team
- Der Teamname "Griffin Series" wurde von AI RUSH geerbt.
- Die Teammitglieder sind diesmal Mitsuno (tenyaf ) und Sato (foo_foo )
- Verwenden Sie Slack für die Kommunikation und das Aufgabenmanagement (ich bedauere, dass ich Trello usw. für das Aufgabenmanagement hätte verwenden sollen)
- Die Codeverwaltung teilt Kaggle-Notizbücher miteinander
――Beide von ihnen haben keine Vorkenntnisse von Ameft
Ergebnis
- Öffentlicher 47. Platz (von 2.038 Teams) * Am Ende der 1. Etappe (28.11.)
――Ich konnte die silberne Kugel betreten!
Einführung der Teamlösung
Überblick über die Lösung
- Feature Quantity Engineering konzentriert sich auf die Position und Geschwindigkeit des Spielers
- Schätzte den Zustand nach 0,5 und 1,0 Sekunden (berechnet aus Geschwindigkeit / Beschleunigung) und verdoppelte den Funktionsumfang
- Das Modell ist ein einfaches MLP
- Hinzufügung der Nachbearbeitung, um die unmögliche Anzahl von Yards zu entfernen
Vorverarbeitung
- Da es zwei Arten von Angriffsrichtungen gibt, "Angriff nach links" und "Angriff nach rechts", sind die Richtungen einheitlich.
- Identifizierung des Teamnamens
- Verarbeitung von Wetter / Windgeschwindigkeit / Höhe
--Wetter: Kategorisieren Sie mit einem bestimmten Schlüsselwort (sonnig).
- Windgeschwindigkeit: Extrahieren Sie Werte ohne Einheiten wie "mph".
- Höhe: Einheitlich zu Fuß und Zoll
Feature Quantity Engineering
-
Statistik in jedem Spiel
-
X, Y, S, A min, max, ave, std, var
--Min, max, ave, std, var in jeder der X- und Y-Richtungen von S.
-
Informationen zum Rusher (* 1)
-
X, Y, S, A min, max, ave, std, var
-
S-Größe in X-Richtung, S-Größe in Y-Richtung
-
Entfernung zu offensiven / defensiven Teammitgliedern (min, max, ave, sum, var)
-
Die kürzeste Zeit, um mit einem Mitglied des Defensivteams zusammenzustoßen (min, max, ave, std)
-
Geschwindigkeitsverhältnis mit dem nächsten Verteidigungsmitglied
-
Entfernung vom Schwerpunkt der offensiven / defensiven Teammitglieder
-
Abstand von der Scrimmage-Linie
-
Andere Spielerinformationen
- Breite Empfängerinformationen (* 2)
- Breiter Empfängerabstand von der Scramage-Leitung (min, max, ave)
- X, Y, S, A (min, max, ave, std, var) von Feinden / Verbündeten innerhalb von 5 Metern um den breiten Empfänger
- 1: Kugelhalter. Grundsätzlich läuft zurück (RB).
- 2: Es gibt mehrere breite Empfänger (ca. 1 bis 3)
Verstärkung mit Daten nach 0,5 Sekunden und 1,0 Sekunden
- Schätzen und berechnen Sie X, Y und S nach 0 Sekunden basierend auf "Geschwindigkeit", "Beschleunigung" und "Körperorientierung" * 1
- Nach dem Ersetzen durch X, Y, S nach 0,5 Sekunden und 1,0 Sekunden werden verschiedene Merkmale extrahiert und kombiniert (Anzahl der Merkmale: 146 → 379 * 2).
Position am Start und 1,0 Sekunden später
- 1: Berechnet unter der Annahme einer konstanten Beschleunigungsbewegung
- 2: Anzahl ohne doppelte Features
Neuronale Netzwerkarchitektur
--Fork und benutze das Modell des öffentlichen Kernels
- Optimizer = Adam
- Loss = categorical cross entropy
- Da die möglichen Werte für die Anzahl der Yards diskret sind, wird das Modell als 199-Klassen-Klassifikation von [-99, 99] trainiert.
Nachbearbeitung
- Setzen Sie basierend auf der Scramage-Zeile eine andere Wahrscheinlichkeit als die möglichen Werte auf 0
- Bilden Sie gemäß den Einreichungsregeln eine kumulative Verteilung von -99-99 Yards
Ideen, die nicht realisiert werden konnten
――Graph Convolution unter Verwendung der Positionsinformationen des Spielers als Grafik
- Sortieren Sie 22 Spieler in einer bestimmten Reihenfolge und fügen Sie der Spalte so wie sie ist X, Y, S, A hinzu
- Informationen zu X, Y, S, A anderer wichtiger Positionen
--Neural Network Tuning
Impressionen
- tenyaf
――Ich habe zum ersten Mal am Kaggle-Wettbewerb teilgenommen und das Thema sehr genossen.
――Es war ein Kampf gegen die Verarbeitungszeit, und ich erkannte die Notwendigkeit eines schnellen Code-Schreibens.
―― Da viele Ideen in den Sinn kamen, aber nicht umgesetzt wurden, wollte ich die Implementierungsleistung verbessern.
- foo_foo
--Feature Quantity Engineering war relativ gut gemacht
--Lerne NN-Technologie in Tischwettbewerben
- Ich hätte ein Tool für die Aufgabenverwaltung verwenden sollen
――Ich werde mein Bestes geben, um Gold zu bekommen