Chọn theo phương sai

Giảm Chiều Dữ Liệu với R

Matt Pickard

Owner, Pickard Predictives, LLC

Phương sai dữ liệu chưa chuẩn hóa

biểu đồ trung bình với thanh sai số độ lệch chuẩn cho dữ liệu tín dụng chưa chuẩn hóa

Giảm Chiều Dữ Liệu với R

Phương sai dữ liệu đã chuẩn hóa

biểu đồ trung bình với thanh sai số độ lệch chuẩn cho dữ liệu tín dụng đã chuẩn hóa

Giảm Chiều Dữ Liệu với R

Tính phương sai đã chuẩn hóa

credit_variances <- credit_df %>% 
  summarize(across(everything(), ~ var(scale(., center = FALSE)), na.rm = TRUE)) %>%

pivot_longer(everything(), names_to = "feature", values_to = "variance") %>%
arrange(desc(variance)) credit_variances
# A tibble: 17 × 2
   feature                  variance
   <chr>                       <dbl>
 1 num_of_loan               0.996  
 2 num_of_delayed_payment    0.986   
 ...
Giảm Chiều Dữ Liệu với R

Ngưỡng phương sai

đầu ra phương sai

Giảm Chiều Dữ Liệu với R

Ngưỡng phương sai

đầu ra phương sai hiển thị ngưỡng cắt đầu tiên có thể

Giảm Chiều Dữ Liệu với R

Ngưỡng phương sai

đầu ra phương sai hiển thị ngưỡng cắt đầu tiên có thể

Giảm Chiều Dữ Liệu với R

Ngưỡng phương sai

đầu ra phương sai hiển thị ngưỡng cắt đầu tiên có thể

Giảm Chiều Dữ Liệu với R

Biểu đồ ngưỡng phương sai

Biểu đồ ngưỡng phương sai

Giảm Chiều Dữ Liệu với R

Tạo bộ lọc theo phương sai

low_var_filter <- credit_variances %>% 
  filter(variance < 0.1) %>% 
  pull(feature)

low_var_filter
[1] "credit_history_months"    "age"                     
[3] "num_credit_inquiries"     "credit_utilization_ratio"
[5] "num_credit_card"   
Giảm Chiều Dữ Liệu với R

Cách tiếp cận tidymodel

Tạo recipe

low_variance_recipe <- recipe(credit_score ~ ., data = credit_df) %>%

step_zv(all_predictors()) %>%
step_scale(all_numeric_predictors()) %>%
step_nzv(all_predictors()) %>%
prep()

Áp dụng recipe

filtered_credit_df <- bake(low_variance_recipe, new_data = NULL)
Giảm Chiều Dữ Liệu với R

Kiểm tra tác động của một bước cụ thể

low_variance_recipe <- recipe(credit_score ~ ., data = credit_df) %>% 
  step_zv(all_predictors()) %>% 
  step_scale(all_numeric_predictors()) %>% 
  step_nzv(all_predictors()) %>% 
  prep() 

tidy(low_variance_recipe, number = 3)
  terms                id       
  <chr>                <chr>    
1 num_credit_card      nzv_ni8L7
2 num_credit_inquiries nzv_ni8L7
Giảm Chiều Dữ Liệu với R

Ayo berlatih!

Giảm Chiều Dữ Liệu với R

Preparing Video For Download...