Rekayasa Fitur di R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Rekayasa fitur adalah seni dan sains untuk
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
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.

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