Kaggle: là où les data scientists apprennent et s'affrontent

La science des données est généralement plus un art qu'une science, malgré son nom. Vous commencez avec des données sales et un ancien modèle prédictif statistique et essayez de faire mieux avec l'apprentissage automatique. Personne ne vérifie votre travail ou n'essaie de l'améliorer: si votre nouveau modèle s'adapte mieux que l'ancien, vous l'adoptez et passez au problème suivant. Lorsque les données commencent à dériver et que le modèle cesse de fonctionner, vous mettez à jour le modèle à partir du nouvel ensemble de données.

Faire de la science des données dans Kaggle est assez différent. Kaggle est un environnement et une communauté d'apprentissage automatique en ligne. Il contient des ensembles de données standard que des centaines ou des milliers d'individus ou d'équipes essaient de modéliser, et il existe un classement pour chaque compétition. De nombreux concours offrent des prix en argent et des points de statut, et les gens peuvent affiner leurs modèles jusqu'à la clôture du concours, pour améliorer leurs scores et gravir les échelons. De minuscules pourcentages font souvent la différence entre les gagnants et les finalistes.

Kaggle est quelque chose avec lequel les scientifiques de données professionnels peuvent jouer pendant leur temps libre, et les scientifiques en herbe en herbe peuvent utiliser pour apprendre à créer de bons modèles d'apprentissage automatique.

Qu'est-ce que Kaggle?

Considéré de manière plus complète, Kaggle est une communauté en ligne pour les scientifiques des données qui propose des concours d'apprentissage automatique, des ensembles de données, des blocs-notes, l'accès à des accélérateurs de formation et de l'éducation. Anthony Goldbloom (PDG) et Ben Hamner (CTO) ont fondé Kaggle en 2010, et Google a acquis la société en 2017.

Les concours Kaggle ont amélioré l'état de l'art de l'apprentissage automatique dans plusieurs domaines. L'un consiste à cartographier la matière noire; un autre est la recherche sur le VIH / sida. En regardant les gagnants des concours Kaggle, vous verrez de nombreux modèles XGBoost, des modèles Random Forest et quelques réseaux de neurones profonds.

Compétitions Kaggle

Il existe cinq catégories de concours Kaggle: mise en route, terrain de jeu, mise en avant, recherche et recrutement.

Les concours de mise en route sont semi-permanents et sont destinés à être utilisés par les nouveaux utilisateurs qui commencent à peine à franchir la porte dans le domaine de l'apprentissage automatique. Ils n'offrent ni prix ni points, mais disposent de nombreux tutoriels. Les compétitions de mise en route ont des classements glissants de deux mois.

Les compétitions Playground sont un cran au-dessus de Getting Started en difficulté. Les prix vont des félicitations aux petits prix en espèces.

Les compétitions présentées sont des défis d'apprentissage automatique à grande échelle qui posent des problèmes de prédiction difficiles, généralement à des fins commerciales. Les compétitions en vedette attirent certains des experts et des équipes les plus formidables et offrent des cagnottes pouvant atteindre un million de dollars. Cela peut sembler décourageant, mais même si vous n'en gagnez pas, vous apprendrez en essayant et en lisant les solutions d'autres personnes, en particulier les solutions les mieux classées.

Les concours de recherche impliquent des problèmes qui sont plus expérimentaux que des problèmes de compétition présentés. Ils n'offrent généralement pas de prix ou de points en raison de leur nature expérimentale.

Dans les concours de recrutement, les individus s'affrontent pour créer des modèles d'apprentissage automatique pour les défis organisés par l'entreprise. À la clôture du concours, les participants intéressés peuvent télécharger leur curriculum vitae pour examen par l'hôte. Le prix est (potentiellement) un entretien d'embauche dans l'entreprise ou l'organisation qui accueille le concours.

Il existe plusieurs formats de concours. Dans une compétition Kaggle standard, les utilisateurs peuvent accéder aux ensembles de données complets au début de la compétition, télécharger les données, créer des modèles sur les données localement ou dans les blocs-notes Kaggle (voir ci-dessous), générer un fichier de prédiction, puis télécharger les prédictions en tant que soumission sur Kaggle. La plupart des compétitions sur Kaggle suivent ce format, mais il existe des alternatives. Quelques compétitions sont divisées en étapes. Certains sont des concours de code qui doivent être soumis à partir d'un bloc-notes Kaggle.

Ensembles de données Kaggle

Kaggle héberge plus de 35 000 ensembles de données. Ceux-ci sont disponibles dans une variété de formats de publication, y compris les valeurs séparées par des virgules (CSV) pour les données tabulaires, JSON pour les données arborescentes, les bases de données SQLite, les archives ZIP et 7z (souvent utilisées pour les ensembles de données d'image) et les ensembles de données BigQuery, qui sont multiples - ensembles de données SQL de téraoctets hébergés sur les serveurs de Google.

Il existe plusieurs façons de trouver des ensembles de données Kaggle. Sur la page d'accueil de Kaggle, vous trouverez une liste des ensembles de données «chauds» et des ensembles de données téléchargés par les personnes que vous suivez. Sur la page des ensembles de données Kaggle, vous trouverez une liste d'ensembles de données (initialement classés par «les plus chauds» mais avec d'autres options de classement) et un filtre de recherche. Vous pouvez également utiliser des balises et des pages de balises pour localiser des ensembles de données, par exemple //www.kaggle.com/tags/crime.

Vous pouvez créer des ensembles de données publics et privés sur Kaggle à partir de votre ordinateur local, des URL, des référentiels GitHub et des sorties de Kaggle Notebook. Vous pouvez définir un ensemble de données créé à partir d'une URL ou d'un référentiel GitHub pour qu'il se mette à jour régulièrement.

Pour le moment, Kaggle a pas mal d'ensembles de données, de défis et de cahiers COVID-19. Il y a déjà eu plusieurs contributions communautaires à l'effort de compréhension de cette maladie et du virus qui la cause.

Cahiers Kaggle

Kaggle prend en charge trois types de blocs-notes: les scripts, les scripts RMarkdown et les blocs-notes Jupyter. Les scripts sont des fichiers qui exécutent tout sous forme de code de manière séquentielle. Vous pouvez écrire des cahiers en R ou Python. Les codeurs R et les personnes soumettant du code pour les compétitions utilisent souvent des scripts; Les codeurs Python et les personnes effectuant des analyses de données exploratoires ont tendance à préférer les notebooks Jupyter.

Les ordinateurs portables de n'importe quelle bande peuvent éventuellement avoir des accélérateurs GPU (Nvidia Tesla P100) ou TPU gratuits et peuvent utiliser les services de Google Cloud Platform, mais des quotas s'appliquent, par exemple 30 heures de GPU et 30 heures de TPU par semaine. Fondamentalement, n'utilisez pas de GPU ou de TPU dans un ordinateur portable, sauf si vous devez accélérer la formation en deep learning. L'utilisation des services Google Cloud Platform peut entraîner des frais sur votre compte Google Cloud Platform si vous dépassez les quotas de l'offre gratuite.

Vous pouvez à tout moment ajouter des ensembles de données Kaggle aux blocs-notes Kaggle. Vous pouvez également ajouter des jeux de données du concours, mais uniquement si vous acceptez les règles du concours. Si vous le souhaitez, vous pouvez chaîner des blocs-notes en ajoutant la sortie d'un bloc-notes aux données d'un autre bloc-notes.

Les blocs-notes fonctionnent dans des noyaux, qui sont essentiellement des conteneurs Docker. Vous pouvez enregistrer des versions de vos blocs-notes au fur et à mesure que vous les développez.

Vous pouvez rechercher des blocs-notes avec une requête par mot-clé de site et un filtre sur les blocs-notes, ou en parcourant la page d'accueil de Kaggle. Vous pouvez également utiliser la liste Notebook; comme les jeux de données, l'ordre des blocs-notes dans la liste est par défaut «hotness». La lecture de blocs-notes publics est un bon moyen d'apprendre comment les gens font de la science des données.

Vous pouvez collaborer avec d'autres personnes sur un bloc-notes de plusieurs manières, selon que le bloc-notes est public ou privé. S'il est public, vous pouvez accorder des privilèges d'édition à des utilisateurs spécifiques (tout le monde peut voir). S'il est privé, vous pouvez accorder des privilèges d'affichage ou de modification.

API publique Kaggle

En plus de créer et d'exécuter des blocs-notes interactifs, vous pouvez interagir avec Kaggle à l'aide de la ligne de commande Kaggle à partir de votre ordinateur local, qui appelle l'API publique Kaggle. Vous pouvez installer la CLI Kaggle à l'aide du programme d'installation de Python 3 pipet authentifier votre machine en téléchargeant un jeton API à partir du site Kaggle.

L'interface de ligne de commande et l'API de Kaggle peuvent interagir avec les concours, les ensembles de données et les blocs-notes (noyaux). L'API est open source et est hébergée sur GitHub à l'adresse //github.com/Kaggle/kaggle-api. Le fichier README fournit la documentation complète de l'outil de ligne de commande.

Communauté et éducation Kaggle

Kaggle héberge des forums de discussion communautaires et des micro-cours. Les sujets du forum incluent Kaggle lui-même, la mise en route, les commentaires, les questions-réponses, les ensembles de données et les micro-cours. Les micro-cours couvrent les compétences pertinentes pour les scientifiques des données en quelques heures chacun: Python, apprentissage automatique, visualisation de données, Pandas, ingénierie des fonctionnalités, apprentissage en profondeur, SQL, analyse géospatiale, etc.

Dans l'ensemble, Kaggle est très utile pour apprendre la science des données et pour rivaliser avec d'autres sur les défis de la science des données. Il est également très utile en tant que référentiel pour les ensembles de données publics standard. Cependant, ce n'est pas un remplacement pour les services payants de science des données dans le cloud ou pour faire votre propre analyse.