Comment "cultiver" Kaggle

image
* Ferme - (de l'agriculture anglaise) - une répétition longue et ennuyeuse de certaines actions de jeu dans un but précis (acquérir de l'expérience, obtenir des ressources, etc.).


Présentation


Récemment (1er octobre), une nouvelle session de l' excellent cours DS / ML a été lancée (je recommande fortement à tous ceux qui veulent, comme on l'appelle maintenant, de "saisir" DS comme cours initial). Et, comme d'habitude, après avoir terminé un cours, les diplômés ont une question - où acquérir une expérience pratique maintenant pour consolider des connaissances théoriques brutes. Si vous posez cette question sur n'importe quel forum de profil, la réponse en sera probablement une - allez résoudre Kaggle. Kaggle est oui, mais par où commencer et comment utiliser cette plate-forme le plus efficacement pour des compétences pratiques? Dans cet article, l'auteur tentera de donner des réponses à ces questions sur sa propre expérience, ainsi que de décrire l'emplacement du râteau principal sur le terrain de la DS compétitive, afin d'accélérer le processus de pompage et d'obtenir un fan de celui-ci.


Quelques mots sur le parcours de ses créateurs:


Le cours mlcourse.ai est l'une des activités à grande échelle de la communauté OpenDataScience. @yorko et l'entreprise (~ 60 personnes) démontrent que des compétences intéressantes peuvent être acquises en dehors de l'université, et même absolument gratuitement. L'idée principale du cours est la combinaison optimale de la théorie et de la pratique. D'une part, la présentation des concepts de base ne se fait pas sans les mathématiques, d'autre part - beaucoup de devoirs, les concours et projets Kaggle Inclass donneront, avec un certain investissement de votre part, d'excellentes compétences en apprentissage automatique. Il est impossible de ne pas noter la nature compétitive du cours - une évaluation générale des étudiants est en cours, ce qui motive fortement. Le cours est également différent en ce qu'il se déroule dans une communauté vraiment dynamique.


Le cours comprend deux compétitions Kaggle Inclass. Les deux sont très intéressants, ils fonctionnent bien dans la construction d'enseignes. Le premier est l'identification des utilisateurs par la séquence des sites visités . La seconde est la prédiction de la popularité d'un article sur le Medium . Le principal avantage est de deux devoirs, où vous devez être intelligent et battre les lignes de base dans ces compétitions.


Après avoir rendu hommage au parcours et à ses créateurs, nous continuons notre histoire ...


Je me souviens d'il y a un an et demi, un cours (toujours la première version) d'Andrew Ng a été achevé, une spécialisation de l'Institut de physique et de technologie de Moscou a été achevée , une montagne de livres a été lue - tête pleine théorique, mais lorsque vous essayez de résoudre n'importe quelle tâche de combat de base - une stupeur survient. Non, comment résoudre le problème - il est clair quels algorithmes appliquer - est également compréhensible, mais le code est très difficile à écrire, avec l'aide de sklearn / pandas accessible toutes les minutes, etc. Pourquoi donc - il n'y a pas de pipelines accumulés et la sensation du code "à portée de main".


Cela ne fonctionnera pas, pensa l'auteur, et se rendit à Kaggle. Il était effrayant de commencer tout de suite une compétition de combat, et la House of Competition « House Prices: Advanced Regression Techniques » est devenue le premier signe, qui a formé l'approche d'un pompage efficace décrite dans cet article.


Dans ce qui sera décrit plus loin, il n'y a pas de savoir-faire, toutes les techniques, méthodes et techniques sont évidentes et prévisibles, mais cela n'enlève rien à leur efficacité. Au moins, après eux, l'auteur a réussi à prendre le dé Kaggle Competition Master pendant six mois et trois compétitions en mode solo et, au moment de la rédaction de cet article, entrer dans le top 200 du classement mondial Kaggle . Soit dit en passant, cela répond à la question de savoir pourquoi l'auteur s'est même donné le courage d'écrire un article de ce genre.


En un mot, qu'est-ce que Kaggle


image
Kaggle est l'une des plates-formes les plus célèbres pour l'organisation de concours en science des données. Dans chaque concours, les organisateurs téléchargent une description du problème, des données pour résoudre ce problème, la métrique par laquelle la solution sera évaluée - et fixent des délais et des prix. Les participants disposent de 3 à 5 tentatives (par la volonté des organisateurs) par jour de «soumettre» (envoi de leur propre solution).


Les données sont divisées en un échantillon de formation (train) et un test (test). Pour la partie entraînement, la valeur de la variable cible (cible) est connue, pour la partie test - non. La tâche des participants est de créer un modèle qui, étant formé sur la partie formation des données, produira le résultat maximum sur le test.


Chaque participant fait des prédictions pour l'échantillon de test - et envoie le résultat à Kaggle, puis le robot (qui connaît la variable cible pour le test) évalue le résultat envoyé, qui est affiché dans le classement.


Mais tout n'est pas si simple - les données de test, à leur tour, sont divisées dans une certaine proportion entre la partie publique (publique) et la partie privée (privée). Pendant le concours, la décision envoyée est évaluée, selon la métrique définie par les organisateurs, sur la partie publique des données et présentée sur le classement (le soi-disant classement public) - par lequel les participants peuvent évaluer la qualité de leurs modèles. La décision finale (généralement deux - au choix du participant) est évaluée sur la partie privée des données de test - et le résultat tombe sur le classement privé, qui n'est disponible qu'après la fin du concours et par lequel, en fait, les résultats finaux sont évalués, des prix, des brioches et des médailles sont distribués.


Ainsi, pendant la compétition, seules les informations sont à la disposition des participants car leur modèle s'est comporté (quel résultat - ou a montré la vitesse) sur la partie publique des données du test. Si, dans le cas d'un cheval sphérique dans le vide, la partie privée des données coïncide dans la distribution et les statistiques avec le public - tout va bien, mais sinon - alors un modèle qui a bien fonctionné en public peut ne pas fonctionner dans la partie privée, c'est-à-dire overfix (recyclage). Et ici se pose ce que l'on appelle «fuite» dans le jargon, lorsque les gens de la 10e place en public descendent de 1000 à 2000 places sur une partie privée, car le modèle qu'ils ont choisi a été recyclé et n'a pas pu donner la précision nécessaire pour nouvelles données.


image


Comment éviter cela? Pour cela, tout d'abord, il est nécessaire de construire le schéma de validation correct, quelque chose qui est enseigné dans les premières leçons de presque tous les cours DS. Parce que si votre modèle ne peut pas donner les prévisions correctes sur les données qu'il n'a jamais vues - quelle que soit la technique sophistiquée que vous utilisez, quelle que soit la complexité des réseaux de neurones que vous construisez - en production, un tel modèle ne peut pas être produit, car ses résultats ne valent rien.


Pour chaque compétition sur Kaggle, une page séparée est créée sur laquelle il y a une section avec des données, avec une description de la métrique - et le plus intéressant pour nous - un forum et des noyaux.


Forum lui et le forum Kaggle, les gens écrivent, discutent et partagent des idées. Mais les noyaux sont déjà plus intéressants. En fait, c'est la possibilité d'exécuter votre propre code qui a un accès direct aux données de la concurrence dans le cloud Kaggle (analogue d'Amazon AWS, GCE de Google, etc.) Des ressources limitées sont allouées pour chaque noyau, donc s'il n'y a pas beaucoup de données, alors travaillez avec avec eux, vous pouvez directement à partir du navigateur sur le site Web de Kaggle - écrire du code, l'exécuter pour exécution, soumettre le résultat. Il y a deux ans, Kaggle a été acquis par Google, il n'est donc pas surprenant que cette fonctionnalité utilise Google Cloud Engine «sous le capot».


De plus, il y avait plusieurs compétitions (récentes - Mercari ), où vous pouviez travailler avec des données en général uniquement via des noyaux. Un format très intéressant, nivelant la différence de matériel entre les participants et forçant le cerveau à s'activer pour l'optimisation du code et des approches, car, naturellement, les noyaux avaient une limite de ressources stricte, à l'époque - 4 cœurs / 16 Go de RAM / 60 minutes d'exécution / 1 Go d'espace disque disponible et de sortie. En travaillant sur ce concours, l'auteur en a appris plus sur l'optimisation des réseaux de neurones que sur n'importe quel cours théorique. Un peu ne suffisait pas à l'or, a terminé en solo le 23, mais a reçu beaucoup d'expérience et de plaisir ...


Je profite de cette occasion pour remercier encore une fois mes collègues de ods.ai - Arthur Stepanenko (arthur) , Konstantin Lopukhin (kostia) , Sergey Fironov (sergeif) pour leurs conseils et leur soutien dans ce concours. En général, il y avait de nombreux points intéressants, Konstantin Lopukhin (kostia) , qui a pris la première place avec Paweł Jankiewicz , a ensuite présenté ce qui a été appelé "l' humiliation de référence de 75 lignes " dans la salle de discussion - un noyau en 75 lignes de code qui renvoie le résultat à la zone dorée du classement. Cela, bien sûr, doit être vu :)


D'accord, distrait, etc. - les gens écrivent le code et présentent les noyaux avec des solutions, des idées intéressantes et plus encore. Habituellement, dans chaque compétition, après quelques semaines, un ou deux excellents EDA du noyau (analyse exploratoire des données) apparaissent, avec une description détaillée de l'ensemble de données, des statistiques, des caractéristiques, etc. Et quelques lignes de base (solutions de base), qui, bien sûr, ne montrent pas le meilleur résultat dans le classement, mais elles peuvent être utilisées comme point de départ pour créer votre propre solution.


Pourquoi Kaggle?


image


En fait, peu importe sur quelle plateforme vous jouerez, juste Kaggle est l'une des premières et des plus populaires, avec une excellente communauté et un environnement assez confortable (j'espère qu'ils affineront les noyaux pour la stabilité et les performances, et beaucoup se souviennent de l'enfer qui se passait dans Mercari ) Mais, en général, la plateforme est très pratique et autosuffisante, et ses dés sont toujours appréciés.


Une petite digression en général sur le thème de la DS compétitive. Très souvent, dans les articles, les conversations et autres communications, la pensée semble que ce ne sont que des conneries, l'expérience dans les compétitions n'a rien à voir avec de vraies tâches, et les gens là-bas sont engagés dans le réglage de la 5e décimale, qui est la folie et divorcée de la réalité. Examinons ce problème plus en détail:


En tant que spécialistes DS en exercice, contrairement au monde universitaire et à la science, dans notre travail, nous devons et allons résoudre les problèmes commerciaux. C'est (voici une référence à CRISP-DM ) pour résoudre la tâche, il est nécessaire:


  • comprendre le dĂ©fi commercial
  • Ă©valuer les donnĂ©es sur le sujet pour savoir si la rĂ©ponse Ă  cette tâche commerciale peut y ĂŞtre cachĂ©e
  • collecter des donnĂ©es supplĂ©mentaires si elles ne suffisent pas pour obtenir une rĂ©ponse
  • choisissez la mesure qui se rapproche le plus de l'objectif commercial
  • et seulement après cela, sĂ©lectionnez le modèle, convertissez les donnĂ©es dans le modèle sĂ©lectionnĂ© et "drainez hgbusta". (C)

Les quatre premiers points de cette liste ne sont enseignés nulle part (corrigez-moi, si de tels cours sont apparus - je m'inscrirai sans hésitation), ici nous ne pouvons apprendre que de l'expérience de collègues travaillant dans cette industrie. Et voici le dernier point - à partir du choix du modèle et au-delà, il est possible et nécessaire de pomper en compétition.


Dans tous les concours, la plupart du travail pour nous a été effectué par les organisateurs. Nous avons l'objectif commercial décrit, la métrique approximative a été sélectionnée, les données ont été collectées - et notre tâche est de construire un pipeline de travail à partir de tout ce lego. Et ici, les compétences sont renforcées - comment travailler avec des passes, comment préparer des données pour les réseaux de neurones et les arbres (et pourquoi les réseaux de neurones nécessitent une approche spéciale), comment construire correctement la validation, comment ne pas se recycler, comment choisir les hyperparamètres, comment ....... une douzaine ou deux «comment» dont la performance compétente distingue un bon spécialiste des personnes de passage dans notre métier.


Ce que vous pouvez "cultiver" sur Kaggle


image


Fondamentalement, et c'est raisonnable, tous les nouveaux arrivants viennent à Kaggle pour acquérir et pomper une expérience pratique, mais n'oubliez pas qu'en plus de cela, il y a au moins deux autres objectifs:


  • MĂ©dailles de la ferme et dĂ©s
  • RĂ©putation agricole Ă  la communautĂ© de Kaggle

La principale chose à retenir est que ces trois objectifs sont complètement différents, des approches différentes sont nécessaires pour les atteindre, et vous ne devriez pas les mélanger, surtout au stade initial!


Ce n'est pas pour rien qu'il est souligné "au stade initial" lorsque vous pompez - ces trois objectifs fusionneront en un seul et seront résolus en parallèle, mais pendant que vous débutez - ne les mélangez pas ! De cette façon, vous éviterez la douleur, la déception et le ressentiment face à ce monde injuste.


Voyons brièvement les objectifs de bas en haut:


  • RĂ©putation - stimulĂ©e par la rĂ©daction de bons messages (et commentaires) sur le forum et la crĂ©ation de noyaux utiles. Par exemple, les noyaux EDA (voir ci-dessus), les articles dĂ©crivant des techniques non standard, etc.
  • Les mĂ©dailles sont un sujet très controversĂ© et haineux, mais bon. Il est pompĂ© en mĂ©langeant les noyaux publics (*), en participant Ă  une Ă©quipe avec un parti pris dans l'expĂ©rience et en crĂ©ant votre propre pipeline supĂ©rieur.
  • ExpĂ©rience - stimulĂ©e par l'analyse des dĂ©cisions et le travail sur les erreurs.

(*) Le mélange public de noyaux est une technique de médaille de ferme dans laquelle les noyaux disposés avec une vitesse maximale dans un classement public sont sélectionnés, leurs prédictions sont moyennées (mélangées) et le résultat est soumis. En règle générale, cette méthode conduit à un sur-équipement dur (recyclage pour s'entraîner) et à voler en troène, mais parfois elle vous permet d'obtenir une soumission presque en argent. L'auteur, au stade initial, ne recommande pas une approche similaire (lire ci-dessous sur la ceinture et le pantalon).


Je recommande le premier objectif de choisir "expérience" et de s'y tenir jusqu'au moment où vous sentez que vous êtes prêt à travailler sur deux / trois objectifs en même temps.


Il y a deux autres points qui méritent d'être mentionnés (Vladimir Iglovikov (ternaus) - merci pour le rappel).


Le premier est la conversion des efforts investis dans Kaggle en un nouveau lieu de travail plus intéressant et / ou bien rémunéré. Peu importe comment les matrices Kaggle sont nivelées maintenant, pour comprendre les gens, la ligne dans le résumé du maître de la compétition Kaggle et d'autres réalisations valent toujours quelque chose.


Pour illustrer ce point, nous pouvons citer deux entretiens ( un , deux ) avec nos collègues Sergey Mushinsky (cepera_ang) et Alexander Buslaev (albu)


Et aussi l'avis de Valery Babushkin ( venheads) :


Valery Babushkin - Responsable Data Science chez X5 Retail Group (l'effectif actuel est de 30 personnes + 20 postes vacants depuis 2019)


Responsable du groupe analytique Yandex Advisor


Kaggle Competition Master est une excellente mesure proxy pour évaluer un futur membre de l'équipe. Bien sûr, dans le cadre des derniers événements sous forme d'équipes de 30 personnes et de locomotives non déguisées, une étude un peu plus approfondie du profil s'impose qu'avant, mais cela reste une question de quelques minutes. Une personne qui a atteint le titre de maître, avec un haut degré de probabilité, sait écrire du code de qualité au moins moyenne, est assez versée dans l'apprentissage automatique, sait nettoyer les données et construire des solutions stables. Si vous ne pouvez toujours pas vous vanter de la langue d'un maître, le fait de participer est également un plus, au moins le candidat connaît l'existence de Kagl et n'était pas trop paresseux et a passé du temps à le maîtriser. Et si autre chose qu'un noyau public a été lancé et que la solution résultante a dépassé ses résultats (ce qui est assez facile à vérifier), alors c'est une occasion pour une discussion détaillée sur les détails techniques, ce qui est beaucoup mieux et plus intéressant que les questions de la théorie classique, dont les réponses donnent moins de compréhension de la façon dont une personne fera le travail à l'avenir. La seule chose dont je devrais avoir peur et avec ce que j'ai rencontré, c'est que certaines personnes pensent que le travail de DS est quelque chose comme Kagl, qui est fondamentalement faux. Beaucoup plus pensent que DS = ML, ce qui est aussi une erreur


Le deuxième point est que la solution à de nombreux problèmes peut être formulée sous la forme de pré-impressions ou d'articles, qui d'une part permettent de savoir que l'esprit collectif a donné naissance pendant la compétition pour ne pas mourir dans la nature du forum, mais d'autre part ajoute une ligne de plus au portfolio des auteurs et +1 à la visibilité, qui a en tout cas un effet positif sur la carrière et l'indice de citation.


Par exemple, la liste des travaux de nos collègues suite aux résultats de plusieurs concours

Auteurs (par ordre alphabétique):


Andrei O., Ilya, albu, aleksart, alex.radionov, almln, alxndrkalinin, cepera_ang, dautovri, davydov, fartuk, golovanov, ikibardin, kes, mpavlov, mvakhrushev, n01z3, rakhlin, rauf scut snikolenko, ternaus, twoleggedeye, versus, vicident, zfturbo


Nom du concours
Titre de l'article
Détection des fonctionnalités d'imagerie satellite Dstl
Détection de caractéristiques d'imagerie satellite utilisant un réseau de neurones convolutionnels profonds: une compétition Kaggle
Défi de masquage d'image Carvana
TernausNet: U-Net avec encodeur VGG11 pré-formé sur ImageNet pour la segmentation d'images
MICCAI2017: ANAlysis d'images gastro-intestinales (GIANA)
Détection et localisation de l'angiodysplasie à l'aide de réseaux de neurones à convolution profonde
MICCAI2017: Segmentation des instruments robotiques
Segmentation automatique des instruments en chirurgie assistée par robot à l'aide de l'apprentissage en profondeur
DEEPGLOBE - CVPR18: Extraction routière
Réseau entièrement convolutif pour l'extraction automatique des routes à partir d'images satellite
DEEPGLOBE - CVPR18: Détection de bâtiments
Ternausnetv2: réseau entièrement convolutionnel pour la segmentation d'instance
DEEPGLOBE - CVPR18: Classification de la couverture terrestre
Réseau pyramidal de caractéristiques pour la segmentation des terres à classes multiples
Défi d'âge osseux pédiatrique
Évaluation de l'âge osseux pédiatrique à l'aide de réseaux de neurones à convolution profonde
Société de traitement du signal de l'IEEE - Identification du modèle de caméra
Identification du modèle de caméra à l'aide de réseaux de neurones convolutifs
Défi de reconnaissance vocale TensorFlow
Approches d'apprentissage approfondi pour comprendre les commandes vocales simples
ICIAR2018-Challenge
Réseaux de neurones convolutifs profonds pour l'analyse d'images d'histologie du cancer du sein
Détection de la rétinopathie diabétique
Détection de la rétinopathie diabétique grâce à l'intégration du cadre de classification du Deep Learning
DEEPGLOBE - CVPR18: Classification de la couverture terrestre
Classification de la couverture terrestre Ă  partir d'images satellites avec perte U-Net et Lovasz-Softmax
DEEPGLOBE - CVPR18: Classification de la couverture terrestre
Classification de la couverture terrestre avec superpixels et post-optimisation de l'indice Jaccard
DEEPGLOBE - CVPR18: Détection de bâtiments
Détection de bâtiments à partir d'images satellites à l'aide d'une fonction de perte composite
Le défi de détection des baleines de Marinexplore et de Cornell University
Détection des appels de la baleine noire de l'Atlantique Nord avec des réseaux de neurones convolutifs
NIPS 2017: apprendre Ă  courir
Exécuter, squelette, exécuter: modèle squelettique dans une simulation basée sur la physique
NIPS 2017: apprendre Ă  courir
Learning to Run challenge solutions: adaptation des méthodes d'apprentissage par renforcement pour les environnements neuromusculosquelettiques
Défi de reconnaissance visuelle à grande échelle ImageNet 2013 (ILSVRC2013)
Comparaison des méthodes de régularisation pour la classification d'ImageNet avec les réseaux de neurones à convolution profonde
MS-Celeb-1M (2017)
Doppelganger Mining pour l'apprentissage de la représentation du visage
Visages déguisés dans la nature (DFW) 2018
Exploitation minière avec des exemples auxiliaires
Prévision des ventes d'épicerie Favorita
Prévision des ventes via WaveNet dans le cadre du concours Kaggle

Comment éviter la douleur de perdre une médaille


image


Pour marquer!


Je vais vous expliquer. Dans presque tous les concours, plus près de sa fin, un noyau est présenté au public avec une solution qui déplace le classement entier vers le haut, mais pour vous, avec votre décision, vers le bas en conséquence. Et chaque fois que le forum commence DOULEUR! Comment se fait-il que j'aie pris une décision sur l'argent, et maintenant je ne tire même pas sur le bronze. Quoi de neuf, récupérez-le.


N'oubliez pas - Kaggle est une DS compétitive. La place dans le classement où vous vous trouvez dépend de vous. , , , .


— .

, — . , , , - . , — . , - .


, , — … . , , — — .


, . — . ( Talking Data , 8- ) , (ppleskov) : " , , — ". , .


— :


" "()

, .


image


— python 3.6 jupyter notebook ubuntu . Python - DS, , jupyter , jupyter_contrib_nbextensions , , ubuntu — , bash :)


jupyter_contrib_nbextensions :


  • Collapsible headings ( )
  • Code folding ( )
  • Split cells (, - )

.


- , . — . — .


, jupyter notebook , , . ( , , ( (ternaus) )


, jupyter - IDE, pycharm .


, , " ". , .



/OOF (.) .

(*) OOF — out of folds , -. . .


Comment? :



En général, dans la communauté, on a tendance à passer progressivement à la troisième option, car et le premier et le second ont leurs inconvénients, mais ils sont simples, fiables et, franchement, pour Kaggle ils suffisent.


image


Oui, plus sur python pour ceux qui ne sont pas programmeurs - n'ayez pas peur de cela. Votre tâche est de comprendre la structure de base du code et l'essence de base du langage afin de comprendre les noyaux des autres et d'écrire vos bibliothèques. Il y a beaucoup de bons cours pour les débutants sur le Web, peut-être dans les commentaires, ils vous diront exactement où. Malheureusement (ou heureusement) je ne peux pas évaluer la qualité de ces cours, donc je ne fournis pas de liens dans l'article.


Passons donc au cadre.


image


Remarque


Toute autre description sera basée sur le travail avec des données tabulaires et textuelles. Les images, qui sont maintenant très présentes sur Kaggle, sont un sujet distinct avec des cadres distincts. À un niveau de base, il est bon de pouvoir les traiter, ne serait-ce que pour conduire à travers quelque chose comme ResNet / VGG et retirer des fonctionnalités, mais un travail plus approfondi et plus subtil avec eux est un sujet séparé et très étendu qui n'est pas pris en compte dans le cadre de cet article.


L'auteur admet honnêtement qu'il n'est pas très bon en photo. La seule tentative pour s'impliquer dans la beauté a été le concours Camera Identification , dans lequel, en passant, nos équipes avec le tag [ ods.ai ] ont fait exploser le classement entier à un point tel que les administrateurs de Kaggle ont dû nous rendre visite dans le mou pour s'assurer que tout était à l'intérieur règles - et rassurer la communauté. Donc, dans ce concours, j'ai obtenu une médaille d'argent honorifique avec la 46e place, et quand j'ai lu la description des meilleures solutions de nos collègues, j'ai réalisé que je ne pouvais pas aller plus haut et ils utilisent vraiment la magie noire avec augmentation, la bonté de 300 Go de données, sacrifices et ainsi de suite.


En général, si vous voulez commencer avec des images, vous avez besoin d'autres cadres et autres guides.


Objectif principal


Votre tâche consiste à écrire des pipelines (conçus comme des cahiers + modules jupyter) pour les tâches suivantes:


  • EDA (analyse exploratoire des donnĂ©es) . Ici, nous devons faire un commentaire - il y a des gens spĂ©cialement formĂ©s chez Kaggle :) qui ont vu de magnifiques noyaux EDA Ă  chaque compĂ©tition. Vous rĂ©ussirez Ă  peine Ă  les dĂ©passer, mais vous devez encore comprendre comment vous pouvez regarder les donnĂ©es, car Dans les missions de combat, cette personne spĂ©cialement formĂ©e sera vous. Par consĂ©quent, nous Ă©tudions les approches, Ă©largissons nos bibliothèques.
  • Nettoyage des donnĂ©es - tout sur le nettoyage des donnĂ©es. Émissions, omissions, etc.
  • PrĂ©paration des donnĂ©es - tout ce qui concerne la prĂ©paration des donnĂ©es pour le modèle. Quelques blocs:
  • Les modèles
    • Modèles linĂ©aires
    • Modèles d'arbres
    • RĂ©seaux de neurones
    • Exotique (FM / FFM)
  • SĂ©lection des fonctionnalitĂ©s
  • Recherche d'hyperparamètres
  • Ensemble

Dans les noyaux, généralement toutes ces tâches sont collectées dans un seul code, ce qui est compréhensible, mais je recommande fortement que pour chacune de ces sous-tâches, un ordinateur portable séparé et un module séparé (ensemble de modules) soient créés. Ce sera donc plus facile pour vous plus tard.


Attention à l'holivar possible - la structure de ce cadre n'est pas la vérité ultime, il existe de nombreuses autres façons de structurer vos pipelines - ce n'est que l'un d'entre eux.


Les données sont transmises entre les modules soit sous forme de CSV, soit de plume / cornichon / hdf - ce qui est plus pratique pour vous et ce à quoi vous êtes habitué ou l'âme se trouve.


En fait, beaucoup dépend encore de la quantité de données, dans TalkingData, par exemple, j'ai dû passer par memmap pour contourner le manque de mémoire lors de la création d'un ensemble de données pour lgb.


Dans d'autres cas, les données principales sont stockées dans hdf / feather, quelque chose de petit (comme un ensemble d'attributs sélectionnés) est dans CSV . Je le répète - il n'y a pas de modèles, qui est habitué à quoi, travailler avec ça.


Étape initiale


image


Nous allons à n'importe quel concours de démarrage (comme déjà mentionné, l'auteur a commencé avec House Prices: Advanced Regression Techniques ) et commençons à créer nos ordinateurs portables. Nous lisons les noyaux publics, copions des morceaux de code, des procédures, des approches, etc. etc. Nous exécutons les données dans le pipeline, soumettons - nous regardons le résultat, nous nous améliorons et ainsi de suite en cercle.


À ce stade, la tâche consiste à collecter un pipeline à cycle complet fonctionnant efficacement, depuis le chargement et le nettoyage des données jusqu'à la soumission finale.

Un exemple de liste de ce qui devrait être prêt et fonctionner à 100% avant de passer à l'étape suivante:


  • EDA . (statistiques sur l'ensemble de donnĂ©es, les boĂ®tes Ă  moustaches, la gamme des catĂ©gories, ...)
  • Nettoyage des donnĂ©es. (passe par fillna, nettoyage des catĂ©gories, combinaison des catĂ©gories)
  • PrĂ©paration des donnĂ©es
    • GĂ©nĂ©ral (catĂ©gories de traitement - Ă©tiquette / frĂ©quence / frĂ©quence, projection des nombres sur les catĂ©gories, transformation des nombres, regroupement)
    • Pour les rĂ©gressions (diffĂ©rentes Ă©chelles)
  • Les modèles
    • Modèles linĂ©aires (rĂ©gressions diverses - crĂŞte / logistique)
    • Modèles d'arbres (lgb)
  • SĂ©lection des fonctionnalitĂ©s
    • grille / recherche alĂ©atoire
  • Ensemble
    • RĂ©gression / lgb

Allez au combat


image


Choisissez la compétition que vous aimez et ... commencez :)



Bien qu'il n'y ait pas de schéma de validation fonctionnel - pas d'autres étapes !!!

  • ExĂ©cutez les donnĂ©es via notre pipeline gĂ©nĂ©rĂ© et soumettez le rĂ©sultat
  • Nous nous saisissons la tĂŞte, fous, nous calmons ... et continuons ...
  • Nous avons lu tous les noyaux concernant les techniques et les approches utilisĂ©es.
  • Lire toutes les discussions du forum
  • Nous remodelons / complĂ©tons les pipelines avec de nouvelles techniques
  • Nous passons Ă  l'Ă©tape 1

N'oubliez pas - notre objectif à ce stade est d'acquérir de l'expérience ! Remplissez nos pipelines d'approches et de méthodes de travail, remplissez nos modules de code de travail. Nous ne nous soucions pas des médailles - ou plutôt, c'est génial si vous pouvez immédiatement prendre votre place dans le classement, mais sinon, ne vous inquiétez pas. Nous ne sommes pas venus ici pendant cinq minutes, les médailles et les matrices n’iront nulle part.


Ici, la compétition est terminée, êtes-vous quelque part là-bas, il semblerait que tout le monde saisisse le prochain?


NON!


Que faites-vous ensuite:


  • Attendre cinq jours. Ne lisez pas le forum, oubliez Kaggle pour le moment. Laissez votre cerveau se dĂ©tendre et brouiller vos yeux.
  • Retournez Ă  la compĂ©tition. Pendant ces cinq jours, selon les règles du bon goĂ»t, tous les sommets publieront une description de leurs dĂ©cisions - dans des messages sur le forum, sous la forme de noyaux, sous la forme de rĂ©fĂ©rentiels github.

Et ici commence votre ENFER personnel!


  • Vous prenez plusieurs feuilles de format A4, sur chacune Ă©crivez le nom du module du framework ci-dessus (EDA / PrĂ©paration / Modèle / Ensemble / SĂ©lection de fonctionnalitĂ© / Recherche d'hyperparamètres / ...)
  • Lisez constamment toutes les solutions, Ă©crivez de nouvelles techniques, mĂ©thodes et approches qui vous sont inconnues dans les brochures correspondantes.

Et le pire:


  • De manière cohĂ©rente pour chaque module, Ă©crivez (espionnez) la mise en Ĺ“uvre de ces approches et mĂ©thodes, en Ă©tendant votre pipeline et vos bibliothèques.
  • En mode post-soumission, exĂ©cutez les donnĂ©es via votre pipeline mis Ă  jour jusqu'Ă  ce que vous ayez une solution dans la zone aurifère ou jusqu'Ă  ce que la patience et les nerfs s'Ă©puisent.

Et seulement après cela, nous passons à la prochaine compétition.


Non, je ne suis pas foutu. Oui, c'est possible et plus simple. Vous décidez.


Pourquoi attendre 5 jours et ne pas lire tout de suite, car sur le forum vous pouvez poser des questions? À ce stade (à mon avis), il est préférable de lire les fils déjà formés avec des discussions sur les solutions, les questions que vous pouvez avoir - soit quelqu'un pose déjà, soit il vaut mieux ne pas leur poser du tout, mais chercher la réponse vous-même)


Pourquoi tout cela fait-il cela? Eh bien, encore une fois - la tâche de cette étape est de développer une base de données de solutions, méthodes et approches. Base de travail de combat. Pour que lors de la prochaine compétition, vous ne perdiez pas de temps, mais dites immédiatement - oui, le codage cible peut entrer, et en passant, j'ai le bon code pour cela à travers les plis dans les plis. Ou oh! Je me souviens alors que l'ensemble est passé par scipy.optimize , et au fait, le code est déjà prêt pour moi.


Quelque chose comme ça ...


Passer en mode travail


image


Dans ce mode, nous résolvons plusieurs compétitions. A chaque fois on remarque qu'il y a de moins en moins d'enregistrements sur les feuilles, et de plus en plus de code dans les modules. Petit à petit, la tâche d'analyse se réduit au fait que vous venez de lire la description de la solution, dites oui, wow, oh la voilà! Et ajoutez un ou deux nouveaux sorts ou approches à votre tirelire.


Après cela, le mode passe au mode de gestion des erreurs. La base est prête pour vous, il ne vous reste plus qu'à l'appliquer correctement. Après chaque compétition, en lisant la description des solutions, voyez ce que vous n'avez pas fait, ce qui pourrait être mieux fait, ce que vous avez manqué ou où vous y êtes allé, comme je l'avais fait dans Toxic . Il marchait assez bien, dans le ventre d'or, et en privé, il a volé 1 500 positions. C'est dommage de pleurer ... mais s'est calmé, a trouvé une erreur, a écrit un message en retard - et a appris une leçon.


Un signe de la sortie finale du mode de fonctionnement peut être le fait qu'une des descriptions de la solution supérieure sera écrite à partir de votre surnom.


Ce qui devrait être approximativement dans les pipelines à la fin de cette étape:


  • Toutes sortes d'options pour le prĂ©traitement et la crĂ©ation d'entitĂ©s numĂ©riques - projections, relations,
  • DiffĂ©rentes mĂ©thodes de travail avec les catĂ©gories - Encodage cible moyen dans la bonne version, frĂ©quence, Ă©tiquette / ohe,
  • Divers schĂ©mas d'intĂ©gration sur du texte (Glove, Word2Vec, Fasttext)
  • Divers schĂ©mas de vectorisation de texte (Count, TF-IDF, Hash)
  • Plusieurs schĂ©mas de validation (N * M pour la validation croisĂ©e standard, temporelle, par groupe)
  • Optimisation bayĂ©sienne / hyperopt / autre chose pour sĂ©lectionner les hyperparamètres
  • Shuffle / permutation cible / Boruta / RFE - pour sĂ©lectionner les caractĂ©ristiques
  • Modèles linĂ©aires - dans le mĂŞme style sur un ensemble de donnĂ©es
  • LGB / XGB / Catboost - dans le mĂŞme style sur un ensemble de donnĂ©es

L'auteur a créé des métaclasses séparément pour les modèles linéaires et arborescents, avec une seule interface externe pour niveler les différences dans l'API pour différents modèles. Mais maintenant, vous pouvez exécuter sur une seule clé une ligne, par exemple, LGB ou XGB sur un seul ensemble de données traitées.


  • Plusieurs rĂ©seaux de neurones pour toutes les occasions (nous ne prenons pas de photos pour l'instant) - plongements / CNN / RNN pour le texte, RNN pour les sĂ©quences, Feed-Forward pour tout le reste. Il est bon de comprendre et de pouvoir auto-encoder .
  • Ensemble basĂ© sur lgb / rĂ©gression / scipy - pour les tâches de rĂ©gression et de classification
  • C’est bien de pouvoir dĂ©jĂ  utiliser les algorithmes gĂ©nĂ©tiques , parfois ils vont bien

Pour résumer


Tout sport, et la DS de compétition est aussi un sport, c'est beaucoup de sueur et beaucoup de travail. Ce n'est ni bon ni mauvais, c'est un fait. La participation à des compétitions (si vous abordez correctement le processus) stimule très bien les compétences techniques, en plus cela secoue plus ou moins l'esprit sportif lorsque vous ne voulez vraiment pas faire quelque chose, casse tout directement - mais vous vous mettez à votre ordinateur portable, refaites le modèle, lancez le calcul, de sorte que ronger cette malheureuse 5e décimale.


Alors décidez Kaggle - expérience à la ferme, médailles et fan!


Quelques mots sur les pipelines de l'auteur


image


Dans cette section, je vais essayer de décrire l'idée principale des pipelines et des modules collectés sur un an et demi. Encore une fois - cette approche ne prétend pas être universelle ou unique, mais soudain, quelqu'un vous aidera.


  • Tous les codes d'ingĂ©nierie des fonctionnalitĂ©s, Ă  l'exception de l'encodage cible moyen, sont extraits dans un module sĂ©parĂ© sous forme de fonctions. J'ai essayĂ© de collecter Ă  travers des objets, cela s'est avĂ©rĂ© ĂŞtre lourd, et dans ce cas, ce n'est pas nĂ©cessaire non plus.
  • Toutes les fonctionnalitĂ©s de l'ingĂ©nierie des fonctionnalitĂ©s sont rĂ©alisĂ©es dans le mĂŞme style et ont une signature d'appel et de retour unique:

def do_cat_dummy(data, attrs, prefix_sep='_ohe_', params=None): # do something return _data, new_attrs 

Nous passons l'ensemble de données, les attributs pour le travail, un préfixe pour les nouveaux attributs et des paramètres supplémentaires à l'entrée. En sortie, nous obtenons un nouvel ensemble de données avec de nouveaux attributs et une liste de ces attributs. De plus, ce nouvel ensemble de données est enregistré dans un cornichon / plume séparé.


Cela nous donne la possibilité d'assembler rapidement un ensemble de données pour la formation à partir de blocs pré-générés. Par exemple, pour les catégories, nous effectuons trois traitements à la fois - Label Encoding / OHE / Frequency, enregistrez-le dans trois plumes distinctes, puis au stade de la modélisation, nous jouons simplement avec ces blocs, créant divers ensembles de données d'apprentissage en un seul mouvement élégant.


  pickle_list = [ 'attrs_base', 'cat67_ohe', # 'cat67_freq', ] short_prefix = 'base_ohe' _attrs, use_columns, data = load_attrs_from_pickle(pickle_list) cat_columns = [] 

Si vous devez créer un autre ensemble de données, modifiez pickle_list , redémarrez et travaillez avec le nouvel ensemble de données.


L'ensemble principal de fonctions sur les données tabulaires (réelles et catégorielles) comprend divers codages de catégories, la projection d'attributs numériques sur des catégories, ainsi que diverses transformations.


  def do_cat_le(data, attrs, params=None, prefix='le_'): def do_cat_dummy(data, attrs, prefix_sep='_ohe_', params=None): def do_cat_cnt(data, attrs, params=None, prefix='cnt_'): def do_cat_fact(data, attrs, params=None, prefix='bin_'): def do_cat_comb(data, attrs_op, params=None, prefix='cat_'): def do_proj_num_2cat(data, attrs_op, params=None, prefix='prj_'): 

Un couteau suisse universel pour combiner les attributs, dans lequel nous transférons une liste d'attributs source et une liste de fonctions de conversion, en sortie, nous obtenons, comme d'habitude, un ensemble de données et une liste de nouveaux attributs.


  def do_iter_num(data, attrs_op, params=None, prefix='comb_'): 

Plus divers convertisseurs spécifiques supplémentaires.


Pour traiter les données de texte, un module distinct est utilisé, qui comprend diverses méthodes de prétraitement, de tokenisation, de lemmatisation / stemming, de traduction dans une table de fréquences, etc. etc. Tout est standard avec sklearn , nltk et keras .


Les séries chronologiques sont également traitées par un module distinct, avec des fonctions de conversion de l'ensemble de données d'origine pour les tâches ordinaires (régression / classification) et séquence à séquence. Merci à François Chollet d'avoir fini les keras pour que la construction des modèles seq-2-seq ne ressemble pas à un rituel vaudou d'appeler des démons.


Dans le même module, d'ailleurs, il y a des fonctions de l'analyse statistique habituelle des séries - vérification de la stationnarité, décomposition STL, etc. ... Cela aide beaucoup au stade initial de l'analyse à "sentir" la série et voir à quoi elle ressemble.


  • Les fonctions qui ne peuvent pas ĂŞtre appliquĂ©es immĂ©diatement Ă  l'ensemble de donnĂ©es, mais qui doivent ĂŞtre utilisĂ©es Ă  l'intĂ©rieur des plis lors de la validation croisĂ©e, sont placĂ©es dans un module distinct:


    • Signification du codage cible
    • SurĂ©chantillonnage / sous-Ă©chantillonnage

    Ils sont passés à l'intérieur de la classe de modèle (lire les modèles ci-dessous) au stade de la formation.



  _fpreproc = fpr_target_enc _fpreproc_params = fpr_target_enc_params _fpreproc_params.update(**{ 'use_columns' : cat_columns, }) 

  • Pour la modĂ©lisation, une mĂ©taclasse a Ă©tĂ© créée qui gĂ©nĂ©ralise le concept d'un modèle avec des mĂ©thodes abstraites: fit / predire / set_params / etc. Pour chaque bibliothèque spĂ©cifique (LGB, XGB, Catboost, SKLearn, RGF, ...) une implĂ©mentation de cette mĂ©taclasse est créée.

Autrement dit, pour travailler avec LGB, nous créons un modèle


  model_to_use = 'lgb' model = KudsonLGB(task='classification') 

Pour XGB:


  model_to_use = 'xgb' metric_name= 'auc' task='classification' model = KudsonXGB(task=task, metric_name=metric_name) 

Et toutes les fonctions fonctionnent en outre avec le model .


  • Pour la validation, plusieurs fonctions ont Ă©tĂ© créées qui calculent immĂ©diatement Ă  la fois la prĂ©diction et l'OOF pour plusieurs graines pendant la validation croisĂ©e, ainsi qu'une fonction distincte pour la validation rĂ©gulière via train_test_split. Toutes les fonctions de validation sont exploitĂ©es Ă  l'aide de mĂ©thodes de mĂ©ta-modèle, ce qui donne un code indĂ©pendant du modèle et facilite la connexion au pipeline de toute autre bibliothèque.


     res = cv_make_oof( model, model_params, fit_params, dataset_params, XX_train[use_columns], yy_train, XX_Kaggle[use_columns], folds, scorer=scorer, metric_name=metric_name, fpreproc=_fpreproc, fpreproc_params=_fpreproc_params, model_seed=model_seed, silence=True ) score = res['score'] XX_train [use_columns], yy_train, XX_Kaggle [use_columns], plis, marqueur = marqueur, METRIC_NAME = METRIC_NAME, fpreproc = _fpreproc, fpreproc_params = _fpreproc_params, model_seed = model_seed, silence = True res = cv_make_oof( model, model_params, fit_params, dataset_params, XX_train[use_columns], yy_train, XX_Kaggle[use_columns], folds, scorer=scorer, metric_name=metric_name, fpreproc=_fpreproc, fpreproc_params=_fpreproc_params, model_seed=model_seed, silence=True ) score = res['score'] 

  • Pour la sĂ©lection des fonctionnalitĂ©s - rien d'intĂ©ressant, RFE standard et ma permutation alĂ©atoire prĂ©fĂ©rĂ©e de toutes les manières possibles.


  • Pour rechercher des hyperparamètres, l'optimisation bayĂ©sienne est principalement utilisĂ©e, toujours sous une forme unifiĂ©e afin que vous puissiez exĂ©cuter une recherche pour n'importe quel modèle (via le module de validation croisĂ©e). Cette unitĂ© vit dans le mĂŞme ordinateur portable que la simulation.


  • Plusieurs fonctions ont Ă©tĂ© créées pour les ensembles, unifiĂ©es pour les tâches de rĂ©gression et de classification basĂ©es sur Ridge / Logreg, LGB, le rĂ©seau neuronal et mon scipy.optimize prĂ©fĂ©rĂ©.


    Une petite explication - chaque modèle du pipeline donne comme résultat deux fichiers: sub_xxx et oof_xxx , qui sont la prédiction pour le test et la prédiction OOF pour le train. Ensuite, dans le module d'ensemble du répertoire spécifié, nous téléchargeons des paires de prédictions de tous les modèles dans deux trames de données - df_sub / df_oof . Eh bien, nous examinons les corrélations, sélectionnons les meilleures, puis construisons des modèles de niveau 2 sur df_oof et appliquons à df_sub .


    Parfois, pour rechercher le meilleur sous-ensemble de modèles, la recherche par algorithmes génétiques est bonne (l'auteur utilise cette bibliothèque ), parfois la méthode de Caruana . Dans les cas les plus simples, les régressions standard et scipy.optimize fonctionnent correctement.


  • Les rĂ©seaux de neurones vivent dans un module sĂ©parĂ©, l'auteur utilise des keras dans un style fonctionnel , oui, pas aussi flexibles que pytorch , mais assez pour l'instant. Encore une fois, des fonctions de formation universelles sont Ă©crites qui sont invariantes au type de rĂ©seau.



Ce pipeline a été une fois de plus testé lors d'un récent concours de Home Credit , l'utilisation prudente et précise de tous les blocs et modules a apporté la 94e place et l'argent.


L'auteur est généralement prêt à exprimer une idée séditieuse que pour les données tabulaires et un pipeline normalement créé, la soumission finale pour tout concours devrait entrer dans le top 100 du classement. Naturellement, il existe des exceptions, mais en général, cette affirmation semble être vraie.


À propos du travail d'équipe


image


Ce n'est pas si simple de décider si Kaggle en équipe ou en solo dépend beaucoup de la personne (et de l'équipe), mais mon conseil pour ceux qui débutent est d'essayer de commencer un solo. Pourquoi? Je vais essayer d'expliquer mon point de vue:


  • Tout d'abord, vous comprendrez vos forces, vous verrez les faiblesses et, en gĂ©nĂ©ral, vous pourrez Ă©valuer votre potentiel en tant que pratique DS.
  • Deuxièmement, mĂŞme lorsqu'ils travaillent en Ă©quipe (sauf s'il s'agit d'une Ă©quipe Ă©tablie avec sĂ©paration des rĂ´les), ils attendent toujours une solution complète prĂŞte Ă  l'emploi de votre part - c'est-Ă -dire que vous devriez dĂ©jĂ  avoir des pipelines en Ă©tat de marche. (" Soumettre ou non ") (C)
  • Et troisièmement, il est optimal lorsque le niveau de joueurs dans l'Ă©quipe est Ă  peu près le mĂŞme (et assez Ă©levĂ©), alors vous pouvez apprendre quelque chose de vraiment très utile) Dans les Ă©quipes faibles (il n'y a rien de dĂ©rogatoire, je parle du niveau de formation et d'expĂ©rience Ă  Kaggle) il est très difficile d'apprendre quoi que ce soit, il vaut mieux mordre le forum et les noyaux. Oui, vous pouvez cultiver des mĂ©dailles, mais voir ci-dessus pour les objectifs et une ceinture pour maintenir le pantalon)

Conseils utiles du capitaine pour obtenir des preuves et la carte de râteau promise :)


image


Ces conseils reflètent l'expérience de l'auteur, ne sont pas des dogmes et peuvent (et devraient) être vérifiés par nos propres expériences


  • Commencez toujours par Ă©tablir une validation compĂ©tente - il n'y en aura pas; tous les autres efforts iront dans le four. Regardez Ă  nouveau le classement Mercedes .


    L'auteur est vraiment heureux que dans ce concours, il ait construit un système de validation croisée stable (3 x 10 fois), qui a maintenu la vitesse et a amené la 42ème place légitime)


  • Si une validation compĂ©tente est Ă©tablie, faites toujours confiance aux rĂ©sultats de votre validation . Si la vitesse de vos modèles s'amĂ©liore lors de la validation, mais s'aggrave sur le public - il est plus raisonnable de faire confiance aux validations. Lors de l'analyse, lisez simplement cette donnĂ©e sur laquelle le classement public est considĂ©rĂ© comme un autre pli. Vous ne voulez pas trop remplir votre modèle d'un pli?


  • Si le modèle et le schĂ©ma le permettent, faites toujours des prĂ©dictions OOF et gardez-les près du modèle. Au stade de l'ensemble, vous ne savez jamais ce qui se dĂ©clenchera.


  • Gardez toujours le code / OOF Ă  cĂ´tĂ© du rĂ©sultat pour le recevoir . Peu importe sur github, localement, n'importe oĂą. Deux fois, il s'est avĂ©rĂ© que dans l'ensemble, le meilleur modèle Ă©tait celui qui avait Ă©tĂ© fabriquĂ© il y a deux semaines hors de la boĂ®te et pour lequel le code n'Ă©tait pas enregistrĂ©. La douleur


  • Marteau sur la sĂ©lection du "bon" cĂ´tĂ© pour la validation croisĂ©e , il a lui-mĂŞme pĂ©chĂ© au dĂ©but. Mieux vaut en choisir trois et effectuer une validation croisĂ©e 3xN. Le rĂ©sultat sera plus stable et plus facile.


  • Ne poursuivez pas le nombre de modèles dans l'ensemble - c'est mieux moins, mais plus diversifiĂ© - plus diversifiĂ© dans les modèles, dans le prĂ©traitement, dans les jeux de donnĂ©es. Dans le pire des cas, selon les paramètres, par exemple, un arbre profond Ă  rĂ©gularisation rigide, un arbre peu profond.


  • Utilisez shuffle / boruta / RFE pour sĂ©lectionner les fonctionnalitĂ©s , rappelez-vous que l'importance des fonctionnalitĂ©s dans divers modèles arborescents est une mĂ©trique en perroquets sur un sac de sciure.


  • Opinion personnelle de l'auteur (peut ne pas coĂŻncider avec l'opinion du lecteur) Optimisation bayĂ©sienne > recherche alĂ©atoire> hyperopt pour la sĂ©lection d'hyperparamètres. (">" == mieux)


  • Le classement dĂ©chirant prĂ©sentĂ© sur un noyau public est mieux gĂ©rĂ© comme suit:


    • Il y a du temps - nous regardons ce qui est nouveau et nous nous construisons
    • Moins de temps - refaire pour notre validation, faire OOF - et le fixer Ă  l'ensemble
    • Il n'y a pas de temps du tout - nous avons stupidement mĂ©langĂ© avec notre meilleure solution et regardons vite.

  • Comment choisir deux soumissions finales - par intuition, bien sĂ»r. Mais sĂ©rieusement, alors gĂ©nĂ©ralement tout le monde pratique les approches suivantes:


    • Soumission conservatrice (sur les modèles durables) / soumission risquĂ©e.
    • Meilleur sur OOF / Public Leaderboard

  • N'oubliez pas - tout est un chiffre et les possibilitĂ©s de son traitement ne dĂ©pendent que de votre imagination. Utilisez la classification au lieu de la rĂ©gression, traitez les sĂ©quences comme une image, etc.



Et enfin:


  • Rejoignez le chat ods.ai :) et amusez-vous de DS et de la vie! )

Liens utiles


image


Général


http://ods.ai/ - pour ceux qui veulent rejoindre la meilleure communauté DS :)
https://mlcourse.ai/ - Site Web du cours ods.ai
https://www.Kaggle.com/general/68205 - poste sur le cours sur Kaggle


En général, je recommande fortement que dans le même mode que celui décrit dans l'article, regardez le cycle vidéo de mltrainings - il y a beaucoup d'approches et de techniques intéressantes.


Vidéo



Cours


Vous pouvez en savoir plus sur les méthodes et les approches pour résoudre les problèmes chez Kaggle à partir de la deuxième année de spécialisation , " Comment gagner un concours de science des données: apprendre des meilleurs Kagglers"


Lecture parascolaire:



Conclusion


image


Le sujet de la Data Science en général et de la Data Science compétitive en particulier est aussi inépuisable que l'atome (C). Dans cet article, l'auteur n'a révélé que légèrement le sujet du pompage des compétences pratiques à l'aide de plateformes compétitives. Si cela devient intéressant - connectez-vous, regardez autour de vous, accumulez de l'expérience - et écrivez vos articles. Plus le contenu est bon, mieux c'est pour nous tous!


Anticiper les questions - non, les pipelines et les bibliothèques de l'auteur ne sont pas encore disponibles gratuitement.


Un grand merci aux collègues de ods.ai: Vladimir Iglovikov (ternaus) , Yuri Kashnitsky (yorko) , Valery Babushkin ( venheads) , Alexei Pronkin (pronkin_alexey) , Dmitry Petrov (dmitry_petrov) , Arthur Kuzin (n01z3) , et aussi tous ceux qui vous lisent article avant publication, pour modifications et critiques.


Un merci spécial à Nikita Zavgorodnoy (njz) pour la relecture finale.


Merci de votre attention, j'espère que cet article sera utile à quelqu'un.


Mon surnom chez Kaggle / ods.ai : kruegger

Source: https://habr.com/ru/post/fr426227/


All Articles