Prédicteurs numériques

Modélisation avec tidymodels en R

David Svancer

Data Scientist

Variables prédictives corrélées

La corrélation mesure l'intensité d'une relation linéaire entre deux variables numériques

  • Va de -1 à 1
  • Prédicteurs très corrélés près de -1 ou 1

    • Fournissent de l'information redondante
    • Problèmes d'ajustement du modèle (multicolinéarité)

     

ggplot(leads_training,
       aes(x = pages_per_visit, y = total_clicks)) + 
  geom_point()  + 
  labs(title = 'Total Clicks vs Average Page Visits',
       y = 'Total Clicks', x = 'Average Pages per Visit')

Nuage de points des clics totaux selon les pages par visite dans les données d'évaluation des prospects

Modélisation avec tidymodels en R

Repérer des variables prédictives corrélées

Calculer une matrice de corrélation

  • Passer l'ensemble de données à la fonction select_if()
    • Fournir is.numeric comme argument
  • Passer à la fonction cor()
leads_training %>%

select_if(is.numeric) %>%
cor()
              total_visits total_time pages_per_visit total_clicks
total_visits        1.00       0.01            0.43         0.42
total_time          0.01       1.00            0.02         0.01
pages_per_visit     0.43       0.02            1.00         0.96
total_clicks        0.42       0.01            0.96         1.00
Modélisation avec tidymodels en R

Traiter des prédicteurs corrélés

Supprimer la multicolinéarité avec recipes

  • Définir un objet recipe avec recipe()
  • Passer à step_corr()
    • Ajouter toutes les colonnes numériques
      • Noms de colonnes séparés par des virgules
    • Indiquer le seuil de corrélation threshold
      • Valeur absolue
      • Un seuil de 0.9 supprime les corrélations ≥ 0.9 et ≤ -0.9
leads_cor_rec <- recipe(purchased ~ .,
                        data = leads_training) %>%

step_corr(total_visits, total_time, pages_per_visit, total_clicks, threshold = 0.9)
leads_cor_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on total_visits,..., total_clicks
Modélisation avec tidymodels en R

Sélectionner des prédicteurs par type

  • all_outcomes()
    • Sélectionne la variable cible
  • all_numeric()
    • Sélectionne toutes les variables numériques
      • Inclura la cible si elle est numérique

Pour sélectionner des prédicteurs numériques dans des étapes recipe

  • Passer all_numeric() aux fonctions step_*()
  • Si la cible est numérique, passer aussi -all_outcomes()
leads_cor_rec <- recipe(purchased ~ .,
                        data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9)
leads_cor_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on all_numeric()
Modélisation avec tidymodels en R

Entraîner et appliquer la recette

  • Entraîner avec prep()
    • Fournir leads_training pour l'entraînement
  • Appliquer avec bake()
    • pages_per_visit retirée de leads_test
    • pages_per_visit sera retirée de toutes les nouvelles données aussi
leads_cor_rec %>% 

prep(training = leads_training) %>%
bake(new_data = leads_test)
# A tibble: 332 x 6
total_visits total_time total_clicks ... purchased
    <dbl>       <dbl>        <dbl>   ...   <fct>
 1   8          100           24     ...    no
 2   4          1346          22     ...    yes
 3   3          176           27     ...    no
 4   2          16            12     ...    no
 5   9          1022          12     ...    yes
# ... with 327 more rows
Modélisation avec tidymodels en R

Normalisation

Centrer et réduire des variables numériques

  • Soustraire la moyenne
  • Diviser par l'écart-type
  • Transforme les données en unités d'écart-type
    • La variable transformée aura une moyenne de 0 et un écart-type de 1

La variable total_time dans leads_training

  • Passer 1 273 secondes sur le site correspond à 1,19 écart-type au-dessus de la moyenne des client(e)s

 

Exemple de normalisation de la variable total_time dans l'ensemble d'entraînement

Modélisation avec tidymodels en R

Combiner des étapes de prétraitement

Normaliser des prédicteurs numériques avec recipes

  • step_normalize()
    • Noms de colonnes ou sélecteur all_numeric()
    • Moyennes et écarts-types des colonnes d'entraînement appliqués aux nouvelles données

On peut ajouter plusieurs fonctions step_*() à une recipe

  • L'ordre compte
leads_norm_rec <- recipe(purchased ~ .,
                         data = leads_training) %>%

step_corr(all_numeric(), threshold = 0.9) %>% step_normalize(all_numeric())
leads_norm_rec
Data Recipe
Inputs:
      role #variables
   outcome          1
 predictor          6

Operations:
Correlation filter on all_numeric()
Centering and scaling for all_numeric()
Modélisation avec tidymodels en R

Transformer les données de test

pages_per_vist est retirée et les prédicteurs numériques sont normalisés

leads_norm_rec %>% 
  prep(training = leads_training) %>% 
  bake(new_data = leads_test)
# A tibble: 332 x 6
 total_visits  total_time  total_clicks  lead_source   us_location  purchased
      <dbl>      <dbl>        <dbl>        <fct>          <fct>      <fct>    
 1    0.864     -0.984     -0.360        direct_traffic   west        no       
 2   -0.151      1.33      -0.506        direct_traffic   northeast   yes      
 3   -0.405     -0.843     -0.140        organic_search   west        no       
 4   -0.659     -1.14      -1.24         email            midwest     no       
 5    1.12       0.725     -1.24         direct_traffic   west        yes           
# ... with 327 more rows
Modélisation avec tidymodels en R

Passons à la pratique !

Modélisation avec tidymodels en R

Preparing Video For Download...