Giảm số chiều

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

Đặc trưng phương sai bằng 0

Một số dữ liệu có cột hằng số hoặc phương sai bằng 0. Ta có thể lọc các đặc trưng này bằng cách thêm step_zv() vào recipe().

Bảng minh họa một đặc trưng có phương sai bằng 0.

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

Đặc trưng gần như phương sai bằng 0

Đặc trưng gần như phương sai bằng 0 gồm các biến dự báo có một giá trị duy nhất và các biến dự báo có cả hai đặc điểm sau:

  • Rất ít giá trị khác biệt so với số lượng mẫu

  • Tỉ lệ giữa tần suất giá trị phổ biến nhất và giá trị phổ biến thứ hai là lớn

Ví dụ gần như phương sai bằng 0:

  • Với 100 quan sát có 2 giá trị khác nhau nhưng một giá trị chỉ xuất hiện 1 lần.

step_nzv() xác định và loại bỏ các biến dự báo có các đặc điểm này.

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

Phân tích Thành phần Chính (PCA)

Bộ dữ liệu 3 chiều gốc với hai lớp.

Biểu đồ 3D với hai lớp dữ liệu.

Bộ dữ liệu đã giảm chiều, biểu diễn bằng hai thành phần chính đầu tiên.

Biểu đồ 2D dạng scatterplot của hai thành phần chính đầu tiên với hai lớp dữ liệu.

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

Chuẩn bị recipe

Tạo recipe để thực hiện PCA và lấy kết quả qua prep().

pc_recipe <- 
recipe(~., data = loans_num) %>%
  step_nzv(all_numeric()) %>%
  step_normalize(all_numeric()) %>%
  step_pca(all_numeric())
pca_output <- prep(pc_recipe)

Ta có thể xem thông tin sẵn có bằng cách gọi names() trên pca_output.

names(pca_output)
 [1] "var_info"       "term_info"     
 [3] "steps"          "template"      
 [5] "levels"         "retained"      
 [7] "requirements"   "tr_info"       
 [9] "orig_lvls"      "last_term_info"
Kỹ thuật đặc trưng (Feature Engineering) với R

Khám phá phương sai giải thích

Trích xuất độ lệch chuẩn từ đối tượng pca_output và tính phương sai giải thích.

stdv <- pca_output$steps[[3]]$res$sdev
var_explained <- stdv^2/sum(stdv^2)
PCA = tibble(PC = 1:length(stdv),
          var_explained = var_explained, 
          cumulative = cumsum(var_explained))

Bảng cho thấy phương sai do từng thành phần chính giải thích.

# A tibble: 5 × 3
     PC var_explained cumulative
  <int>         <dbl>      <dbl>
1     1        0.315       0.315
2     2        0.214       0.529
3     3        0.202       0.730
4     4        0.198       0.928
5     5        0.0722      1
Kỹ thuật đặc trưng (Feature Engineering) với R

Trực quan hóa phương sai giải thích

Ta có thể vẽ biểu đồ cột bằng ggplot2.

PCA %>% 
ggplot(aes(x = PC, 
           y = var_explained)) +
  geom_col(fill = "steelblue") +
  xlab("Principal components") +
  ylab("Variance explained")

Phương sai do từng thành phần chính giải thích.

Biểu đồ cột thể hiện phương sai do từng thành phần chính giải thích.

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...