Salut
Beaucoup de lecteurs savent déjà que nous essayons de mener constamment divers championnats informatiques sur une variété de sujets. L'année dernière seulement, plus de 10 compétitions majeures différentes ont eu lieu (
Coupe AI russe ,
ML Boot Camp ,
Technocub et autres). Au moins 25 000 personnes y ont participé, et depuis 2011 - plus de 150 000.
Si vous venez de découvrir cela maintenant, alors félicitations: à partir de ce moment, vous avez fait partie d'une grande communauté de personnes participant à nos compétitions et partageant leurs expériences. Déjà maintenant, vous pouvez rejoindre les groupes communautaires Telegram sur l'
intelligence artificielle ,
la programmation sportive ,
les projets et l'administration Ă forte charge ,
l'apprentissage automatique et l'analyse des données . Cela vous aidera à vous impliquer rapidement dans une soirée sérieuse!

Alors, passons aux choses sérieuses. Aujourd'hui 7 février, nous sommes heureux d'ouvrir la nouvelle saison des championnats 2019. Et nous commencerons par le huitième concours d'apprentissage automatique et d'analyse de données organisé sur la plate-forme spécialisée
ML Boot Camp (notre analogue Kaggle) -
SNA Hackathon ou ML Boot Camp 8 (comme vous préférez).
Les organisateurs de ce championnat sont Mail.ru Group et Odnoklassniki. Nous recommandons après cet article de lire un
bref historique de la bande intelligente , dans lequel
Dmitry Bugaychenko parle des algorithmes de classement de la bande Ă Odnoklassniki, il y a beaucoup d'informations utiles.
Et maintenant, nous allons dire la mécanique du championnat, son calendrier, ses tâches et les données proposées.
Championnat de mécanique
Tout est simple. Après l'ouverture du championnat au
ML Boot Camp , vous devez:
- lire les conditions des tâches (elles sont déjà dans cet article);
- choisissez une tâche ou des tâches que vous allez résoudre;
- télécharger des données;
- commencer à construire des modèles et à faire des prédictions;
- téléchargez vos réponses (fichier normal) dans le système de test.
Chaque jour, vous pouvez nous envoyer jusqu'à cinq fois vos fichiers de réponses. Le système ne vérifiera les réponses que pour 50% de l'échantillon (public), les résultats seront donc préliminaires. Les résultats finaux sur le reste de l'échantillon (privé) seront montrés aux participants après la fin du concours.
Si vous n'avez jamais participé à de telles compétitions, il n'y a rien à craindre. Lisez l'
article et vous réussirez :)
Horaire
Le championnat se déroulera en deux étapes:
- en ligne - du 7 février au 15 mars;
- hors ligne - du 30 mars au 1er avril.
Après le 15 mars, les résultats intermédiaires seront résumés et 15 personnes des plus hauts dirigeants pour chacune des tâches recevront des invitations à la deuxième étape, qui se tiendra au bureau de Moscou du groupe Mail.ru. De plus, l'invitation à l'étape finale recevra trois personnes qui seront en tête du classement à la fin du 23 février.
Description de la tâche
Pour la compétition SNA Hackathon, des journaux pour afficher le contenu de groupes ouverts dans les flux de nouvelles des utilisateurs pour février-mars 2018 ont été collectés. L'ensemble de test a caché la dernière semaine et demie de mars. Chaque entrée de journal contient des informations sur ce à quoi et à qui il a été affiché, ainsi que sur la façon dont l'utilisateur a réagi à ce contenu: mettez «Classe», commenté, ignoré ou masqué dans le flux.
L'essence du problème est de classer les candidats pour chaque utilisateur de l'ensemble de test, en élevant autant que possible ceux qui recevront la «classe».
Habituellement, nous avons donné une tâche, mais cette fois, nous avons décidé d'en donner trois à la fois. Vous n'avez pas besoin de les résoudre tous, un seul suffit. Étant donné que le flux utilisateur combine différents types de contenu, lorsqu'il est classé, des compétences dans différents domaines sont requises - vision par ordinateur, travail avec les textes et systèmes de recommandation.
Dans le cadre de la phase en ligne, nous proposons trois ensembles de données, dont chacun ne présente qu'un seul type d'informations: image, texte ou données sur une variété d'attributs collaboratifs.
Ce n'est qu'à la deuxième étape, lorsque des experts dans différents domaines se réuniront, que l'ensemble de données générales sera révélé, vous permettant de trouver des points pour la synergie de différentes méthodes.
Après l'ouverture du championnat sur la plateforme, vous verrez une description des tâches et aurez la possibilité de télécharger les données nécessaires à la participation.
Description des données
Les informations sont présentées au format
Apache Parquet , qui est le principal du framework Spark. Pour travailler avec ce format à partir de Python, nous vous recommandons d'utiliser la bibliothèque
Apache Arrow . Pour faciliter la compréhension, des références ont été publiées sur le référentiel
GitHub . Utilisez-le!
Dans l'ensemble de formation, les données sont présentées par jour, et à l'intérieur de la journée sont divisées en 6 parties par ID utilisateur (le même utilisateur tombe toujours dans la même partie). Cette disposition permet aux participants d'analyser non pas toutes les données à la fois, mais de se limiter à certains jours et / ou sous-groupes d'utilisateurs.
Les ensembles de formation sont divisés en trois groupes disjoints: avec des textes, avec des images et avec des fonctionnalités collaboratives. Dans chaque groupe, les données contiennent les champs suivants:
instanceId_userId
- identifiant de l'utilisateur (anonymisé);instanceId_objectType
- type d'objet;instanceId_objectId
- identifiant d'objet (anonymisé);feedback
- un tableau avec les types de réactions de l'utilisateur (la présence d'un jeton Aimé dans le tableau indique que l'objet a reçu une "classe" de l'utilisateur);audit_clientType
- le type de plateforme à laquelle l'utilisateur s'est connecté;audit_timestamp
- heure de création de la bande;metadata_ownerId
- auteur de l'objet affiché (anonymisé);metadata_createdAt
- date de création de l'objet affiché.
Des objets associés au format Apache Parquet sont également fournis pour les objets du jeu de textes d'apprentissage:
objectId
- identifiant d'objet;lang
- langue du texte (basé sur le détecteur de langue Odnoklassniki);text
- text
brut associé à l'objet;preprocessed
- un ensemble de jetons obtenus après filtrage de la ponctuation et du stemming.
Les données de classement par images contiennent en outre un
ImageId
tableau
ImageId
avec des hachages MD5 associés aux objets d'image. Les corps d'image sont disposés dans des fichiers tar séparés, en fonction de la première lettre du hachage.
Dans le bloc aux caractéristiques collaboratives, diverses informations complémentaires sont présentées:
audit_*
- informations détaillées sur le contexte de construction de la bande;metadata_*
- informations étendues sur l'objet lui-même;userOwnerCounters_*
- informations sur les interactions précédentes entre l'utilisateur et l'auteur du contenu;ownerUserCounters_*
- informations sur les interactions précédentes entre l'auteur du contenu et l'utilisateur;membership_*
- informations sur l'appartenance de l'utilisateur au groupe dans lequel le contenu est publié;user_*
- informations détaillées sur l'utilisateur;auditweights_*
- un grand nombre d'attributs d'exécution récupérés par le système actuel.
Les structures des ensembles de tests sont équivalentes à la structure des ensembles de formation, mais ne sont pas présentées de jour et ne contiennent pas de champs de
feedback
.
Score
Les participants au championnat doivent trier la bande de sorte que les objets avec une forte probabilité de "classe" soient en haut. Le tri est effectué individuellement pour chaque utilisateur, après quoi le texte de la soumission du formulaire suivant est formé (le format correspond à l'exportation du bloc de données Pandas avec des colonnes de type
int
et
int[]
):
User_id_1,"[object_id_1_1, object_id_1_2]" User_id_2,"[object_id_2_1, object_id_2_2, object_id_2_3]"
La soumission doit contenir une ligne pour chaque utilisateur de la suite de tests, et les lignes sont triées par ID croissant. Les objets de chaque utilisateur doivent être triés par ordre décroissant de pertinence.
Lors de l'évaluation de la soumission pour chaque utilisateur, son ROC-AUC personnel sera calculé, après quoi la moyenne pour tous les utilisateurs sera calculée et multipliée par 100.
Cadeaux
La deuxième étape se déroulera en équipe et les gagnants recevront de précieux cadeaux, des packs d'autocollants et d'autres prix:
- 300 000 roubles à l'équipe qui a remporté la première place;
- 200 000 roubles à l'équipe de deuxième place;
- 100 000 roubles à l'équipe qui a pris la troisième place;
- 100 000 roubles à l'équipe qui a proposé la solution avec les meilleures perspectives de mise en œuvre, selon le jury.
De plus, les gagnants de l'étape en ligne (les 33 premiers des leaders pour chaque tâche) recevront des t-shirts sympas.
Bonus! Le meilleur et le plus actif des participants de la phase en ligne aura le choix entre la PlayStation / XBox. Les critères sont simples - il y a beaucoup de graphiques dans le cas de chat, des arnaques intéressantes haut / bas et autre chose. Le gagnant sera élu au suffrage universel.
Inscription et communauté
Il n'est pas nécessaire de s'inscrire spécialement pour participer au concours. Il suffit de s'inscrire une fois sur la
plateforme et toutes les compétitions et bacs à sable des championnats passés seront immédiatement à votre disposition.
Ne perdez pas votre temps. La communauté attend de nouveaux héros.
Bienvenue !