Özellik mühendisliği nedir?

R'da Feature Engineering

Jorge Zazueta

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

Özellik mühendisliği nedir?

Özellik mühendisliği,

  • oluşturma,
  • dönüştürme,
  • çıkarma ve
  • seçme

işlemlerinin, model performansı ve yorumlanabilirliğini artırmak için değişkenler üzerinde uygulanmasıdır.

Bir nesnenin zamanın fonksiyonu olarak yüksekliği

# 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
R'da Feature Engineering

Neden özellik mühendisliği?

Yükseklik için basit bir regresyon modeli kuruyoruz

lr_height <- lm(height ~ time,
                data = height)

ve görsel olarak doğruluğunu değerlendiriyoruz.

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

Modelimiz veriyi temsil etmede berbat kalıyor!

Yükseklik ile zamanın doğrusal regresyonu.

Uydurma eksikliğini gösteren yükseklik vs. zaman doğrusal regresyonu.

R'da Feature Engineering

mutate() kullanımı

Bir nesnenin yüksekliği, aşağıdaki formülle verilen parabolik bir yolu izler:

$y(t) = y_0 + v_0t - \frac{g}{2}t^2$.

Burada $y$, zaman $t$'deki yüksekliği; $y_0$, $v_0$ ve $g$ ise sırasıyla başlangıç yüksekliği, hız ve yerçekimi ivmesini ifade eder.

Yüksekliğin hem zamana hem de zamanın karesine bağlılığını dikkate alarak model kurabiliriz.

mutate() ilk argüman olarak bir veri çerçevesi alır ve bu çerçeveye eklenecek yeni değişkenin tanımını ister.

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
R'da Feature Engineering

Mühendis edilen özellik ile tahmin

Yeni özelliğimizi orijinaliyle birlikte kullanarak başka bir regresyon modeli kuruyoruz.

lr_height_2 <- 
lm(height ~ time + time_2, data = df_2)

Ve yeni tahminimizi görselleştiriyoruz.

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

Farklı bir modele başvurmadan etkileyici bir iyileşme.

Yükseklik vs. zaman ve time_2

R'da Feature Engineering

Haydi pratik yapalım!

R'da Feature Engineering

Preparing Video For Download...