Kỹ thuật đặc trưng là gì?

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

Kỹ thuật đặc trưng là gì?

Kỹ thuật đặc trưng là nghệ thuật và khoa học của việc

  • tạo,
  • biến đổi,
  • trích xuất, và
  • chọn

biến để cải thiện hiệu năng và khả năng giải thích của mô hình.

Chiều cao của vật theo thời gian

# A tibble: 100 × 2
    time height
   <dbl>  <dbl>
 1 0       0   
 2 0.101   3.85
 3 0.202  17.7 
 4 0.303  15.1 
 5 0.404  20.0 
 6 0.505  32.6 
 7 0.606  30.8 
 8 0.707  26.6 
 9 0.808  33.8 
10 0.909  39.2 
# ... with 90 more rows
# ℹ Use `print(n = ...)` to see more rows
Kỹ thuật đặc trưng (Feature Engineering) với R

Vì sao cần kỹ thuật đặc trưng?

Ta tạo một mô hình hồi quy tuyến tính đơn giản cho chiều cao

lr_height <- lm(height ~ time,
                data = height)

và vẽ để ước lượng độ chính xác bằng mắt.

df <- height %>% 
bind_cols(lr_pred = predict(lr_height))

df %>%
  ggplot(aes(x = time, y = height)) +
  geom_point() +
  geom_line(aes(y = lr_pred), 
            color = "blue", lwd = .75)+
    theme_classic()

Mô hình của ta biểu diễn dữ liệu rất kém!

Hồi quy tuyến tính: chiều cao so với thời gian.

Hồi quy tuyến tính của chiều cao theo thời gian minh họa sự không khớp.

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

Dùng mutate()

Chiều cao của vật đi theo quỹ đạo parabol theo công thức:

$y(t) = y_0 + v_0t - \frac{g}{2}t^2$.

Trong đó $y$ là chiều cao tại thời điểm $t$, còn $y_0$, $v_0$, và $g$ lần lượt là độ cao ban đầu, vận tốc ban đầu, và gia tốc trọng trường.

Ta có thể khớp mô hình, thừa nhận phụ thuộc của chiều cao vào cả thời gian và bình phương của thời gian.

mutate() nhận data frame làm đối số đầu và định nghĩa biến mới để thêm vào data frame.

df_2 <- df %>% mutate(time_2 = time^2)
# A tibble: 100 × 4
    time height lr_pred time_2
   <dbl>  <dbl>   <dbl>  <dbl>
 1 0       0       80.8 0     
 2 0.101   3.85    80.9 0.0102
 3 0.202  17.7     81.0 0.0408
 4 0.303  15.1     81.1 0.0918
Kỹ thuật đặc trưng (Feature Engineering) với R

Dự đoán với đặc trưng đã tạo

Ta tạo một mô hình hồi quy khác, dùng đặc trưng mới cùng với đặc trưng gốc.

lr_height_2 <- 
lm(height ~ time + time_2, data = df_2)

Và vẽ dự đoán mới.

df_2 <- df_2 %>%
    bind_cols(lr2_pred = predict(lr_height_2))
df_2 %>%
  ggplot(aes(x = time, y = height)) +
  geom_point() +
  geom_line(aes(y = lr2_pred), 
      col = "blue", lwd = .75) +
  theme_classic()

Đó là một cải thiện rõ rệt mà không cần đổi mô hình.

Chiều cao theo thời gian và time_2

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

Let's practice!

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

Preparing Video For Download...