Vad är särdragsframställning?

Feature Engineering i R

Jorge Zazueta

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

Vad är särdragsframställning?

Särdragsframställning är konsten och vetenskapen att

  • skapa,
  • transformera,
  • extrahera och
  • välja ut

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
Feature Engineering i R

Varför framställa särdrag?

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.

Linjär regression av höjd mot tid som illustrerar bristande anpassning.

Feature Engineering i R

Använda mutate()

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
Feature Engineering i R

Prediktera med det framställda särdragets

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

Nu kör vi en övning!

Feature Engineering i R

Preparing Video For Download...