Apa itu rekayasa fitur?

Rekayasa Fitur di R

Jorge Zazueta

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

Apa itu rekayasa fitur?

Rekayasa fitur adalah seni dan sains untuk

  • membuat,
  • mentransformasi,
  • mengekstraksi, dan
  • memilih

variabel guna meningkatkan kinerja dan interpretabilitas model.

Tinggi objek sebagai fungsi waktu

# 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
Rekayasa Fitur di R

Mengapa merekayasa fitur?

Kita membuat model regresi sederhana untuk tinggi.

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

dan menggrafikannya untuk menilai akurasi secara visual.

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()

Model kita sangat buruk merepresentasikan data!

Regresi linear tinggi vs waktu.

Regresi linear tinggi vs waktu yang menunjukkan kurangnya kecocokan.

Rekayasa Fitur di R

Menggunakan mutate()

Tinggi suatu objek mengikuti lintasan parabola dengan rumus:

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

Di mana $y$ adalah tinggi objek pada waktu $t$, dan $y_0$, $v_0$, serta $g$ berturut-turut adalah tinggi awal, kecepatan awal, dan percepatan gravitasi.

Kita dapat memodelkan dengan mengakui ketergantungan tinggi pada waktu dan kuadrat waktu.

mutate() menerima data frame sebagai argumen pertama dan definisi variabel baru yang akan ditambahkan.

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
Rekayasa Fitur di R

Prediksi dengan fitur yang direkayasa

Kita membuat model regresi lain, menggunakan fitur baru bersama yang asli.

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

Lalu kita grafikan prediksi baru.

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()

Ini peningkatan besar tanpa mengganti model.

Tinggi vs waktu dan time_2

Rekayasa Fitur di R

Ayo berlatih!

Rekayasa Fitur di R

Preparing Video For Download...