[PYTHON] Retour sur les 10 mois avant qu'un débutant en programmation ne devienne un expert Kaggle

Depuis que je suis devenu un expert Kaggle, j'ai décidé d'écrire un poème. J'espère que cela sera utile pour les personnes qui s'intéressent à l'IA mais ne peuvent même pas programmer **.

1. Spécifications initiales (février 2019)

2. Spécifications actuelles (décembre 2019)

3. Comment avez-vous appris le machine learning?

J'ai moi-même eu un an de "Je n'ai pas obtenu de résultats! Je n'ai pas pu l'obtenir !!", et j'ai décidé de faire quelque chose de nouveau. En fait, un peu ** le monde s'agrandit **. L'apprentissage automatique est recommandé aux ingénieurs qui font la même chose tous les jours ou qui deviennent une copie de leur patron **.

4. Flux d'apprentissage

Tout d'abord, le flux global est indiqué sur la figure. Sauf le premier mois et la fin, je ne pratique que la compétition. 1.png

4.1 Mise en route (premier mois)

Coursera Machine Learning Cours d'apprentissage automatique par le Dr Andrew Ng. Vous pouvez apprendre la plupart des bases. C'est certainement mieux de faire cela que de suivre un cours payant. c'est recommandé.

D'une manière ou d'une autre ** à la fin du jeu, le simple fait de regarder le visage de l'enseignant vous donnera un sentiment de sécurité **: Détendu:

Livre d'implémentation Deep Learning x Python

En raison de mon manque de connaissance de Python et du fait que les cours gratuits de Coursera n'incluaient pas d'apprentissage en profondeur, j'ai dirigé un livre de manière appropriée. J'ai appris le calcul matriciel Python (en particulier numpy), comment créer des diagrammes simples et les super bases de l'apprentissage profond. Personnellement, je recommande le système qui fait bouger vos mains. De plus, j'ai dit "[Premier apprentissage profond - Réseau neuronal et rétro-propagation appris avec Python-](https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%" 82% 81% E3% 81% A6% E3% 81% AE% E3% 83% 87% E3% 82% A3% E3% 83% BC% E3% 83% 97% E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0-Python% E3% 81% A7% E5% AD% A6% E3% 81% B6% E3% 83% 8B% E3% 83% A5% E3% 83% BC% E3% 83% A9% E3% 83% AB% E3% 83% 8D% E3% 83% 83% E3% 83% 88% E3% 83% AF% E3% 83% BC% E3% 82% AF% E3% 81% A8% E3% 83% 90% E3% 83% 83% E3% 82% AF% E3% 83% 97% E3% 83% AD% E3% 83% 91% E3% 82% B2% E3% 83% BC% E3% 82% B7% E3% 83% A7% E3% 83% B3-Apprentissage automatique-% E6% 88% 91% E5% A6% BB / dp / 4797396814) " était.

4.2 Début de Kaggle (1er et 2ème mois)

Quand j'ai appris qu'il y avait un concours de science des données appelé Kaggle, je me suis immédiatement inscrit en pensant: "Je pense que c'est formidable de pouvoir combiner étude et profit (prix)!"

J'ai été choqué par le fait très reconnaissant que la solution soit partagée. Mais quand un machine learning et un programme que vous ne comprenez pas sont écrits en anglais, le profane pleurera un peu: craintif:

À ce moment-là, il y avait une compétition dans laquelle divers Japonais, dont Qiita, aidaient. Oui, c'est Titanic.

Compétition Titanic

C'est une compétition qui a toujours lieu à Kaggle. C'est une compétition pour prédire qui survivra parmi les personnes (diverses personnes d'âges, de sexes et de statuts différents) qui montent à bord du Titanic.

C'était la première fois que je faisais quoi que ce soit, donc c'était douloureux de simplement manipuler les données de la table. Bien sûr, c'est la première fois pour les pandas. Cependant, vous pouvez faire l'expérience de l'ensemble du processus ** de nettoyage des données, d'analyse des fonctionnalités, de création de modèles, de validation et d'inférence. ** ** J'ai beaucoup appris car il y a beaucoup d'informations sur le net. Nous avons également implémenté pour la première fois des arbres de décision et des forêts aléatoires. Je ne pense pas qu'il y ait eu de perte à le faire.

«Je vois, je comprends l'apprentissage automatique.» J'étais de bonne humeur et j'ai immédiatement sauté dans un concours récompensé.

Concours de fil Kaggle

Pour moi en tant qu'atelier de mécanique, le système d'analyse des pannes était un sujet facile à aborder. C'était un sujet intéressant en termes de données chronologiques que je vois souvent.

Pour moi, qui ai vu RNN et GBDT pour la première fois, c'était déjà une bataille de dieux. Je me sens comme yamcha.

J'ai copié la solution publique (noyau) sans hésitation. Au fur et à mesure que vous le soumettez en jouant avec, petit à petit, le code qui appartenait à quelqu'un d'autre deviendra peu à peu familier. (Cependant, à mesure que vous l'ajoutez, le code devient sale et le score ne change pas beaucoup.) ** Au début, tout ce que vous avez à faire est de le copier et de le presser **, j'en suis sûr.

Je connaissais le résultat, mais c'était super Zako. Mais grâce au noyau, j'ai beaucoup appris du codage python à l'analyse de données chronologiques. Merci à tous ceux qui nous ont donné le noyau.

Concours de tremblement de terre de Kaggle

J'étais de bonne humeur pour "maîtriser la série chronologique", et je vais participer au concours de la même série qui a eu lieu immédiatement après le hasard. ** Cette fois, j'ai essayé d'atteindre la soumission sans regarder du tout la solution publique. ** **

À travers les soucis et les essais et erreurs, vous pourrez acquérir une grande expérience en recherchant diverses choses et en les réalisant vous-même. Vous ne pouvez jamais l'obtenir avec une attitude passive (juste en lisant un livre). Après tout, j'ai senti que l'apprentissage en compétition était merveilleusement bon. 2.png

Après cela, j'ai participé au Concours d'apprentissage automatique pour les fabricants sponsorisé par Dentsu International Information Service (ISID) et j'ai gagné le coup de chance. Il s'agissait également de données de séries chronologiques. Il peut y avoir cette année aussi, donc si vous êtes intéressé, faites-le.

4.3 Et au deep learning (3-4 mois)

Je me suis intéressé à l'apprentissage profond, en particulier lié à l'image. C'est parce que les déjeuners réguliers que j'ai commandés à la maison ** sont si terribles que même l'IA peut les distinguer. Je pensais que ** était le déclencheur.

Évaluation de la portion du déjeuner

J'ai pris une photo de la boîte à lunch quand je me suis trompé. Ma belle-fille me regarde avec méfiance, qui prend des photos en déplaçant l'arrangement. Karaage va encore et encore ici.

J'ai pris CNN (réseau neuronal convolutif) au sérieux pour la première fois. J'ai appris l'apprentissage par transfert parce qu'il n'y avait pas beaucoup d'images. Bien sûr, je n'ai pas de GPU, donc j'utiliserai ** Google Colab (*) **.

C'était un peu plus précis, mais c'était juste un système d'évaluation mystérieux qui m'a donné le même score. J'ai décidé d'arrêter parce que j'avais peur que l'intérieur de Google Drive soit plein d'images de déjeuner. ** Ce fut un échec. ** Encore une fois ** Un objectif et un but solides sont importants. ** **

Concours de tabac de signature - Détection du premier objet -

J'ai appris qu'il existe une plate-forme de concours nationale appelée Signate, et apparemment un concours lié à l'image était organisé, alors j'ai participé.

** Un concours pour frapper la marque de cigarettes affichée sur l'étagère. ** Il s'agit de la première tâche de détection d'objet. Je pensais que c'était une tâche parfaite pour moi de dire que j'avais maîtrisé l'apprentissage par transfert.

Mais qu'en est-il de la détection d'objets? YOLO? SSD? Quel est cet état? Après quelques recherches, j'ai découvert que YOLO avait jusqu'à la v3. Il semble que ce soit également assez bon. Heureusement, l'implémentation roulait donc je pouvais facilement voir le code.

Cependant, le contenu est bâclé et la personne qui l'a écrit ne semble être que Dieu. Cela ne peut pas être aidé, donc cette fois aussi, c'est ** presque rond pakuri ** au début. Cependant, à mesure que je joue avec, cela devient progressivement mon code. (Et ça devient de plus en plus du code sale comme des excréments: merde :) À ce stade, vous pourrez lire un petit article. Heureusement, YOLO était épanouissant, alors j'ai beaucoup lu.

Mais après tout c'était Zako, donc je ne peux pas gagner de prix. Cependant, depuis que je me suis intéressé à la détection d'objets à cette époque, j'ai continué à lire des articles.

** Je comprends tout, mais je pense qu'il y a une différence considérable entre «je ne sais pas» et «je sais», et il y a un grand écart entre «je peux le faire». Je pense qu'une lecture et une mise en œuvre appropriées sont importantes. ** **

De plus, étant donné que Signate ne peut souvent pas partager la solution, je recommande personnellement Kaggle pour ses débuts. 3.png https://signate.jp/competitions/159#abstract

4.4 Introduction à la compétition de table (4e-5e mois)

J'ai réalisé l'importance des spécifications de la machine dans la compétition d'image et j'étais fatigué de la mauvaise itération d'apprentissage, alors j'ai défié la compétition de table. Bien que j'aie eu un peu de compétition de séries chronologiques, je n'avais aucune expérience des compétitions de table ordinaires.

À cette époque, Signate organisera un concours intéressant.

Concours Iida des terrains industriels

C'est une compétition très basique qui prédit le prix des propriétés foncières à Saitama.

J'ai pu apprendre la joie de créer diverses quantités de caractéristiques, telles que le calcul de la distance temporelle à partir de la longitude et de la latitude, et la création de la zone par pièce à partir du nombre de pièces. Si la quantité de fonctionnalités qui clignote soudainement fonctionne sur la précision, cela devient une habitude **. Je pense qu'un homme d'idées qui est bon dans diverses pensées et délires est très approprié pour un tel endroit. La substance dans le cerveau sort.

J'ai pu en apprendre davantage sur l'importance de la validation. Je ne savais pas grand-chose lorsque le Dr Andrew me l'a dit à Coursera, mais une fois évaluée en termes de précision, une mauvaise validation crée des incohérences. Je pense que c'est aussi une grande partie de la connaissance qui peut être acquise dans la compétition.

Au fait, il est livré avec un bonus qui vous permet de vous familiariser (inutilement) avec Saitama.

J'ai aussi participé secrètement à la compétition moléculaire, mais je n'ai pas eu beaucoup de temps après tout. GNN semble être amusant, donc l'apprentissage est une tâche future.

4.5 Concours d'images relancé (6-9 mois)

Comme j'étudiais la tâche de détection depuis le concours du tabac, un concours parrainé par le Japon a eu lieu à Kaggle.

Compétition de personnages écrasés par Kaggle

C'était une tâche de détecter et de classer les personnages cassés. La détection en elle-même n'était pas une tâche très difficile, j'ai donc essayé de la mettre en œuvre moi-même autant que possible. À ce moment-là, j'ai pu mettre en œuvre le document pendant un certain temps, alors j'en ai activement essayé de nouveaux.

En plus de remercier kaggle pour son aide, ** Nous avons également partagé la solution avec le noyau. **

J'ai fait face au réseau neuronal convolutif le plus décent à ce jour. Si vous connaissez les points que vous voulez montrer, il semble que le réseau neuronal sera également vu correctement. Pour la première fois, on m'a fait réfléchir sérieusement à l'influence du contexte. En regardant L'éléphant dans la pièce, j'ai trouvé le plaisir de CNN. L'intérêt était une grande force motrice, et nous avons traversé divers essais et erreurs.

L'importance de la validation apprise lors du concours foncier est également apparue. Lorsque les documents du même auteur étaient mélangés dans la formation et la validation, l'exactitude était surestimée. Group Split était la bonne réponse.

C'était une compétition Kaggle, mais comme c'était une petite compétition sans médailles, elle était ** miraculeusement classée 7e **. Malheureusement, il est hors de la gamme des prix, mais j'ai pu recevoir le prix, ce qui a motivé ma motivation. 4.jpg https://www.kaggle.com/c/kuzushiji-recognition

Concours de glace de mer Signate

** Si vous pouvez effectuer une tâche de découverte, vous pouvez également effectuer une tâche de segmentation **. (Je pense que le premier est plus gênant pour la modélisation) J'ai participé au concours de glace de mer qui s'est tenu chez Signate juste comme il faut. La zone de glace de mer est identifiée en regardant les images de mesure à haute résolution acquises par le satellite.

** À ce moment-là, j'ai pu lire des articles dans une certaine mesure et les mettre en œuvre **, alors j'ai joué avec les fonctions de perte et j'ai écrit les derniers modèles tels que EfficientNet. Même s'il s'agissait de 6 sous-marins, j'étais à la 5e place pour le moment. J'ai été rattrapé par les Russes (?) Qui ont afflué à la fin du jeu, donc je suis également hors de la fourchette de prix cette fois-ci. Malheureusement, en raison des règles de Signate, la solution ne peut pas être partagée: froncer les sourcils2: 5.png https://signate.jp/competitions/183

5 Résumé

** Donc, l'apprentissage automatique est amusant, alors faisons-le ensemble: détendu: **

6 Enfin

J'ai entendu dire que j'étais devenu un expert Kaggle, mais quand j'ai regardé de près, il n'y avait pas de médaille de compétition. Je suis désolé Iki. 6.png

Recommended Posts

Retour sur les 10 mois avant qu'un débutant en programmation ne devienne un expert Kaggle
Retour sur 2016 dans le langage Crystal
Retour sur la création d'un service Web avec Django 2
Retour sur ABC155
Retour sur iOS'Healthcare App '2019
Le premier débutant en programmation à essayer une analyse de données simple avec programmation
[Python] Rétrospective de ce que j'ai enseigné aux débutants en programmation à partir des fonctions
Pensez à l'ordre dans lequel vous apprenez les langages de programmation tout en revenant sur votre vie informatique