Feature Engineering i R
Jorge Zazueta
Research Professor and Head of the Modeling Group at the School of Economics, UASLP
Särdragsframställning är konsten och vetenskapen att
variabler för att förbättra modellens prestanda och tolkbarhet.
Ett objekts höjd som funktion av tid
# 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
Vi skapar en enkel regressionsmodell för höjd
lr_height <- lm(height ~ time,
data = height)
och plottar den för att bedöma träffsäkerheten visuellt.
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()
Modellen misslyckas fullständigt med att representera data!
Linjär regression av höjd mot tid.

Ett objekts höjd följer en parabolisk bana enligt följande formel:
$y(t) = y_0 + v_0t - \frac{g}{2}t^2$.
Där $y$ representerar objektets höjd vid tidpunkten $t$, och $y_0$, $v_0$ och $g$ är respektive begynnelsehöjd, hastighet och tyngdkraftens acceleration.
Vi kan anpassa modellen med hänsyn till att höjden beror på både tid och tidens kvadrat.
mutate() tar en dataram som första argument samt definitionen av en ny variabel som ska läggas till i dataramen.
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
Vi skapar en ny regressionsmodell med det nya särdragets tillsammans med det ursprungliga.
lr_height_2 <-
lm(height ~ time + time_2, data = df_2)
Sedан plottar vi den nya prediktionen.
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()
Det är en imponerande förbättring utan att byta modell.
Höjd mot tid och time_2

Feature Engineering i R