.. _kagglereview2016rst: =================================== Revue de compétitions Kaggle (2016) =================================== .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`PDF `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/2016/ensae/kaggle_review_2016.ipynb|*` Les gagnants des compétitions `Kaggle `__ décrivent parfois leurs solutions sur le blog de Kaggle `No Free Hunch `__. Il y a toujours de bonnes idées à glaner. .. code:: ipython3 %matplotlib inline from jyquickhelper import add_notebook_menu add_notebook_menu() .. contents:: :local: Le `blog Kaggle `__ publie régulièrement des interviews des gagnants des compétitions. C’est l’occasion de découvrir la meilleur solution et les outils qui ont permis de la mettre en place. Certains sujets sont des compétitions académiques et les gagnants mettent parfois leur code à disposition sous Github. The Allen AI Science Challenge ------------------------------ `kaggle `__ - **Objectif :** prédire la bonne réponse à un QCM - **données :** des QCM et leurs réponses `The Allen AI Science Challenge, Winner’s Interview: 3rd place, Alejandro Mosquera `__ (lire aussi `résumé des trois solutions `__ Type de features ~~~~~~~~~~~~~~~~ - ES_raw_lemma: IR scores by using ES and raw/lemmatized KB. - ES_lemma_regex: Regex scoring (number of characters matched) after IR results. - W2V_COSQA: Cosine similarity between question and answer embeddings. - CAT_A1: Is multiphrase question + short response? - CAT_A2: Is fill the \______\_ + no direct question + long response? - CAT_A3: Is multiphrase question + long response? - ANS_all_above: Is “all of the above” answer? - ANS_none_above: Is “none of the above” answer? - ANS_both: Is “both X and Y” answer? - ES_raw_lemmaLMJM: IR scores by using ES and raw/lemmatized KB with LMJM scoring. - ES_lemma_regexLMJM: Regex scoring (number of characters matched) after IR results using LMJM. ES = Elastic search Sur GitHub : `amsqr/Allen_AI_Kaggle `__ Idées à récupérer ~~~~~~~~~~~~~~~~~ - ajout de données provenant de sources exéterieures aux problèmes (voir la liste des `ressources ajoutées par le vainqueur `__). - calcul de statistiques sur des corpus plus grand que les données du problème - Code disponible sur GitHub : des exemples à récupérer - Utilisation de `BM25 `__, version améliorée du `TF-IDF `__ Predicting Red Hat Business Value --------------------------------- `kaggle `__ - **Objectif :** déterminer le potentiel d’un client, ce potentiel est déterminé par la réalisation d’un événement dans une fenêtre de temps - **Données :** les données contiennent des informations sur les utilisateurs et sur leurs actions `Red Hat Business Value Competition, 1st Place Winner’s Interview: Darius Barušauskas `__ Points essentiels ~~~~~~~~~~~~~~~~~ - **leakage** (1) : il y avait un *data leakage* pour une partie de la base, le gagnant a choisi d’utiliser deux stratégies différentes sur ces deux parties - **leakage** (2) : le gagnant a utilisé cette fuite pour construire un modèle qui puisse servir pour les données qui ne bénéficiaient pas cette fuite - **features agrégées :** il fallait construire des statistiques agrégées par la compagnie du client de Red Hat (plusieurs clients pour une même compagnie) TalkingData Mobile User Demographics ------------------------------------ `kaggle `__ - **Objectif :** décrire une personne (sexe, âge) en fonction de l’utilisation de son téléphone - **Données :** décription des téléphones et des événements se rapportant à plusieurs personnes `TalkingData Mobile User Demographics Competition, Winners’ Interview: 3rd Place, Team utc(+1,-3) \| Danijel & Matias `__ Idées intéressantes ~~~~~~~~~~~~~~~~~~~ - TF-IDF : appliqué dans un cas non typique (marques, modèles de téléphones) - utilisation de `keras `__ - utilisation de `matrice sparse `__ - xgboost et les réseaux de neurones ont obtenu leurs meilleurs performances avec des features différentes - modélisation du problème : prédire d’abord le genre puis utiliser ce résultat comme feature pour prédire la classe d’âge :math:`P(A_i,F)=P(A_i|F)P(F)` Grupo Bimbo Inventory Demand ---------------------------- `kaggle `__ - **Objectif :** prédire la demande (limiter les stocks, limiter la surproduction) - **Données :** ventes passées `Grupo Bimbo Inventory Demand, Winners’ Interview: Clustifier & Alex & Andrey `__ faits notables ~~~~~~~~~~~~~~ - Truncated SVD on TF-IDF matrix of client and product names - Soin particulier apportés aux features : - utilisation de model `FTRL `__, FFM : `script `__ : le modèle FTRL vient du domaine des publicités sur internet pour lesquels il faut prédire la probabilité d’un click. FTRL est un modèle de `online training `__ qui permet de mettre à jour le modèle au fur et à mesure que les données sont découvertes. Cela suppose que les données sont séquentielles dans le temps. - le gagnant a suivi le cours de `Alexander D’yakonov `__ qui a écrit `Two Recommendation Algorithms Based on Deformed Linear Combinations `__ Facebook V: Predicting Check Ins -------------------------------- `kaggle `__ - **Objectif :** on connaît (x, y, location accuracy, timestamp) et il faut prédire un business id Trois solutions : - `Facebook V: Predicting Check Ins, Winner’s Interview: 1st Place, Tom Van de Wiele `__ - `Facebook V: Predicting Check Ins, Winner’s Interview: 2nd Place, Markus Kliegl `__ - `Facebook V: Predicting Check Ins, Winner’s Interview: 3rd Place, Ryuji Sakata `__ Obstacles et solutions ~~~~~~~~~~~~~~~~~~~~~~ - multi-class : impossible d’utiliser un modèle multi-class, trop de choix, la performance est mauvaise - approche 1 : transformer le problème en un problème de ranking (approche moteur de recherche), des heuristiques produisent 20 candidats qu’un modèle viendra *“scorer”* - approche 2 : :math:`P(business id | x, y, accuracy, time) \propto P(x, y, accuracy, time |place) P(place)` Avito Duplicate Ads Detection ----------------------------- `kaggle `__ - **Objectif :** trouver des publicités en double dans une base de publicités - **Données :** images et textes des publicités - `Avito Duplicate Ads Detection, Winners’ Interview: 1st Place Team, Devil Team \| Stanislav Semenov & Dmitrii Tsybulevskii `__ - `Avito Duplicate Ads Detection, Winners’ Interview: 2nd Place, Team TheQuants \| Mikel, Peter, Marios, & Sonny `__ Points intéressants ~~~~~~~~~~~~~~~~~~~ - features calculées sur une grande variétés de supports (image, texte, titre, description, marques, prix, localisation) –> `grande liste de features `__, `weights of evidence `__ - problème de préparation des données : les labels étaient données sous forme de paires pub i = pub j –> comment séparés en base d’apprentissage et de test pour éviter les problèmes d’overfitting - le gagnant a utilisé des modèles de deep learning préentraînés `Full ImageNet Network `__, il n’a pas utilisé sa sortie mais le résultat d’une couche intermédiaire Draper Satellite Image Chronology --------------------------------- `kaggle `__ - **Objectifs :** ordonner dans le temps des images du même lieu - **Données :** des images ordonnées - `Draper Satellite Image Chronology: Pure ML Solution \| Vicens Gaitan `__ - `Draper Satellite Image Chronology: Pure ML Solution \| Damien Soukhavong `__ Points intéressants ~~~~~~~~~~~~~~~~~~~ - le `notebook `__ par l’auteur de la première solution explique comment faire du matching d’une image et c’est très clair - `Fast Explicit Diffusion for Accelerated Features in Nonlinear Scale Spaces `__, `AKAZE `__ - `RANSAC `__ Yelp Restaurant Photo Classification ------------------------------------ `kaggle `__ - **Objectifs :** classer des photos de restaurants, particularité, une photo peut avoir plusieurs labels - **Données :** des images en entrées, des labels à prédire en sortie, 0: good_for_lunch 1: good_for_dinner 2: takes_reservations 3: outdoor_seating 4: restaurant_is_expensive 5: has_alcohol 6: has_table_service 7: ambience_is_classy 8: good_for_kids `Yelp Restaurant Photo Classification, Winner’s Interview: 1st Place, Dmitrii Tsybulevskii `__ Points intéressants ~~~~~~~~~~~~~~~~~~~ - plusieurs idées pour traiter le cas multi-label - `Fisher Vectors `__ - `TruncatedSVD `__ - `Multiple Instance Classification: review, taxonomy and comparative study `__ - `Classifier Chains for Multi-label Classification `__ - `Random k-Labelsets for Multi-Label Classification `__ : méthode moins performante pour ce problème