Redukcja cech modelu

Inżynieria cech w R

Jorge Zazueta

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

Powody redukcji liczby cech

Eliminacja nieistotnych lub mało informacyjnych zmiennych przynosi korzyści, w tym:

  • Zmniejszenie wariancji modelu bez istotnego wzrostu błędu
  • Poprawa wydajności modelu na nowych danych
  • Skrócenie czasu obliczeń
  • Zmniejszenie złożoności modelu
  • Poprawa interpretowalności
Inżynieria cech w R

Filtrowanie danych przez ważność zmiennych

Dopasowanie modelu ze wszystkimi cechami

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)

Wykres ważności zmiennych vip

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

Ważność zmiennych Wykres słupkowy ważności zmiennych.

Inżynieria cech w R

Budowanie modelu zredukowanego za pomocą składni formuły

Cechy można dodać bezpośrednio, używając podstawowej składni formuły R.

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

# Łączenie z modelem
workflow_formula <- # Łączenie z modelem
  workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_formula)
Inżynieria cech w R

Budowanie modelu zredukowanego za pomocą wektora cech

Wektor cech można użyć do wyboru zmiennych przed trenowaniem.

# Wektor cech
features <- c("Credit_History", "Property_Area", "LoanAmount", "Loan_Status") 

# Dane treningowe i testowe
train_features <- train %>% select(all_of(features))
test_features <- test %>% select(all_of(features))

# Tworzenie receptury i łączenie z modelem
recipe_features <- recipe(Loan_Status ~., data = train_features)
workflow_features <- workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_features) 
Inżynieria cech w R

Tworzenie obiektów rozszerzonych

Obiekty rozszerzone dla obu podejść

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)

Oba sposoby zwracają te same wyniki

all_equal(lr_aug_features, 
lr_aug_formula %>%
select(all_of(features),
starts_with(".pred")))
[1] TRUE
Inżynieria cech w R

Porównanie modelu pełnego i zredukowanego

Wszystkie cechy

lr_fit_full <- # Dopasowanie workflow
  lr_workflow_full %>%
  fit(data = train)
lr_aug_full <- # Rozszerzenie
  lr_fit_full %>%
  augment(test)
lr_aug_full %>% # Ocena
  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

Top 3 cechy*

lr_fit_formula <- # Dopasowanie workflow
  workflow_formula %>%
  fit(train)
lr_aug_formula <- # Rozszerzenie
  lr_fit_formula %>%
  augment(new_data = test)
lr_aug_formula %>% # Ocena
  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
Inżynieria cech w R

Czas na ćwiczenia!

Inżynieria cech w R

Preparing Video For Download...