Ingénierie des caractéristiques

Modélisation avec tidymodels en R

David Svancer

Data Scientist

Ingénierie des caractéristiques avec le paquet recipes

Flux d'ingénierie des caractéristiques avec recipes

Modélisation 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 réponse ou prédicteur

Déterminer les types de données

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

 

Réalisé avec la fonction recipe()

 

Spécifier une recette avec la fonction recipe

Modélisation avec tidymodels en R

Étapes de prétraitement des données

Ajouter les étapes de prétraitement nécessaires

  • Imputation des valeurs manquantes
  • Transformations des données
    • Centrer et mettre à l'échelle les variables numériques
  • Création de nouvelles variables
    • Calculer des rapports entre variables
  • Et bien plus…

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élisation 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 centrage et mise à l'échelle
    • Les formules pour créer de nouvelles colonnes sont conservé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 caractéristiques avec l'ensemble d'entraînement

Modélisation 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élisation avec tidymodels en R

Pipeline simple d'ingénierie des caractéristiques

Transformer en logarithme total_time dans les données de pointage des prospects

  • Transformation courante pour de grandes valeurs
  • Comprime l'intervalle 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élisation 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 des variables

 

Passer l'objet recipe à step_log() pour ajouter une 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élisation avec tidymodels en R

Explorer rôles et types des variables

Passer un objet recipe à la fonction summary()

  • Crée un tibble avec l'information 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 selon 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élisation avec tidymodels en R

Entraîner un objet recipe

La fonction prep()

  • Prend un objet recipe comme 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élisation avec tidymodels en R

Transformer les données d'entraînement

La fonction bake()

  • Premier argument : 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élisation 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 au paramètre new_data
  • La recipe entraînée appliquera toutes les étapes aux nouvelles sources
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élisation avec tidymodels en R

À vos recettes !

Modélisation avec tidymodels en R

Preparing Video For Download...