모델 성능 평가

R에서 tidymodels로 모델링하기

David Svancer

Data Scientist

yardstick 입력 형식

모든 yardstick 함수는 모델 결과 tibble이 필요합니다

  • 실제 종속 변수 값 열
    • mpg 데이터에서는 hwy
  • 모델 예측 값 열
    • .pred
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로 모델링하기

평균제곱근오차(RMSE)

RMSE는 평균 예측 오차를 추정합니다

  • yardstickrmse()로 계산
    • 모델 결과 tibble을 입력
    • truth는 실제 값 열
    • estimate는 예측 값 열
mpg_test_results %>% 
  rmse(truth = hwy, estimate = .pred)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rmse    standard        1.93
R에서 tidymodels로 모델링하기

R 제곱 지표

실제값과 예측값의 제곱 상관을 측정합니다

  • 결정계수라고도 함
  • 0~1 범위
    • 모든 예측이 실제와 같으면 R 제곱은 1
  • yardstickrsq()로 계산
mpg_test_results %>% 
  rsq(truth = hwy, estimate = .pred)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rsq     standard       0.904
R에서 tidymodels로 모델링하기

R 제곱 플롯

R 제곱 지표 시각화

  • 모델 예측 vs 실제 값
  • y = x 선
    • R 제곱 1을 의미
  • 모델 성능 문제 탐지에 사용
    • 비선형 패턴
    • 예측 성능이 낮은 구간

Mpg 모델 R 제곱 플롯

R에서 tidymodels로 모델링하기

R 제곱 플롯 그리기

ggplot2로 R 제곱 플롯 만들기

  • 모델 결과가 담긴 tibble
  • geom_point()
  • geom_abline()
  • coord_obs_pred()
ggplot(mpg_test_results, aes(x = hwy, y = .pred)) +

geom_point() +
geom_abline(color = 'blue', linetype = 2) +
coord_obs_pred() + labs(title = 'R-Squared Plot', y = 'Predicted Highway MPG', x = 'Actual Highway MPG')

Mpg 모델 R 제곱 플롯

R에서 tidymodels로 모델링하기

모델 적합 간소화

last_fit() 함수

  • 모델 사양, 모형식, 데이터 분할 객체를 받음
  • 수행 작업:
    1. 학습/테스트 데이터 생성
    2. 학습 데이터에 모델 적합
    3. 테스트 데이터에서 지표·예측 계산
    4. 모든 결과를 담은 객체 반환
lm_last_fit <- lm_model %>% 
  last_fit(hwy ~ cty, 
           split = mpg_split)
R에서 tidymodels로 모델링하기

지표 수집

collect_metrics() 함수

  • last_fit() 결과를 입력
    • 테스트셋에서 계산된 성능 지표 tibble 반환
  • 회귀 모델 기본 지표
    • RMSE
    • R 제곱
lm_last_fit %>% 
  collect_metrics()
# A tibble: 2 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rmse    standard       1.93 
2 rsq     standard       0.904
R에서 tidymodels로 모델링하기

예측 수집

collect_predictions() 함수

  • last_fit() 결과를 입력
    • 테스트셋 예측이 담긴 tibble 반환
    • 예측 열 이름은 .pred
    • 종속 변수와 행 식별자 열 포함
lm_last_fit %>% 
  collect_predictions()
# A tibble: 57 x 4
   id               .pred  .row   hwy
   <chr>            <dbl> <int> <int>
 1 train/test split  25.0     1    29
 2 train/test split  27.7     3    31
 3 train/test split  25.0     7    27
 4 train/test split  25.0     8    26
 5 train/test split  22.3     9    25
# ... with 47 more rows
R에서 tidymodels로 모델링하기

모델을 평가해 봅시다!

R에서 tidymodels로 모델링하기

Preparing Video For Download...