a la découverte de kaggle
TRANSCRIPT
Bordeaux Machine
Learning Meetup
A la découverte de
@arm_gilles
Kaggle en quelques chiffres
• Crée en Avril 2010
• + de 230 compétitions
• 450 k Data Scientist
• 3 Millions de reward
@arm_gilles
Age Revenu Défaut
53 45 000 True
35 38 000 False
22 17 000 True
76 25 000 False
Age Revenu Défaut
18 17 500
42 27 000
22 39 200
59 28 000
Training Data Testing Data
@arm_gilles
Features Label
Train Data
Test Data
Submission Public Private
Structure d’une compétition
@arm_gilles
Type de compétition
Reward $$$, gloire
Recrutement Job (airbnb, Yelp)
Starting Getting started / education
• Plus ou moins 2 mois en général
• Données externes interdites (sauf contre
indications et publier sur le forum)
@arm_gilles
• Compétition d’analyse d’image qui avait pour but de
développer de nouvelles techniques et algorithmes
pour de mesurer les distortions des galaxies par la
matière noire
@arm_gilles
http://arxiv.org/pdf/1204.4096.pdf @arm_gilles
https://www.whitehouse.gov/blog/2011/06/27/competition-shines-light-dark-matter@arm_gilles
http://arxiv.org/pdf/1204.4096.pdf @arm_gilles
Le compétitif
I’m better than
you
Nop, my
algorithme
crush you
Check my new
neural network
!
STFU look at
my amazing
cluster !
Random
Forest tuned
for the win
Lol my
ensemble is
killing you bro !
@arm_gilles
Best practices
• Data Exploration & Feature Engineering
• Machine learning
• Cross Validation
• Tunning / Ensemble
@arm_gilles
Features Engineering &
exploration des données
• Connaître ses données pour comprendre le
problème.
@arm_gilles
@arm_gilles
• Utilisation de graphiques
Connaître ses données
Features Engineering &
exploration des données
• Connaître ses données pour connaitre le
problème.
• Transformer ces données
@arm_gilles
Transformer ces données
• Numérique : log, normalisation, range
@arm_gilles
• Catégorie : one hot encoding, Stemming,
stopword, bag-of-words, TF-IDF, word2vec…
Features Engineering &
exploration des données
• Connaître ses données pour connaitre le
problème.
• Transformer ces données
@arm_gilles
• Créer de la donnée (la golden feature) !
But : Prédire le CA journalier de plus 1k magasins
sur 6 semaines
Metric : Root Mean Square Percentage Error (RMSPE)
Data : • 2 ans et demi d’historique (800 k)
• Promotions
• Vacances
• Nombre de clients par jour
• Type de magasin
• Distance de compétition
• Données extérieures autorisées
• Clustering de magasins
• Features descriptives :
• Moyenne / médiane / Std / percentiles…
• Group by promo(0/1), vacance(0/1)
• Temporalité : trimestre / mois /
semaines / x derniers jours
@arm_gilles
• Golden feature du #2
@arm_gilles
99.99 % des personnes sont
passé à coté de cette feature
Supprimer les lignes ou les magasins sont fermés ainsi que
lorsque ceux-ci sont ouvert avec 0 Sales
@arm_gilles
Mettre un compteur du nombre de jour ouvert avec Sales à 0
permet de détecter un nombre de vente anormal.
Perspective d’un magasin (99.99% de Kaggle) Perspective d’un magasin par Nima #2
But : Prédire si un client va prendre ou non
une assurance habitation (probabilité)
Metric : Area Under the Curve (AUC)
Data : • Données par utilisateur
anonymisées
• shape : 260 753 * 299
• Pas d’explication métier
• Beaucoup valeurs à absentes
• Compter le nombre de valeurs null
(par ligne)
• Enlever les features avec peu de
variance
• Connaitre les features les plus
importantes (Xgboost / Random Forest)
• Combiner des features entres-elles !
@arm_gilles
Machine Learning
Algorithmes Tools Commentaires
Gradient Boosting
MachineXgboost Hype
Random Forest Scikit Learn L’ancien Hype
Neural NetworkTensorflow, Lasage,
KerasAnalyse d’image ++
Regression Scikit Learn
Support Vector Machine Scikit Learn
@arm_gilles
Cross Validation
• Comment connaitre la performance de son
modèle ?
Tra
in D
ata
Phase
d'apprentissageTest
Précision de
votre algorithme
@arm_gilles
Cross Validation
• Comment connaitre la performance de son
modèle ?
Underfitting
GOOD
Overfitting
@arm_gilles
Cross Validation
• Comment connaitre la performance de son
modèle ?
Tra
in D
ata
Phase
d'apprentissage
Test
QPrécision de
votre algorithme
@arm_gilles
Cross ValidationT
rain
Da
ta
Fold 1 Fold 2 Fold 3 Fold 4 Fold 5
Test
Train
Train
Test
Train
Train
Test
Train
Train
Test
Train
Train
Test
Test
Test
Test
Test
Test
Cro
ss V
alid
atio
n p
réd
ictio
n
@arm_gilles
Tunning / Ensemble
• Un algorithme possède plusieurs
paramètres qui vont jouer sur le résultat
Comment déterminé le meilleur paramétrage ?
• GridSearchCV : va parcourir une liste de paramètres donnée
par l’utilisateur et garder en mémoire le résultat
• RandomizedSearchCV : va parcourir une liste de paramètre de
façon random X fois.
• De façon plus intelligente (BayesianOptimization)
@arm_gilles
Tunning / Ensemble
• Pour arriver au top, il faut aller plus loin…
Quand les algorithmes utilisent la démocratie !
Target : 1111111111
Model A 1111111100 80% accuracy
Model B 0111011101 70% accuracy
Model C 1000101111 60% accuracy
Vote 1111111101 90% accuracy
@arm_gilles
Tunning / EnsembleT
es
t D
ata
Model A
Pred A1
Pred A2
Pred A3
Pred A4
…
Pred A n-1
Pred A n
Model B
Pred B1
Pred B2
Pred B3
Pred B4
…
Pred B n-1
Pred B n
Model C
Pred C1
Pred C2
Pred C3
Pred C4
…
Pred C n-1
Pred C n
Model X
Pred X1
Pred X2
Pred X3
Pred X4
…
Pred X n-1
Pred X n
Super Model
Se servir des
prédictions des
models comme
features pour
nourrir un super
model
http://blog.kaggle.com/2015/12/03/dato-winners-interview-1st-place-mad-professors/@arm_gilles
Liens utiles
• Forums Kaggle (une vrai mine d’or)
• Post blog Kaggle : http://blog.kaggle.com/
• Tuto Scikit Learn / Pandas (python) : http://blog.kaggle.com/tag/scikit-learn-tutorial-series/
• Python Machine Learning par Sebastian Raschka
• Post blog MLWave : http://mlwave.com/
• What has Kaggle learned from 2 M model : https://www.youtube.com/watch?v=8KzjARKIgTo&ab_channel=CarlMullins
• Winning Data Science Competitions: Jeong-Yoon Lee : https://www.youtube.com/watch?v=ClAZQI_B4t8&ab_channel=DataScience.LA
@arm_gilles
Question ?