Feature engineering en R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Le feature engineering est l’art et la science de
des variables pour améliorer la performance et l’interprétabilité du modèle.
Hauteur d’un objet en fonction du temps
# 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
Nous créons un modèle de régression simple de la hauteur
lr_height <- lm(height ~ time,
data = height)
et l’affichons pour en jauger la précision à l’œil.
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()
Notre modèle représente très mal les données !
Régression linéaire de la hauteur « vs. » le temps.

La hauteur d’un objet suit une trajectoire parabolique donnée par la formule :
$y(t) = y_0 + v_0t - \frac{g}{2}t^2$.
Où $y$ représente la hauteur de l’objet à l’instant $t$, et $y_0$, $v_0$ et $g$ sont respectivement la hauteur initiale, la vitesse initiale et l’accélération due à la gravité.
Nous pouvons ajuster notre modèle en tenant compte de la dépendance vis-à-vis du temps et du carré du temps.
mutate() prend un data frame en premier argument et la définition d’une nouvelle variable à ajouter à ce 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
Nous créons un autre modèle de régression, en utilisant notre nouvelle variable et l’originale.
lr_height_2 <-
lm(height ~ time + time_2, data = df_2)
Et traçons notre nouvelle prédiction.
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()
Amélioration nette sans changer de modèle.
Hauteur vs. temps et time_2

Feature engineering en R