Reducerea caracteristicilor modelului

Ingineria caracteristicilor în R

Jorge Zazueta

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

Motive pentru reducerea numărului de caracteristici

Eliminarea variabilelor irelevante sau cu informații reduse poate aduce beneficii, printre care

  • Reducerea varianței modelului fără a crește semnificativ biasul
  • Îmbunătățirea performanței pe date noi
  • Reducerea timpului de calcul
  • Scăderea complexității modelului
  • Îmbunătățirea interpretabilității
Ingineria caracteristicilor în R

Filtrarea datelor prin importanța variabilelor

Antrenarea unui model cu toate caracteristicile

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)

Reprezentarea grafică a importanței variabilelor

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

Importanța variabilelor Diagramă cu bare a importanței variabilelor.

Ingineria caracteristicilor în R

Construirea unui model redus folosind sintaxa formulei

Caracteristicile pot fi adăugate direct folosind sintaxa formulei R de bază.

# 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)
Ingineria caracteristicilor în R

Construirea unui model redus prin crearea unui vector de caracteristici

Un vector de caracteristici poate fi utilizat pentru a selecta variabilele înainte de antrenare.

# 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) 
Ingineria caracteristicilor în R

Crearea obiectelor augmentate

Obiecte augmentate pentru ambele abordări

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)

Ambele metode returnează aceleași rezultate

all_equal(lr_aug_features, 
lr_aug_formula %>%
select(all_of(features),
starts_with(".pred")))
[1] TRUE
Ingineria caracteristicilor în R

Compararea modelelor complet și redus

Folosind toate caracteristicile

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

Folosind primele 3 caracteristici*

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
Ingineria caracteristicilor în R

Să exersăm!

Ingineria caracteristicilor în R

Preparing Video For Download...