Pipeline de Machine Learning via Tidymodels en R
Objectifs pédagogiques
- Clarifier les concepts de base de l’apprentissage automatique supervisé, tels que les types de modèles, les algorithmes courants et les métriques courantes
- Connaître la librairie « tidymodels »
- Implémenter un workflow complet de machine learning
- Être capable d’appliquer et de paramétrer ces méthodes pour résoudre des problèmes professionnels
Programme détaillé
Machine Learning : méthodologie générale
Implémentation du workflow d’apprentissage supervisé via Tidymodels
- Séparation de Training Data et Test Data : rsample
- Data Pre-Processing et Feature Engineering: recipes
- Définition et ajustement des modèles (Régressions, Gradient Boosting, Random Forest, Réseaux de neurones, etc.) : parsnip
- Évaluation de la performance des modèles : yardstick
- Tuning paramètres du modèle : tune and dials
- Cross-Validation
- Pipeline de traitement : workflows et workflowset
- Sélectionner le meilleur modèle pour faire les prédictions finales
Public visé
Data analysts, chargés d’études statistiques, data scientists
Prérequis
- Connaissances de base en statistiques descriptives
- Connaissances de base sur les principaux algorithmes de machine Learning
- Connaissances intermédiaires de programmation R
Approche pédagogique
Tidymodels : un même pipeline pour tous les modèles de machine learning en R
En R, chaque méthode de machine learning a été écrite par sa propre équipe, avec sa propre syntaxe : glmnet attend une matrice et un paramètre lambda, randomForest une formule et ntree, ranger num.trees… Comparer cinq modèles revenait à apprendre cinq interfaces. Tidymodels est la seconde réponse de Max Kuhn à ce problème.
De caret à tidymodels
La première, caret (Classification And REgression Training), est née chez Pfizer, où Max Kuhn était statisticien ; il la présente en 2008 dans le Journal of Statistical Software. Sa fonction train() offre une interface unique à des modèles venus de nombreux packages, plus de deux cents aujourd’hui. Recruté ensuite par RStudio, aujourd’hui Posit, pour en concevoir le successeur, il publie le méta-package tidymodels sur le CRAN en juillet 2018. Chaque étape y a son package : rsample pour le découpage des données, recipes pour la préparation, parsnip pour la définition des modèles, tune et dials pour le réglage des hyperparamètres, yardstick pour les métriques, workflows pour assembler le tout. caret reste disponible, mais les nouveaux développements portent sur tidymodels.
Le pipeline complet
library(tidymodels)
set.seed(123)
decoupe <- initial_split(credit, prop = 0.8, strata = defaut)
train <- training(decoupe)
recette <- recipe(defaut ~ ., data = train) |>
step_impute_median(all_numeric_predictors()) |>
step_dummy(all_nominal_predictors()) |>
step_normalize(all_numeric_predictors())
modele <- logistic_reg(penalty = tune(), mixture = 1) |> set_engine("glmnet")
flux <- workflow() |> add_recipe(recette) |> add_model(modele)
plis <- vfold_cv(train, v = 5, strata = defaut)
res <- tune_grid(flux, resamples = plis, grid = 20, metrics = metric_set(roc_auc))
final <- finalize_workflow(flux, select_best(res, metric = "roc_auc")) |> last_fit(decoupe)
collect_metrics(final) # performance mesurée une seule fois, sur l'échantillon test
Remplacer le lasso par une forêt aléatoire ne demande que de changer la ligne modele, par exemple rand_forest(trees = 500) |> set_engine("ranger") |> set_mode("classification") : la recette, la validation croisée et les métriques restent identiques.
Le piège que le workflow évite : la fuite de données
Imputer les valeurs manquantes ou standardiser les variables sur l’ensemble des données avant la validation croisée paraît anodin. C’est pourtant une fuite d’information : les moyennes et les médianes utilisées pour préparer chaque pli d’apprentissage ont été calculées en partie sur le pli de validation, et la performance estimée est trop optimiste. En associant la recette et le modèle dans un même workflow, tidymodels réestime la préparation sur les seules données d’apprentissage de chaque pli, puis l’applique telle quelle aux données de validation.
La référence est Tidy Modeling with R (O’Reilly, 2022), de Max Kuhn et Julia Silge, également consultable en ligne. Les méthodes elles-mêmes (régression pénalisée, arbres, forêts aléatoires) sont l’objet des Fondamentaux du machine learning avec R.