Machine learning : bagging, gradient boosting, SVM avec R
Objectifs pédagogiques
- Connaître et savoir mettre en œuvre les méthodes d’agrégation en régression et classification supervisée : bagging (random forest) et gradient boosting
- Connaître et savoir mettre en œuvre la méthode SVM en classification supervisée
- Savoir gérer empiriquement le risque de sur-apprentissage
Programme détaillé
Rappels sur les bases du machine learning 1h
Méthodes d’agrégation – bagging 3h
- Rappels sur les arbres de régression et de décision (CART)
- Bagging
- Random forest
- Importance des variables
- Applications sur cas pratiques
Méthodes d’agrégation – gradient boosting 3h
- Algorithme AdaBoost
- Principe du gradient boosting
- Quelques fonctions de coût classiques
- Applications sur cas pratiques
SVM 3h
- Cas linéairement séparable
- Ajout de variables ressort (slack variables)
- Astuce du noyau
- Applications sur cas pratiques
Introduction aux réseaux de neurones 2h
- Neurone formel
- Perceptron multicouche (MLP)
- Fonctions d’activation
Public visé
Data analysts, data scientists
Prérequis
- Connaissances de base en machine learning (formation Les fondamentaux du Machine learning avec R).
- Connaissances intermédiaires du logiciel R (formation R intermédiaire).
Approche pédagogique
Calculés à partir de 85 avis recueillis depuis 28/06/2016, lors de 10 sessions de cette formation.
Bagging, boosting, SVM : la décennie qui a fondé l'apprentissage statistique
Les trois familles de méthodes de cette formation sont nées en moins de dix ans, entre 1992 et 2001, dans deux mondes qui se parlaient peu : l’apprentissage automatique des informaticiens, notamment aux laboratoires Bell d’AT&T, et la statistique de Berkeley et de Stanford. Les packages R qui les mettent en œuvre portent encore la marque de ces origines.
SVM : la marge maximale (1992-1995)
En 1992, Bernhard Boser, Isabelle Guyon et Vladimir Vapnik, aux laboratoires Bell, présentent un classifieur qui cherche la frontière la plus éloignée possible des deux classes, la marge maximale, et le rendent non linéaire grâce à l’astuce du noyau. En 1995, Corinna Cortes et Vladimir Vapnik l’étendent aux classes qui ne sont pas séparables, en tolérant des erreurs mesurées par des variables ressort : c’est la forme utilisée aujourd’hui.
Sous R, le package e1071, issu de l’université technique de Vienne, embarque la bibliothèque libsvm. Le réglage des deux paramètres d’un noyau gaussien se fait par validation croisée :
library(e1071)
reglage <- tune.svm(classe ~ ., data = train, kernel = "radial",
gamma = 10^(-3:0), cost = 10^(0:2))
reglage$best.parameters
predict(reglage$best.model, newdata = test)
svm() standardise les variables par défaut (scale = TRUE), ce qui n’est pas le cas en Python avec scikit-learn.
Bagging et AdaBoost (1996-1997)
En 1996, Leo Breiman publie le bagging : entraîner un même modèle sur de nombreux échantillons bootstrap et moyenner leurs prédictions. Le gain est d’autant plus grand que le modèle de base est instable, ce qui est le cas des arbres. Au même moment, Yoav Freund et Robert Schapire publient AdaBoost, qui entraîne des modèles successifs en donnant plus de poids aux observations mal classées par les précédents. Leur article de 1997 leur vaut le prix Gödel en 2003. Le package adabag met en œuvre AdaBoost.M1, sa variante multiclasse SAMME et le bagging, avec des arbres comme modèles de base.
2000-2001 : les statisticiens relisent le boosting
En 2000, Jerome Friedman, Trevor Hastie et Robert Tibshirani montrent qu’AdaBoost revient à ajuster pas à pas une régression logistique additive. Friedman en tire en 2001 le gradient boosting : chaque nouvel arbre corrige les erreurs des précédents en suivant le gradient d’une fonction de coût, qui peut être choisie selon le problème. Le package gbm de Greg Ridgeway implémente cette méthode avec de nombreuses fonctions de coût (moindres carrés, écart absolu, quantile, logistique, Poisson, Cox). La même année 2001, Breiman publie les forêts aléatoires.
La comparaison de ces méthodes en pratique, et la question de leur supériorité sur le deep learning pour les données tabulaires, sont abordées dans le bloc de la formation Machine learning : bagging, gradient boosting, SVM avec Python.