Feature engineering in R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Feature engineering is de kunst en wetenschap van
van variabelen om modelprestatie en interpreteerbaarheid te verbeteren.
Hoogte van een object als functie van tijd
# 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
We maken een simpel regressiemodel van hoogte
lr_height <- lm(height ~ time,
data = height)
en plotten het om de nauwkeurigheid visueel te beoordelen.
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()
Ons model stelt zwaar teleur bij het weergeven van de data!
Lineaire regressie van hoogte vs. tijd.

De hoogte van een object volgt een parabolisch pad, gegeven door:
$y(t) = y_0 + v_0t - \frac{g}{2}t^2$.
Waarbij $y$ de hoogte op tijd $t$ is, en $y_0$, $v_0$ en $g$ respectievelijk de starthoogte, beginsnelheid en valversnelling zijn.
We kunnen het model fitten met hoogte als functie van tijd én tijd in het kwadraat.
mutate() neemt een data frame als eerste argument en de definitie van een nieuwe variabele die wordt toegevoegd.
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
We maken een nieuw regressiemodel met onze nieuwe feature plus de originele.
lr_height_2 <-
lm(height ~ time + time_2, data = df_2)
En we plotten de nieuwe voorspelling.
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()
Dat is een flinke verbetering zonder een ander model te gebruiken.
Hoogte vs. tijd en time_2

Feature engineering in R