Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Kaggle Days Paris — la solution gagnante

By Gad BenramFeb 14, 20195 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

1 33rqsyh4ajm5daqqimz eq

Kaggle Days est (presque) officiellement l'événement incontournable pour rencontrer, apprendre et affronter les meilleurs data scientists du monde. Et voici comment nous l'avons remporté.

Paris a accueilli en janvier 2019 la 2e édition de Kaggle Days. Plus de 200 data scientists venus du monde entier se sont réunis pour apprendre, partager leurs connaissances et finalement s'affronter lors d'une compétition Kaggle de 11 heures en présentiel, organisée durant la conférence. Cet article décrit notre solution, qui nous a valu la 3e place.


Prédire les ventes des produits de luxe LVMH

Les participants disposaient des données des sept premiers jours suivant le lancement de produits Louis Vuitton sur www.louisvuitton.com. L'objectif : prévoir les ventes pour chacun des trois mois suivant le lancement. Les données complémentaires comprenaient les descriptions de produits, les statistiques de vente, les réseaux sociaux, la navigation sur le site et des données d'image.

1 jipqvudjqxbgjjy6wzdbqqCapture d'écran de louisvuitton.com

Stratégie

Comme lors de bon nombre de nos précédentes compétitions Kaggle, nous avons appliqué une tactique simple :

  1. Features simples, modèles complexes — construire des features simples et laisser les modèles ML saisir les interactions complexes entre elles.
  2. Miser sur la diversité — entraîner de nombreux modèles, puis assembler ceux qui performent le mieux au leaderboard tout en présentant le moins de chevauchement dans leurs erreurs.
  3. Travail d'équipe — chaque membre a une responsabilité bien définie : le Feature-Extractor, le Modeler et l'Integrator.

1 fw0autgwmmkk7je1sqaomaMembres de l'équipe : Gad Benram, Seffi Cohen et Nurit C Inger

Baseline

Avant même de regarder les données, nous nous sommes hissés sur les épaules de géants en utilisant le script baseline fourni par l'équipe Kaggle Days, qui incluait de nombreuses features. Nous avons exécuté un simple modèle Random Forest de 100 arbres maximum sur l'ensemble des données d'entraînement, juste pour évaluer l'importance de chaque feature. Le résultat a été une véritable surprise : le log des ventes des 7 premiers jours obtenait un score d'importance 20 fois supérieur à celui de toutes les autres features. Cette information nous a permis de maîtriser, dans une certaine mesure, la variance des modèles générés.

1 lkjmofa1wsnlvana0u xaw

Formuler la question métier

En explorant les données, nous avons constaté que leur découpage avait été particulièrement bien pensé. Le jeu d'entraînement comptait environ 1 700 produits uniques, tandis que le jeu de test contenait à peu près le même nombre de produits, mais différents. Cela nous a amenés à formuler le problème ainsi : si un produit donné — disons un bracelet pour femme — a été vendu x fois la première semaine après son lancement, puis m1, m2, m3 fois lors des mois suivants, combien d'unités vendra-t-on pour un article similaire ?

1 fapuoqs v c lqh4yoqvqa

Mettre les tendances de côté — les données étant relatives à la première semaine de lancement et n'incluant pas le mois grégorien, nous avons négligé les tendances saisonnières et prêté moins d'attention aux tendances des réseaux sociaux. Au final, tout se ramenait à la question de la similarité produit. Il convient de noter que Mikel Bober-Irizar est parvenu à estimer la baisse relative des ventes durant la période de test, améliorant ainsi son score via une technique que nous appelons MLE — Maximum Leaderboard Estimation.

Comment modéliser la similarité produit

  1. Catégories — les produits avaient été classés par des experts humains dans différents types, comme la maroquinerie ou les sacs du quotidien. Ces features se sont révélées extrêmement précieuses pour comprendre la similarité entre les ventes de produits différents. Elles reflètent non seulement la façon dont un humain perçoit ces articles de manière passive, mais elles influencent aussi activement les ventes, puisqu'elles déterminent la position de l'article sur le site et la manière dont il est présenté aux clients.
  2. Texte — caractérisation de la feature à partir de son texte, en appliquant TF-IDF et PCA sur les features.
  3. Vecteurs d'image — les features d'image ont été extraites via la Vision API de Google. Cette API s'appuie sur des réseaux de neurones entraînés sur des datasets très génériques comme ImageNet — totalement inadaptés pour distinguer deux sacs à main de luxe au style décontracté. Nous avons donc écarté ces features.
  4. Click-through rate — les données de trafic du site incluaient les vues de pages et les clics sur les articles. Nous en avons extrait le taux de clic moyen, utilisé comme feature.

Modèles

Les données comportant des features catégorielles précieuses, il était essentiel d'utiliser une bibliothèque capable d'exploiter efficacement ce type de features. XGBoost ne dispose pas d'un mécanisme natif pour les features catégorielles, contrairement à LightGBM et Catboost. Catboost prenait trop de temps à traiter ; nous avons donc finalement opté pour LightGBM avec GBDT et Random Forest comme méthodes de boosting. Les réseaux de neurones, eux, n'ont pas réussi à converger en raison de la quantité de données relativement faible.

Alors, pourquoi parle-t-on d'overfitting ?

Si nous avions conseillé LVMH sur la manière d'augmenter ses ventes, nous aurions adopté une approche sensiblement différente. Par exemple, LVMH pourrait réaliser des tests A/B sur les features les plus importantes — comme la catégorisation ou les descriptions textuelles des produits — afin de vérifier si leur enrichissement aurait un impact sur les ventes. Néanmoins, lorsqu'on vise à remporter une compétition Kaggle, notre seul objectif est d'ajuster au mieux nos prédictions au jeu de test.

Machines et environnements

Tout le code tournait sur une Google Cloud Deep Learning VM préemptible, avec une instance n1-highmem-8 (8 vCPU, 52 Go de RAM, 0,1 USD/h). La machine était hébergée dans la région us-central, ce qui lui garantissait une haute disponibilité aux heures de la compétition, puisque nous étions en Europe.

L'expérience

Kaggle est une plateforme formidable pour partager ses connaissances et se mesurer à des compétitions variées et exigeantes ; Kaggle Days y ajoute une dimension essentielle : l'échange en personne. Nous avons passé un moment formidable à rencontrer d'autres data scientists du monde entier et à constater que nous partageons tous un même rêve : overfitter le jeu de test.

1 33rqsyh4ajm5daqqimz eqL'équipe au travail pendant la compétition


Code du notebook ici sur Github | Profil Kaggle : Gad Benram