Réduire les caractéristiques du modèle

Ingénierie des caractéristiques en R

Jorge Zazueta

Research Professor and Head of the Modeling Group at the School of Economics, UASLP

Pourquoi réduire le nombre de caractéristiques

Supprimer les variables non pertinentes ou peu informatives peut offrir des avantages, dont

  • Réduire la variance du modèle sans augmenter sensiblement le biais
  • Améliorer la performance hors échantillon
  • Réduire le temps de calcul
  • Diminuer la complexité du modèle
  • Améliorer l'interprétabilité
Ingénierie des caractéristiques en R

Filtrer les données par importance des variables

Ajuster un modèle avec toutes les caractéristiques

lr_recipe_full <-
  recipe(Loan_Status ~., data = train) %>%
  update_role(Loan_ID, new_role = "ID")

lr_workflow_full <- 
  workflow() %>%
  add_model(lr_model) %>%
  add_recipe(lr_recipe_full)

lr_fit_full <- 
  lr_workflow_full %>%
  fit(data = train)

Tracer l'importance des variables avec vip

lr_fit_full %>%
  extract_fit_parsnip() %>%
  vip(aesthetics = list(fill = "steelblue"))

Importance des variables Graphique en colonnes de l'importance des variables.

Ingénierie des caractéristiques en R

Construire un modèle réduit avec la syntaxe de formule

On peut ajouter des caractéristiques directement avec la syntaxe de formule R de base.

# Create recipe
recipe_formula <- 
  recipe(Loan_Status ~ Credit_History + Property_Area + 
           LoanAmount, data = train)

# Bundle with model
workflow_formula <- # Bundle with model
  workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_formula)
Ingénierie des caractéristiques en R

Construire un modèle réduit avec un vecteur de caractéristiques

On peut utiliser un vecteur de caractéristiques pour sélectionner les variables avant l'entraînement.

# Feature vector
features <- c("Credit_History", "Property_Area", "LoanAmount", "Loan_Status") 

# Training and testing data
train_features <- train %>% select(all_of(features))
test_features <- test %>% select(all_of(features))

# Create recipe and bundle with model
recipe_features <- recipe(Loan_Status ~., data = train_features)
workflow_features <- workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_features) 
Ingénierie des caractéristiques en R

Créer les objets augmentés

Objets « augmentés » pour les deux approches

lr_aug_formula <-
  workflow_formula %>%
  fit(data = train) %>%
  augment(new_data = test)
lr_aug_features <-
  workflow_features %>%
  fit(data = train_features) %>%
  augment(new_data = test_features)

Les deux méthodes renvoient les mêmes résultats

all_equal(lr_aug_features, 
lr_aug_formula %>%
select(all_of(features),
starts_with(".pred")))
[1] TRUE
Ingénierie des caractéristiques en R

Comparer les modèles complet et réduit

Utiliser toutes les caractéristiques

lr_fit_full <- # Fit workflow
  lr_workflow_full %>%
  fit(data = train)
lr_aug_full <- # Augment
  lr_fit_full %>%
  augment(test)
lr_aug_full %>% # Evaluate
  class_evaluate(truth = Loan_Status, 
                 estimate = .pred_class,
                 .pred_Y)
# A tibble: 2 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.842
2 roc_auc  binary         0.744

Utiliser les 3 principales caractéristiques*

lr_fit_formula <- # Fit workflow
  workflow_formula %>%
  fit(train)
lr_aug_formula <- # Augment
  lr_fit_formula %>%
  augment(new_data = test)
lr_aug_formula %>% # Evaluate
  class_evaluate(truth = Loan_Status, 
                 estimate = .pred_class,
                 .pred_Y)
# A tibble: 2 × 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.842
2 roc_auc  binary         0.733
Ingénierie des caractéristiques en R

Passons à la pratique !

Ingénierie des caractéristiques en R

Preparing Video For Download...