tidymodels로 선형 회귀

R에서 tidymodels로 모델링하기

David Svancer

Data Scientist

parsnip으로 모델 적합

parsnip으로 모델 적합

R에서 tidymodels로 모델링하기

선형 회귀 모델

ctyhwy 예측  

$$hwy = \beta_{0} + \beta_{1} cty$$

모델 매개변수

  • $ \beta_{0} $: 절편
  • $ \beta_{1} $: 기울기

 

고속도로 vs. 도심 연비

R에서 tidymodels로 모델링하기

선형 회귀 모델

ctyhwy 예측  

$$hwy = \beta_{0} + \beta_{1} cty$$

모델 매개변수

  • $ \beta_{0} $: 절편
  • $ \beta_{1} $: 기울기

 

훈련 데이터에서 추정된 매개변수

$$\small hwy = 0.77 + 1.35(cty)$$

 

연비 데이터와 회귀선

R에서 tidymodels로 모델링하기

모델 수식

parsnip의 모델 수식

  • 열 역할 지정에 사용
    • 결과 변수
    • 예측 변수

일반형

outcome ~ predictor_1 + predictor_2 + ...

축약형

outcome ~ .

예측 변수 ctyhwy 예측

hwy ~ cty
R에서 tidymodels로 모델링하기

parsnip 패키지

R에서 통합된 모델 지정 문법

  1. 모델 유형 지정

    • 선형 회귀 또는 다른 모델 유형
  2. 엔진 지정

    • 각 엔진은 서로 다른 R 패키지에 대응
  3. 모드 지정

    • 회귀 또는 분류

Parsnip 패키지

R에서 tidymodels로 모델링하기

선형 회귀 모델 적합

 

parsnip으로 모델 명세 정의

  • linear_reg()

 

lm_modelfit()에 전달

  • 모델 수식 지정
  • 모델 학습에 사용할 data

 

lm_model <- linear_reg() %>%

set_engine('lm') %>%
set_mode('regression')

 

lm_fit <- lm_model %>% 
  fit(hwy ~ cty, data = mpg_training)
R에서 tidymodels로 모델링하기

추정된 계수 얻기

 

tidy() 함수

  • 학습된 parsnip 모델 객체 입력
  • 요약 tibble 생성
  • termestimate 열에 추정된 계수 제공

 

tidy(lm_fit)
# A tibble: 2 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)    0.769    0.528       1.46 1.47e- 1
2 cty            1.35     0.0305     44.2  6.32e-97
R에서 tidymodels로 모델링하기

예측 만들기

학습된 parsnip 모델을 predict()에 전달

  • new_data는 예측할 데이터셋 지정

 

predict()의 표준 출력

  1. tibble 반환
  2. 행 순서는 new_data와 동일
  3. 예측 열 이름은 .pred
hwy_predictions <- lm_fit %>% 
  predict(new_data = mpg_test)

hwy_predictions
# A tibble: 57 x 1
   .pred
   <dbl>
 1  25.0
 2  27.7
 3  25.0
 4  25.0
 5  22.3
# ... with 47 more rows
R에서 tidymodels로 모델링하기

테스트 데이터에 예측 추가

bind_cols() 함수

  • 둘 이상의 tibble을 열 기준으로 결합
  • 모델 결과 tibble 생성에 유용

단계

  • mpg_test에서 hwy, cty 선택
  • bind_cols()에 전달해 예측 열 추가
mpg_test_results <- mpg_test %>%
  select(hwy, cty) %>%

bind_cols(hwy_predictions) mpg_test_results
# A tibble: 57 x 3
     hwy   cty .pred
   <int> <int> <dbl>
 1    29    18  25.0
 2    31    20  27.7
 3    27    18  25.0
 4    26    18  25.0
 5    25    16  22.3
# ... with 47 more rows
R에서 tidymodels로 모델링하기

모델링해 봅시다!

R에서 tidymodels로 모델링하기

Preparing Video For Download...