Minska modellens särdrag

Feature Engineering i R

Jorge Zazueta

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

Skäl att minska antalet särdrag

Att eliminera irrelevanta eller informationsfattiga variabler ger flera fördelar, bland annat

  • Minska modellens varians utan att öka bias nämnvärt
  • Förbättra modellens prestanda på ny data
  • Minska beräkningstiden
  • Minska modellkomplexiteten
  • Förbättra tolkbarheten
Feature Engineering i R

Sålla data med variabelviktighet

Anpassa en modell med alla särdrag

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)

Grafritning av variabel-vip

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

Variabelviktighet Stapeldiagram över variabelviktighet.

Feature Engineering i R

Bygg en reducerad modell med formelsyntax

Vi kan lägga till särdrag direkt med Rs grundläggande formelsyntax.

# 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)
Feature Engineering i R

Bygg en reducerad modell med en särdragsvektor

En särdragsvektor kan användas för att välja särdrag innan träning.

# 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) 
Feature Engineering i R

Skapa de augmenterade objekten

Augmenterade objekt för båda metoderna

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)

Båda metoderna ger samma resultat

all_equal(lr_aug_features, 
lr_aug_formula %>%
select(all_of(features),
starts_with(".pred")))
[1] TRUE
Feature Engineering i R

Jämföra den fullständiga och den reducerade modellen

Med alla särdrag

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

Med de 3 viktigaste särdragen*

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
Feature Engineering i R

Nu kör vi en övning!

Feature Engineering i R

Preparing Video For Download...