R에서 tidymodels로 모델링하기
David Svancer
Data Scientist
훈련 데이터셋과 테스트 데이터셋을 만드는 것이 모델링 과정의 첫 단계입니다
단점
모델 성능을 탐색하기 위한 재표본추출(Resampling) 기법

모델 성능을 탐색하기 위한 재표본추출 기법

5-겹 교차 검증 수행하기

5-겹 교차 검증 수행하기

5-겹 교차 검증 수행하기

5-겹 교차 검증 수행하기
총 5개의 모델 성능 추정치를 얻습니다

vfold_cv() 함수
vstratavfold_cv() 전에 set.seed()를 실행합니다splitsset.seed(214) leads_folds <- vfold_cv(leads_training,v = 10,strata = purchased)leads_folds
# 10-fold cross-validation using stratification
# A tibble: 10 x 2
splits id
<list> <chr>
1 <split [896/100]> Fold01
2 <split [896/100]> Fold02
3 <split [896/100]> Fold03
. ................ ......
9 <split [897/99]> Fold09
10 <split [897/99]> Fold10
fit_resamples() 함수
parsnip 모델 또는 workflow 객체를 훈련합니다resamples를 제공합니다metrics는 선택 사항입니다
각 지표는 10회 추정됩니다
mean 열에 표시됩니다leads_rs_fit <- leads_wkfl %>%fit_resamples(resamples = leads_folds,metrics = leads_metrics)leads_rs_fit %>% collect_metrics()
# A tibble: 3 x 5
.metric .estimator mean n std_err
<chr> <chr> <dbl> <int> <dbl>
1 roc_auc binary 0.823 10 0.0147
2 sens binary 0.786 10 0.0203
3 spec binary 0.855 10 0.0159
collect_metrics() 함수
summarize = FALSE를 전달하면 모든 교차 검증 폴드에 대한 지표 추정치를 확인할 수 있습니다.metric 열은 지표를 나타냅니다.estimate 열은 각 폴드의 추정값을 나타냅니다rs_metrics <- leads_rs_fit %>% collect_metrics(summarize = FALSE)rs_metrics
# A tibble: 30 x 4
id .metric .estimator .estimate
<chr> <chr> <chr> <dbl>
1 Fold01 sens binary 0.861
2 Fold01 spec binary 0.891
3 Fold01 roc_auc binary 0.885
4 Fold02 sens binary 0.778
5 Fold02 spec binary 0.969
6 Fold02 roc_auc binary 0.885
# ... with 24 more rows
collect_metrics() 함수는 tibble을 반환합니다
dplyr로 요약할 수 있습니다rs_metrics에서 시작합니다.metric 값으로 그룹을 형성합니다summarize()로 요약 통계를 계산합니다rs_metrics %>%group_by(.metric) %>%summarize(min = min(.estimate), median = median(.estimate), max = max(.estimate), mean = mean(.estimate), sd = sd(.estimate))
# A tibble: 3 x 6
.metric min median max mean sd
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 roc_auc 0.758 0.806 0.885 0.823 0.0466
2 sens 0.667 0.792 0.861 0.786 0.0642
3 spec 0.810 0.843 0.969 0.855 0.0502
fit_resamples()로 훈련된 모델은 새로운 데이터에 대한 예측을 제공할 수 없습니다
predict() 함수는 리샘플 객체를 받아들이지 않습니다fit_resample()의 목적
predict(leads_rs_fit,
new_data = leads_test)
Error in UseMethod("predict") :
no applicable method for 'predict' applied to
an object of class
"c('resample_results',
'tune_results',
'tbl_df',
'tbl', 'data.frame')"
R에서 tidymodels로 모델링하기