특성 공학이란?

R로 배우는 Feature Engineering

Jorge Zazueta

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

특성 공학이란?

특성 공학은

  • 생성,
  • 변환,
  • 추출, 그리고
  • 선택을 통해

모델 성능과 해석력을 높이는 방법론입니다.

시간에 따른 물체의 높이

# 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로 배우는 Feature Engineering

왜 특성을 엔지니어링하나요?

높이에 대한 단순 회귀 모델을 만듭니다

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

그리고 시각화하여 정확도를 가늠합니다.

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

이 모델은 데이터를 전혀 설명하지 못합니다!

시간 대비 높이의 선형회귀

적합도가 낮음을 보여주는 시간 대비 높이 선형회귀.

R로 배우는 Feature Engineering

mutate() 사용하기

물체의 높이는 다음 공식의 포물선 경로를 따릅니다.

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

여기서 $y$는 시각 $t$에서의 높이, $y_0$, $v_0$, $g$는 각각 초기 높이, 초기 속도, 중력가속도입니다.

높이가 시간과 시간의 제곱 모두에 의존함을 반영하여 모델을 적합할 수 있습니다.

mutate()는 첫 번째 인수로 데이터 프레임을 받고, 데이터 프레임에 추가할 새 변수 정의를 받습니다.

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로 배우는 Feature Engineering

엔지니어링한 특성으로 예측하기

새 특성과 기존 특성을 함께 사용해 회귀 모델을 하나 더 만듭니다.

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

그리고 새 예측을 그래프로 확인합니다.

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

다른 모델로 바꾸지 않고도 큰 개선입니다.

시간 및 time_2에 따른 높이

R로 배우는 Feature Engineering

연습해 봅시다!

R로 배우는 Feature Engineering

Preparing Video For Download...