Les fondamentaux du Machine learning avec R
Objectifs pédagogiques
- Comprendre les principes du machine learning : régression vs classification supervisée, biais-variance, sur-apprentissage, validation croisée…
- Connaître et savoir mettre en œuvre les méthodes de base en régression et classification supervisée : modèle linéaire généralisé (GLM), régression régularisée
- Appréhender les méthodes d’arbres (CART & random forest) et les mettre en pratique.
Programme détaillé
La formation présente les concepts de base en machine learning, ainsi que les méthodes de base en régression et classification supervisée.
Bases du machine learning 3h
- Apprentissage supervisé vs non supervisé
- Régression vs classification supervisée
- Coût (perte) et risque (erreur de généralisation)
- Biais-variance d’un prédicteur
- Sur-apprentissage et palliatifs (apprentissage/test, validation croisée)
Rappel sur le modèle linéaire 3h
- Régression : régression linéaire
- Choix des variables
- Applications sur cas pratiques
Codage et interprétation des variables qualitatives 2h
Régression régularisée 4h
- Ridge
- LASSO
- Elasticnet
- Comparaison des méthodes par validation croisée
- Applications sur cas pratiques
Classification supervisée 3h
- Régression logistique
- Critères d’évaluation : précision, recall…
- Applications sur cas pratiques
- Classification supervisée pénalisé
- Comparaison de méthodes par validation croisée
Agrégation d’arbres 3h
- Arbres de régression et de décision (CART)
- Introduction aux random forests
- Applications sur cas pratiques
Public visé
Data analysts, data scientists
Prérequis
- Connaissances de base en statistiques descriptives (formation Statistiques descriptives avec R).
- Connaissances de base en statistique inférentielle (formation Statistique inférentielle : estimation ponctuelle, intervalle de confiance et test statistique).
- Connaissances intermédiaires du logiciel R (formation R intermédiaire).
Approche pédagogique
Calculés à partir de 23 avis recueillis depuis 25/06/2021, lors de 4 sessions de cette formation.
Ridge, lasso, elastic net : une brève histoire des régressions pénalisées
La régression régularisée est née d’un problème très concret : quand les variables explicatives sont fortement corrélées entre elles, les moindres carrés produisent des coefficients instables, parfois de signe absurde. Trois articles, publiés entre 1970 et 2005, y ont apporté trois réponses complémentaires.
1970 : le ridge accepte un biais pour réduire la variance
Arthur Hoerl et Robert Kennard publient en 1970 dans Technometrics « Ridge regression: Biased estimation for nonorthogonal problems ». L’idée est de pénaliser la somme des carrés des coefficients, ce qui les rétrécit vers zéro. L’estimateur obtenu est biaisé, mais sa variance diminue fortement, et son erreur de prévision peut devenir plus faible que celle des moindres carrés. Renoncer à l’absence de biais pour gagner en stabilité : c’est l’arbitrage biais-variance, au cœur du machine learning.
1996 et 2005 : le lasso, puis l’elastic net
En 1996, Robert Tibshirani propose le lasso : la pénalité porte sur la somme des valeurs absolues des coefficients, et certains deviennent exactement nuls. Estimation et sélection de variables se font alors en une seule étape. Le lasso a cependant un défaut : parmi plusieurs variables très corrélées, il en retient une, de façon presque arbitraire, et écarte les autres. En 2005, Hui Zou et Trevor Hastie proposent l’elastic net, qui combine les deux pénalités et fait entrer ou sortir ensemble les variables corrélées (« effet de groupe »).
En 2010, Jerome Friedman, Trevor Hastie et Robert Tibshirani publient le package glmnet : par descente de coordonnées, il calcule d’un coup les solutions pour toute une grille de valeurs du paramètre de pénalité λ, le « chemin de régularisation ».
En pratique avec glmnet
library(glmnet)
x <- model.matrix(prix ~ ., data = train)[, -1] # variables qualitatives codées en indicatrices
cv <- cv.glmnet(x, train$prix, alpha = 0.5) # alpha = 0 : ridge ; 1 : lasso ; entre les deux : elastic net
plot(cv) # erreur de validation croisée selon log(λ)
coef(cv, s = "lambda.1se")
Trois points d’attention. glmnet n’accepte pas de formule mais une matrice : model.matrix() se charge du codage des variables qualitatives. Il standardise par défaut les variables avant de les pénaliser (standardize = TRUE), puis rend les coefficients dans leur unité d’origine : sans cela, la pénalité dépendrait de l’unité de mesure de chaque variable. Enfin, lambda.min désigne la pénalité qui minimise l’erreur de validation croisée, lambda.1se la plus forte pénalité dont l’erreur reste à moins d’un écart-type de ce minimum : un modèle plus parcimonieux, à performance quasi équivalente. Cette « règle d’un écart-type » remonte à l’ouvrage de Breiman, Friedman, Olshen et Stone sur les arbres CART (1984).
La version logistique de ces pénalités est présentée dans Classification supervisée avec R. Pour enchaîner préparation des données, validation croisée et comparaison de modèles dans un même cadre, voir Pipeline de Machine Learning via Tidymodels en R.