Szacowanie wydajności za pomocą walidacji krzyżowej

Modelowanie z tidymodels w R

David Svancer

Data Scientist

Zbiory treningowy i testowy

 

Tworzenie zbiorów treningowego i testowego to pierwszy krok procesu modelowania

  • Chroni przed przeuczeniem
    • Dane treningowe służą do dopasowania modelu
    • Dane testowe służą do oceny modelu

 

Wada

  • Tylko jedna estymacja wydajności modelu

 

Diagram podziału danych na zbiór treningowy i testowy

Modelowanie z tidymodels w R

K-krotna walidacja krzyżowa

Technika próbkowania do eksploracji wydajności modelu

  • Dostarcza K estymacji wydajności modelu w trakcie jego dopasowywania

 

Podział danych na zbiory treningowy i testowy

Modelowanie z tidymodels w R

K-krotna walidacja krzyżowa

Technika próbkowania do eksploracji wydajności modelu

  • Dostarcza K estymacji wydajności modelu w trakcie jego dopasowywania
  • Dane treningowe są losowo dzielone na K zbiorów o zbliżonym rozmiarze
  • Foldy służą do przeprowadzenia K iteracji dopasowania i oceny modelu

 

Podział danych treningowych na foldy walidacji krzyżowej

Modelowanie z tidymodels w R

Uczenie maszynowe z walidacją krzyżową

Przeprowadzanie 5-krotnej walidacji krzyżowej

  • Pięć iteracji trenowania i oceny modelu

 

Pierwsza iteracja 5-krotnej walidacji krzyżowej

Modelowanie z tidymodels w R

Uczenie maszynowe z walidacją krzyżową

Przeprowadzanie 5-krotnej walidacji krzyżowej

  • Pięć iteracji trenowania i oceny modelu
  • Iteracja 1
    • Fold 1 zarezerwowany do oceny modelu, foldy 2–5 do trenowania

 

Pierwsza iteracja 5-krotnej walidacji krzyżowej

Modelowanie z tidymodels w R

Uczenie maszynowe z walidacją krzyżową

Przeprowadzanie 5-krotnej walidacji krzyżowej

  • Pięć iteracji trenowania i oceny modelu
  • Iteracja 1
    • Fold 1 zarezerwowany do oceny modelu, foldy 2–5 do trenowania
  • Iteracja 2
    • Fold 2 zarezerwowany do oceny modelu

 

Druga iteracja 5-krotnej walidacji krzyżowej

Modelowanie z tidymodels w R

Uczenie maszynowe z walidacją krzyżową

Przeprowadzanie 5-krotnej walidacji krzyżowej

  • Pięć iteracji trenowania i oceny modelu
  • Iteracja 1
    • Fold 1 zarezerwowany do oceny modelu, foldy 2–5 do trenowania
  • Iteracja 2
    • Fold 2 zarezerwowany do oceny modelu

 

Pięć estymacji wydajności modelu łącznie

 

Piąta iteracja 5-krotnej walidacji krzyżowej

Modelowanie z tidymodels w R

Tworzenie foldów walidacji krzyżowej

Funkcja vfold_cv()

  • Dane treningowe
  • Liczba foldów, v
  • Zmienna stratyfikacji, strata
  • Przed vfold_cv() należy wywołać set.seed() dla powtarzalności
  • splits
    • Kolumna listowa z obiektami podziału danych dla każdego folda
set.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
Modelowanie z tidymodels w R

Trenowanie modelu z walidacją krzyżową

Funkcja fit_resamples()

  • Trenuje model parsnip lub obiekt workflow
  • Przyjmuje foldy walidacji krzyżowej, resamples
  • Opcjonalna funkcja metryk, metrics
    • Domyślnie: dokładność i ROC AUC

 

Każda metryka jest szacowana 10 razy

  • Jedna estymacja na fold
  • Średnia wartość w kolumnie 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
Modelowanie z tidymodels w R

Szczegółowe wyniki walidacji krzyżowej

Funkcja collect_metrics()

  • Przekazanie summarize = FALSE zwraca wszystkie estymacje metryk dla każdego folda
  • Łącznie 30 kombinacji (3 metryki x 10 foldów)
    • Kolumna .metric identyfikuje metrykę
    • Kolumna .estimate podaje wartość dla każdego folda
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
Modelowanie z tidymodels w R

Podsumowanie wyników walidacji krzyżowej

Funkcja collect_metrics() zwraca obiekt tibble

  • Wyniki można podsumować za pomocą dplyr
    • Zacznij od rs_metrics
    • Grupuj według wartości .metric
    • Oblicz statystyki podsumowujące za pomocą 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
Modelowanie z tidymodels w R

Metodologia walidacji krzyżowej

Modele wytrenowane za pomocą fit_resamples() nie mogą generować predykcji na nowych danych

  • Funkcja predict() nie akceptuje obiektów resample

Cel fit_resample()

  • Eksploracja i porównanie profilu wydajności różnych typów modeli
  • Wybór najlepszego typu modelu i skupienie się na jego dopasowaniu
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')"
Modelowanie z tidymodels w R

Czas na walidację krzyżową!

Modelowanie z tidymodels w R

Preparing Video For Download...