[PYTHON] J'ai participé à la compétition NFL de Kaggle
Aperçu de la compétition
- Tenu du 10 octobre 2019 au 27 novembre 2019 (https://www.kaggle.com/c/nfl-big-data-bowl-2020/
)
- Prédire le nombre de yards que l'attaquant avancera dans le jeu de course de football américain
Données disponibles
- Des informations globales et des informations spécifiques au joueur sont données pour chaque run play
- Informations générales:
- Météo, température, vitesse du vent, direction du vent
--Stadium, emplacement, état du gazon
- Heure de début
- Score domicile / extérieur
--Nombre de downs (l'attaque se termine en 4 fois * 1)
--Nombre de yards requis pour continuer l'attaque
--Nombre de yards avancés ← Prédire ceci
- etc...
- Informations spécifiques au joueur * 2
- NFL ID
- Informations de localisation (X, Y)
- Informations de mouvement (S: vitesse, A: accélération)
--Orientation (Dir: orientation du corps, Orientation: orientation du visage)
- Anniversaire
- taille poids
--Loin de la maison
--Numéro Jersey
--Position
- etc...
- 1: Si vous avancez de 10 mètres ou plus dans les 4 downs, l'attaque se poursuivra. Si cela ne peut être fait, l'attaque et la défense seront échangées.
- 2: Il y a un total de 22 lignes de données, 11 joueurs offensifs et 11 défensifs par jeu.
À propos de l'équipe
- Le nom de l'équipe "Griffin Series" est hérité de AI RUSH.
- Les membres de l'équipe cette fois sont Mitsuno (tenyaf ) et Sato (foo_foo )
--Utilisez Slack pour la communication et la gestion des tâches (je regrette d'avoir dû utiliser Trello etc. pour la gestion des tâches)
- La gestion du code permet de relier les cahiers Kaggle les uns aux autres
――Les deux n'ont aucune connaissance préalable d'Ameft
résultat
--Public 47e place (sur 2038 équipes) * À l'issue de la 1ère étape (11/28)
«J'ai pu entrer dans la sphère d'argent!
Introduction de la solution d'équipe
Aperçu de la solution
- Ingénierie de la quantité de fonctionnalités centrée sur la position et la vitesse du joueur
- Estimation de l'état après 0,5 et 1,0 seconde (calculé à partir de la vitesse / accélération) et doublé la quantité de fonctionnalités
- Le modèle est un simple MLP
- Ajout de post-traitement pour supprimer le nombre impossible de yards
Prétraitement
- Puisqu'il existe deux types de directions d'attaque, «attaque à gauche» et «attaque à droite», les directions sont unifiées.
- Identification du nom de l'équipe
- Traitement météo / vitesse du vent / hauteur
- Météo: catégorisez en incluant un certain mot-clé (ensoleillé)
--Vitesse du vent: extraire les valeurs à l'exclusion des unités telles que "mph"
--Hauteur: Unifié aux pieds et aux pouces
Ingénierie de la quantité de fonctionnalités
--Statistiques dans chaque pièce
--X, Y, S, A min, max, ave, std, var
--Min, max, ave, std, var dans chacune des directions X et Y de S
- Informations sur le poussoir (* 1)
--X, Y, S, A min, max, ave, std, var
- grandeur S dans la direction X, grandeur S dans la direction Y
--Distance des membres de l'équipe offensive / défensive (min, max, moyenne, somme, var)
- Le temps le plus court pour entrer en collision avec un membre de l'équipe défensive f (min, max, ave, std)
- Rapport de vitesse avec le membre défensif le plus proche
- Distance du centre de gravité des membres de l'équipe offensive / défensive
--Distance de la ligne de mêlée
--Autres informations sur le joueur
- Informations sur le récepteur large (* 2)
--Large distance du récepteur de la ligne de brouillage (min, max, ave)
--X, Y, S, A (min, max, ave, std, var) des ennemis / alliés à moins de 5 mètres du récepteur large
- 1: porte-balle. Fondamentalement en marche arrière (RB).
- 2: Il existe plusieurs récepteurs larges (environ 1 à 3)
Renforcement utilisant des données après 0,5 seconde et 1,0 seconde
--Estimer et calculer X, Y et S après 0 seconde en fonction de la «vitesse», de «l'accélération» et de «l'orientation du corps» * 1
- Après remplacement par X, Y, S après 0,5 seconde et 1,0 seconde, diverses fonctionnalités sont extraites et combinées (nombre de fonctionnalités: 146 → 379 * 2)
Position au départ et 1,0 seconde plus tard
- 1: calculé en supposant un mouvement d'accélération constant
- 2: compte à l'exclusion des fonctionnalités en double
Architecture de réseau neuronal
--Fork et utiliser le modèle du noyau public
- Optimizer = Adam
- Loss = categorical cross entropy
- Puisque les valeurs possibles du nombre de yards sont discrètes, le modèle est formé comme une classification de 199 classes de [-99, 99].
Post-traitement
- En fonction de la ligne de brouillage, définissez la probabilité autre que les valeurs possibles sur 0
--Selon les règles de soumission, formez une distribution cumulative de -99-99 yards
Des idées qui n'ont pas pu être réalisées
――Graph Convolution en utilisant les informations de position du joueur sous forme de graphique
- Triez 22 joueurs dans un certain ordre et ajoutez X, Y, S, A à la colonne telle qu'elle est
--Informations sur X, Y, S, A d'autres positions importantes
- Réglage du réseau européen
Impressions
- tenyaf
«J'ai participé au concours Kaggle pour la première fois et j'ai beaucoup apprécié le sujet.
«C'était une lutte contre le temps de traitement, et j'ai réalisé la nécessité d'une écriture de code rapide.
«Il y avait de nombreuses idées qui me sont venues à l'esprit mais qui n'ont pas été mises en œuvre, je voulais donc améliorer la puissance de mise en œuvre.
- foo_foo
- L'ingénierie de la quantité de fonctionnalités a été relativement bien faite
--Apprenez la technologie NN dans les compétitions de table
--J'aurais dû utiliser un outil pour la gestion des tâches
――Je ferai de mon mieux pour obtenir de l'or