[PYTHON] Jusqu'à ce que vous gagniez la médaille d'argent (top 3%) dans le concours auquel vous avez participé dans un délai d'un mois pour la première fois en science des données!

introduction

La science des données / l'apprentissage automatique semble intéressant, mais comment dois-je étudier? À partir de là, j'ai commencé à étudier en février et j'ai participé au concours Kaggle en mars avec le désir de pratiquer non seulement des études! En conséquence, j'ai pu remporter la *** médaille d'argent (+ top 3%) ***! Dans cet article, je vais résumer le processus que j'ai étudié et le déroulement du concours, j'espère donc que vous le verrez comme un exemple! image.png

Aperçu

➀Introduction de la concurrence ➁ Flow jusqu'à la fin de la compétition (Avant de participer au concours → Après avoir participé au concours) ③ Autres études que je faisais pendant le concours

Le concours auquel j'ai participé cette fois

M5 Forecasting - Concours de précision (mars-juin 2020) image.png Le concours sur lequel nous avons travaillé cette fois est un concours de table de ces données chronologiques, et le contenu est "Prévisions de ventes de produits" par Walmart, un important détaillant américain. Après avoir reçu des données pour les cinq dernières années, c'était comme une prévision des ventes pour le mois suivant (28 jours).

image.png (En ce qui concerne l'impression, il y avait beaucoup de données ... C'était aussi un concours qui m'a fait réfléchir à des programmes efficaces, y compris comment utiliser la mémoire.)

Chronologie

Pendant le concours de quatre mois de mars à fin juin, le calendrier s'est déroulé comme suit.   3/3 compétition commencée     ↓ Participé au concours de la mi-mars     ↓ 6/1 Publication des données de réponse correcte de la période du classement public (Même si vous soumettez le résultat de la prédiction à Kaggle, vous ne connaîtrez pas votre classement relatif!)     ↓ 6/30 Fin de la compétition

résultat

Comme je l'ai mentionné au début de l'article, Le résultat est ... *** 114e (top 3%) ***: smiley: !! (purement heureux!) ・ Nombre d'entrées: 88742 ・ Nombre d'équipes: 5558 image.png

Flow pour affronter la concurrence (début des études)

J'avais de l'expérience avec des langages de programmation autres que python, mais à ce stade, je n'avais jamais utilisé python moi-même, alors qu'est-ce que les pandas? Qu'est-ce que matplotlib? Je suis parti d'un état où je ne connaissais même pas une bibliothèque de base comme celle-là. Cette période était principalement considérée comme une période pour absorber les connaissances de base de l'apprentissage automatique et de python. Le contenu est résumé dans un autre article (Méthode d'étude pour l'apprentissage automatique à partir de zéro), veuillez donc vous référer à cet article pour plus de détails. J'espère que vous pourrez l'obtenir, mais voici un bref résumé.

C'est un flux d'étude en trouvant un livre / site qui peut supprimer les trois points suivants.

➀ Acquérir des connaissances de base sur l'apprentissage automatique (compréhension des mots et des termes)

→ Un manuel (livre) qui comprend clairement le mécanisme et la technologie de l'apprentissage automatique et de l'apprentissage en profondeur dans ce livre unique

➁ Comprendre comment utiliser la librairie (indispensable en data science comme numpy, pandas, matplotlib)

Introduction à Python pour la science des données

➂ Un livre d'introduction pour défier la concurrence (Kaggle)

→ Practice Data Science Series commençant par Python Kaggle Startbook (Livre)

Après avoir participé au concours M5

C'était une compétition à laquelle quatre personnes ont participé avec un ami, mais comme c'était la première fois pour toutes les compétitions de médailles de Kaggle et c'était une compétition à long terme, j'ai procédé à l'exploration. Ici, avec l'aide d'autres membres, j'étais en charge du rôle de gestion des tâches / progrès de l'équipe, résumons donc le flux général de progression et les outils utilisés ci-dessous. Je pense.

Dans l'ensemble, ce que faisait l'équipe

· Rencontre hebdomadaire Partager les progrès, partager des informations telles que des cahiers, des questions et des examens que vous ne comprenez pas. Je pense que pouvoir le faire une fois par semaine est très efficace dans une compétition à long terme comme celle-ci. À ce stade, j'ai pu parler des politiques futures et de la gestion des tâches, donc c'était très facile de procéder.

Slack Au lieu d'attendre une réunion hebdomadaire, s'il y avait quelque chose qui m'intéressait, j'ai partagé des informations et les ai examinées sur Slack. De plus, étant donné que de nombreux membres utilisaient beaucoup Slack, nous avons associé Slack à des outils tels que les suivants pour concentrer les notifications afin que nous puissions nous concentrer davantage sur Kaggle!

Trello Un des outils de gestion des progrès. En établissant un lien avec Slack, si vous écrivez la progression dans trello, vous serez notifié à Slack et vous pourrez mettre à jour trello à partir de Slack.

GitHub Partage de code, etc. En vous connectant à Slack, lorsque vous poussez, le message validé est également notifié à Slack (pratique car vous n'avez pas à signaler le push à chaque fois!) Ensuite, partagez des données volumineuses, etc. avec Drive.

(Stade précoce) EDA / centre de prétraitement (tous)

Je pense que chaque compétition est basique, mais j'ai d'abord essayé de "comprendre et comprendre les données". J'ai participé au concours quelques semaines après le début du concours, donc les cahiers d'autres personnes se rassemblaient, alors j'avais envie de les lire et de les analyser moi-même.

(Comment se battre en tant que débutant) Personnellement, ce que je gardais à l'esprit à ce moment-là, c'est qu'avant de commencer le kaggle, je me suis fixé comme objectif «d'établir et de mettre en pratique ce que j'étudiais». Avec des livres et des sites comme ceux présentés ci-dessus, je pense que vous pouvez apprendre le flux et l'utilisation de base en utilisant titanic comme exemple, mais il y a des moments où vous ne pouvez pas le comprendre sans le pratiquer. En réfléchissant à la façon de visualiser les données qui m'intéressent et comment les traiter, je suis retourné sur les livres et sites mentionnés ci-dessus et ai demandé aux autres membres.

(Milieu) EDA / Division du travail dans le prétraitement et la modélisation (2: 2)

Au fur et à mesure que nous procédions au prétraitement et que nous obtenions un aperçu des données dans une certaine mesure, nous avons décidé de répartir les rôles entre les membres qui poursuivent le prétraitement et les membres qui procèdent à la création du modèle. Je ne connaissais pas la répartition du rythme telle que la quantité de prétraitement à effectuer, et à la fin je ne pouvais pas utiliser la quantité de fonctionnalités à laquelle je pensais ici, alors j'ai pensé que je voudrais réfléchir à la prochaine fois, mais personnellement, je En termes de rôles, je pense que la répartition des rôles m'a permis de mieux comprendre mes tâches et m'a aidé à me concentrer.

(Comment se battre en tant que débutant) Au milieu du jeu, je me suis concentré sur le prétraitement car je n'étais pas encore habitué au prétraitement et je voulais acquérir un peu plus d'expérience. Je pense que le sens de l'EDA / prétraitement est large, mais j'ai principalement étudié et pratiqué la visualisation et l'analyse de données dans les premiers stades et le traitement des données en réponse à partir du stade intermédiaire. ..

(Stade avancé) Accent sur la création de modèles pendant le prétraitement (1: 3)

En entrant dans la phase finale, je ressentais des contraintes de temps, donc après avoir finalisé la politique, moi qui faisais principalement du prétraitement, j'ai également participé à la création de modèles. En particulier, à la fin de cette période, j'étais dans un état les yeux bandés où je ne pouvais pas du tout comprendre le mouvement du classement, alors j'avais l'impression de ne pas comprendre la position relative et de faire des essais et des erreurs.

(Comment se battre en tant que débutant) Comme nous le décrirons plus tard, même si j'avais de l'expérience dans la création de modèles via AtmaCup, je n'avais jamais travaillé sur des données de séries chronologiques, et il y avait beaucoup de choses que je ne comprenais pas, donc c'était super de pouvoir y travailler tout en étant enseigné par les membres. De plus, il y avait un problème avec la période, et pour cette partie, je me suis fortement appuyé sur les membres qui y travaillaient à l'avance, donc je ferai de mon mieux à l'avenir pour pouvoir faire plusieurs modèles et prendre plusieurs périodes de vérification. J'avais envie de venir.

Résumé

Par rapport à la participation à une compétition seule, j'ai senti que l'éventail de choses que je pourrais faire si je pouvais participer à une compétition en équipe s'élargirait, mais d'un autre côté, je pense que c'est le cas, mais en termes de difficulté à procéder en équipe. J'ai aussi ressenti. C'était la première compétition de médailles de Kaggle, donc je pense que les points suivants sont de bons points pour former une équipe.

<Bonne chose de former une équipe>

――Vous pouvez vous sentir libre de poser des questions que vous ne comprenez pas. ―― Comme vous pouvez diviser les rôles, vous pouvez vous concentrer sur ce que vous voulez étudier et le faire dans l'ordre + vous pouvez également diviser les rôles dans votre domaine de spécialité (Si vous commencez par vous-même, vous devez les implémenter tout en étudiant le prétraitement et la création de modèles, donc je pense que c'est assez difficile) ―― Étant donné que les propositions d'approche proviennent de perspectives différentes, vous pouvez penser à plus d'idées et de méthodes que lorsque vous pensez seul.

Enfin, je pense que je n'ai pas pu atteindre cette médaille par moi-même en tant que nouveau venu dans la science des données, je voudrais donc remercier mes amis qui ont participé ensemble au concours Kaggle et ont répondu aux questions. Je pense! Merci encore!

Ce que j'étudiais en parallèle pendant le concours

Comme c'est un peu en dehors de l'histoire principale, ce sera sous forme de "bonus", mais enfin je vais vous présenter d'autres études sur lesquelles je travaillais pendant ce concours. Aussi, dans le cadre de ma production, je pense le mettre ensemble dans un article, donc je vais le résumer brièvement ici, mais j'ai principalement travaillé sur les trois choses suivantes.

Machine Learning (Coursera) (avril-mai 2020)

J'ai fini par comprendre comment utiliser la bibliothèque, et il y a certaines parties que j'utilise dans la pratique, mais je ne sais pas comment se fait l'apprentissage automatique, j'ai donc décidé d'apprendre la partie théorique. Cours. J'ai pu faire un apprentissage théorique en utilisant matlab, donc je suis heureux d'en savoir plus sur l'apprentissage automatique.

Cours de base d'apprentissage en profondeur (Matsuo Lab., Université de Tokyo) (avril 2020-)

Je ne l'ai pas utilisé dans ce concours, mais je voulais comprendre le Deep Learning, alors j'ai suivi ce cours. Non seulement la partie de base de l'apprentissage automatique / apprentissage profond, mais aussi CNN, RNN, renforcement de l'apprentissage, VAE, etc. sont apprises à travers des conférences, et il est possible de comprendre tout en pratiquant dans les exercices suivants. (Présent forme progressive)

AtmaCup # 5 (29 mai-6 juin 2020)

Un concours auquel j'ai participé car je voulais faire une série d'EDA, de prétraitement et de modélisme par moi-même. Le contenu est une compétition table + données de signal sans série chronologique. Bien que le contenu de l'analyse ait été difficile, il y avait plusieurs participants japonais de haut rang à Kaggler, et c'était souvent une expérience d'apprentissage lors des séances de divulgation et de révision de l'essence après le concours.

Recommended Posts

Jusqu'à ce que vous gagniez la médaille d'argent (top 3%) dans le concours auquel vous avez participé dans un délai d'un mois pour la première fois en science des données!
J'ai fréquenté l'école et j'ai participé pour la première fois au concours limité BEGINNER de SIGNATE.
MongoDB avec Python pour la première fois
Une note utile lors de l'utilisation de Python après une longue période
C'est bon de participer pour la première fois! Un kit de démarrage hackason que vous souhaitez préparer "avant" de participer au hackason!
Jusqu'à ce que vous exécutiez l'application Flask sur Google App Engine pour le moment
Jusqu'à ce que vous insériez des données dans une feuille de calcul en Python
Résumé des points d'achoppement à Django pour la première fois
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Code dont j'aurais aimé me souvenir lors de ma première participation à AtCoder (Réflexion 1 pour la prochaine fois)
Paramètres d'exécution d'un test à chaque fois que vous enregistrez un fichier dans l'éditeur à l'aide de watchmedo (chien de garde)
Ce que j'ai appris en écrivant une Pull Request Python pour la première fois de ma vie
Si vous êtes novice en programmation, pourquoi ne pas créer un "jeu" pour le moment? L'histoire
Kaguru pour la première fois
Le premier débutant en programmation à essayer une analyse de données simple avec programmation