Modelin özelliklerini azaltma

R'da Feature Engineering

Jorge Zazueta

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

Özellik sayısını azaltma nedenleri

Alakasız veya düşük bilgi içeren değişkenleri elemek şu faydaları sağlayabilir:

  • Önyargıyı çok artırmadan varyansı azaltma
  • Örneklem dışı performansı artırma
  • Hesaplama süresini kısaltma
  • Model karmaşıklığını azaltma
  • Yorumlanabilirliği artırma
R'da Feature Engineering

Değişken önemini kullanarak eleme

Tüm özelliklerle bir model uydurma

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)

vip ile değişkenleri görselleştirme

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

Değişken önemi Değişken öneminin sütun grafiği.

R'da Feature Engineering

Formül söz dizimiyle azaltılmış model kurma

Temel R formül söz dizimiyle özellikleri doğrudan ekleyebiliriz.

# Tarifeyi oluştur
recipe_formula <- 
  recipe(Loan_Status ~ Credit_History + Property_Area + 
           LoanAmount, data = train)

# Modelle paketle
workflow_formula <- # Modelle paketle
  workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_formula)
R'da Feature Engineering

Özellik vektörü oluşturarak azaltılmış model kurma

Bir özellik vektörü, eğitimden önce seçim için kullanılabilir.

# Özellik vektörü
features <- c("Credit_History", "Property_Area", "LoanAmount", "Loan_Status") 

# Eğitim ve test verisi
train_features <- train %>% select(all_of(features))
test_features <- test %>% select(all_of(features))

# Tarifeyi oluştur ve modelle paketle
recipe_features <- recipe(Loan_Status ~., data = train_features)
workflow_features <- workflow() %>% add_model(lr_model) %>%
  add_recipe(recipe_features) 
R'da Feature Engineering

Artırılmış nesneleri oluşturma

Her iki yaklaşım için artırılmış nesneler

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)

İki yöntem de aynı sonuçları verir

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

Tam ve azaltılmış modelleri karşılaştırma

Tüm özellikler kullanılarak

lr_fit_full <- # İş akışını uydur
  lr_workflow_full %>%
  fit(data = train)
lr_aug_full <- # Augment
  lr_fit_full %>%
  augment(test)
lr_aug_full %>% # Değerlendir
  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

İlk 3 özellikle*

lr_fit_formula <- # İş akışını uydur
  workflow_formula %>%
  fit(train)
lr_aug_formula <- # Augment
  lr_fit_formula %>%
  augment(new_data = test)
lr_aug_formula %>% # Değerlendir
  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
R'da Feature Engineering

Hadi pratik yapalım!

R'da Feature Engineering

Preparing Video For Download...