Ingénierie des variables

Modéliser avec tidymodels en R

David Svancer

Data Scientist

Ingénierie des variables avec le package recipes

Flux d'ingénierie des variables avec recipes

Modéliser avec tidymodels en R

Spécifier types et rôles des variables

 

Définir les rôles des colonnes

  • Attribuer à chaque variable le rôle cible ou prédicteur

Déterminer les types de données

  • Données numériques
  • Données catégorielles

 

Effectué avec la fonction recipe()

 

Spécifier une recette avec la fonction recipe

Modéliser avec tidymodels en R

Étapes de prétraitement des données

Ajouter les étapes de prétraitement nécessaires

  • Imputation des données manquantes
  • Transformations des données
    • Centrer et réduire les variables numériques
  • Créer de nouvelles variables
    • Calculer des ratios de variables
  • Et bien d'autres…

Chaque étape s'ajoute avec une fonction step_*() dédiée

 

Ajouter des transformations avec les fonctions step

1 https://recipes.tidymodels.org/reference/index.html
Modéliser avec tidymodels en R

Entraîner les étapes de prétraitement

Les objets recipe sont entraînés sur une source de données, généralement l'ensemble d'entraînement

  • Les transformations sont estimées
    • Moyenne et écart type des colonnes numériques pour centrer et réduire
    • Les formules de création de nouvelles colonnes sont enregistrées pour les appliquer à de nouvelles données

 

Les recettes sont entraînées avec la fonction prep()

 

La fonction prep entraîne les étapes d'ingénierie des variables avec l'ensemble d'entraînement

Modéliser avec tidymodels en R

Appliquer des recettes à de nouvelles données

Appliquer toutes les transformations entraînées

  • Aux ensembles d'entraînement et de test pour la modélisation
  • Aux nouvelles sources de données pour des prédictions futures
    • Les algorithmes de Machine Learning exigent le même format de données qu'à l'entraînement pour prédire de nouvelles valeurs

 

Les recettes s'appliquent avec la fonction bake()

 

La fonction bake applique une recette entraînée à de nouvelles sources de données

Modéliser avec tidymodels en R

Pipeline simple d'ingénierie des variables

Transformation logarithmique de total_time dans les données de lead scoring

  • Transformation courante pour de grandes valeurs
  • Comprime l'étendue des valeurs et réduit la variabilité
leads_training
# A tibble: 996 x 7
   purchased  total_visits  total_time  pages_per_visit  total_clicks  lead_source    us_location
   <fct>          <dbl>       <dbl>           <dbl>          <dbl>         <fct>          <fct>      
 1 yes             7          1148            7              59        direct_traffic     west       
 2 no              5           228            2.5            25        email              southeast  
 3 no              7           481            2.33           21        organic_search     west       
 4 no              4           177            4              37        direct_traffic     west       
 5 no              2          1273            2              26        email              midwest         
# ... with 991 more rows
Modéliser avec tidymodels en R

Construire un objet recipe

La fonction recipe()

  • Formule du modèle
    • Attribue les rôles des variables
  • Argument data
    • Détermine les types de données

 

Passer l'objet recipe à step_log() pour ajouter l'étape de transformation logarithmique

  • Sélectionner la variable à transformer, total_time, et préciser la base du logarithme
leads_log_rec <- recipe(purchased ~ ., 
                       data = leads_training) %>% 

step_log(total_time, base = 10)
leads_log_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:

Log transformation on total_time
Modéliser avec tidymodels en R

Explorer rôles et types des variables

Passer un objet recipe à la fonction summary()

  • Crée un tibble avec des informations sur les variables
  • Colonne type
    • Indique le type de données de la variable
    • « nominal » représente les variables catégorielles
  • Colonne role
    • Indique les rôles des variables pour la modélisation
    • Attribués d'après la formule du modèle en entrée
leads_log_rec %>% 
  summary()
# A tibble: 7 x 4
  variable        type     role       source  
  <chr>           <chr>    <chr>      <chr>   
1 total_visits    numeric  predictor  original
2 total_time      numeric  predictor  original
3 pages_per_visit numeric  predictor  original
4 total_clicks    numeric  predictor  original
5 lead_source     nominal  predictor  original
6 us_location     nominal  predictor  original
7 purchased       nominal  outcome    original
Modéliser avec tidymodels en R

Entraîner un objet recipe

La fonction prep()

  • Prend un objet recipe en premier argument
  • Argument training
    • Spécifie les données pour entraîner les étapes de prétraitement

 

Afficher un objet recipe entraîné

  • Les étapes entraînées sont indiquées par [trained]
leads_log_rec_prep <- leads_log_rec %>% 
  prep(training = leads_training)
leads_log_rec_prep
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Training data contained 996 data points and 
no missing data.

Operations:
Log transformation on total_time [trained]
Modéliser avec tidymodels en R

Transformer les données d'entraînement

La fonction bake()

  • Le premier argument est un objet recipe entraîné
  • Argument new_data
    • Données sur lesquelles appliquer la recipe entraînée
  • Données d'entraînement
    • leads_training a servi à entraîner la recipe
    • Par défaut, les données transformées sont conservées par prep()
    • Passer NULL à new_data pour les extraire
  • Retourne un tibble avec les données transformées
leads_log_rec_prep %>% 
  bake(new_data = NULL)
# A tibble: 996 x 7
  total_visits total_time ... us_location  purchased
    <dbl>       <dbl>     ...   <fct>       <fct>
 1     7        3.06      ...   west         yes
 2     5        2.36      ...   southeast    no
 3     7        2.68      ...   west         no
 4     4        2.25      ...   west         no
 5     2        3.10      ...   midwest      no
# ... with 991 more rows
Modéliser avec tidymodels en R

Transformer de nouvelles données

Transformer des ensembles non utilisés lors de l'entraînement de la recipe

  • Passer l'ensemble à l'argument new_data
  • La recipe entraînée appliquera toutes les étapes aux nouvelles données
leads_log_rec_prep %>% 
  bake(new_data = leads_test)
# A tibble: 332 x 7
 total_visits  total_time ... us_location  purchased
     <dbl>       <dbl>    ...  <fct>       <fct>
 1     8          2       ...  west         no
 2     4          3.13    ...  northeast    yes
 3     3          2.25    ...  west         no
 4     2          1.20    ...  midwest      no
 5     9          3.01    ...  west         yes
# ... with 327 more rows
Modéliser avec tidymodels en R

Passons à la pratique !

Modéliser avec tidymodels en R

Preparing Video For Download...