Giảm số lượng đặc trưng của mô hình

Kỹ thuật đặc trưng (Feature Engineering) với R

Jorge Zazueta

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

Lý do giảm số lượng đặc trưng

Loại bỏ biến không liên quan hoặc ít thông tin có thể mang lại lợi ích, gồm

  • Giảm phương sai mô hình mà không tăng nhiều độ chệch
  • Tăng hiệu suất ngoài mẫu
  • Giảm thời gian tính toán
  • Giảm độ phức tạp mô hình
  • Cải thiện khả năng diễn giải
Kỹ thuật đặc trưng (Feature Engineering) với R

Lọc dữ liệu bằng tầm quan trọng biến

Huấn luyện mô hình với mọi đặc trưng

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)

Vẽ biểu đồ vip của biến

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

Tầm quan trọng của biến Biểu đồ cột về tầm quan trọng của biến.

Kỹ thuật đặc trưng (Feature Engineering) với R

Xây mô hình rút gọn bằng cú pháp công thức

Ta có thể thêm đặc trưng trực tiếp bằng cú pháp công thức R cơ bản.

# 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)
Kỹ thuật đặc trưng (Feature Engineering) với R

Xây mô hình rút gọn bằng vector đặc trưng

Có thể dùng một vector đặc trưng để chọn đặc trưng trước khi huấn luyện.

# 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) 
Kỹ thuật đặc trưng (Feature Engineering) với R

Tạo các đối tượng augmented

Đối tượng augmented cho cả hai cách

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)

Cả hai cách cho cùng kết quả

all_equal(lr_aug_features, 
lr_aug_formula %>%
select(all_of(features),
starts_with(".pred")))
[1] TRUE
Kỹ thuật đặc trưng (Feature Engineering) với R

So sánh mô hình đầy đủ và rút gọn

Dùng tất cả đặc trưng

lr_fit_full <- # Fit workflow
  lr_workflow_full %>%
  fit(data = train)
lr_aug_full <- # Augment
  lr_fit_full %>%
  augment(test)
lr_aug_full %>% # Đánh giá
  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

Dùng 3 đặc trưng hàng đầu*

lr_fit_formula <- # Fit workflow
  workflow_formula %>%
  fit(train)
lr_aug_formula <- # Augment
  lr_fit_formula %>%
  augment(new_data = test)
lr_aug_formula %>% # Đánh giá
  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
Kỹ thuật đặc trưng (Feature Engineering) với R

Ayo berlatih!

Kỹ thuật đặc trưng (Feature Engineering) với R

Preparing Video For Download...