Estimarea performanței prin validare încrucișată

Modelare cu tidymodels în R

David Svancer

Data Scientist

Seturi de antrenare și testare

 

Crearea seturilor de antrenare și testare este primul pas în modelare

  • Protejează împotriva supraajustării
    • Datele de antrenare sunt folosite pentru ajustarea modelului
    • Datele de testare sunt folosite pentru evaluare

 

Dezavantaj

  • O singură estimare a performanței modelului

 

Diagrama de partiționare în seturi de antrenare și testare

Modelare cu tidymodels în R

Validare încrucișată K-fold

Tehnică de reesantionare pentru explorarea performanței modelului

  • Furnizează K estimări ale performanței în procesul de ajustare

 

Partiționarea datelor în seturi de antrenare și testare

Modelare cu tidymodels în R

Validare încrucișată K-fold

Tehnică de reesantionare pentru explorarea performanței modelului

  • Furnizează K estimări ale performanței în procesul de ajustare
  • Datele de antrenare sunt partiționare aleatoriu în K seturi de dimensiuni aproximativ egale
  • Pliurile sunt folosite pentru K iterații de ajustare și evaluare a modelului

 

Partiționarea datelor de antrenare în pliuri de validare încrucișată

Modelare cu tidymodels în R

Machine learning cu validare încrucișată

Validare încrucișată cu 5 pliuri

  • Cinci iterații de antrenare și evaluare a modelului

 

Prima iterație a validării încrucișate cu 5 pliuri

Modelare cu tidymodels în R

Machine learning cu validare încrucișată

Validare încrucișată cu 5 pliuri

  • Cinci iterații de antrenare și evaluare a modelului
  • Iterația 1
    • Pliul 1 rezervat pentru evaluare; pliurile 2-5 pentru antrenare

 

Prima iterație a validării încrucișate cu 5 pliuri

Modelare cu tidymodels în R

Machine learning cu validare încrucișată

Validare încrucișată cu 5 pliuri

  • Cinci iterații de antrenare și evaluare a modelului
  • Iterația 1
    • Pliul 1 rezervat pentru evaluare; pliurile 2-5 pentru antrenare
  • Iterația 2
    • Pliul 2 rezervat pentru evaluare

 

A doua iterație a validării încrucișate cu 5 pliuri

Modelare cu tidymodels în R

Machine learning cu validare încrucișată

Validare încrucișată cu 5 pliuri

  • Cinci iterații de antrenare și evaluare a modelului
  • Iterația 1
    • Pliul 1 rezervat pentru evaluare; pliurile 2-5 pentru antrenare
  • Iterația 2
    • Pliul 2 rezervat pentru evaluare

 

Cinci estimări ale performanței modelului în total

 

A cincea iterație a validării încrucișate cu 5 pliuri

Modelare cu tidymodels în R

Crearea pliurilor de validare încrucișată

Funcția vfold_cv()

  • Datele de antrenare
  • Numărul de pliuri, v
  • Variabila de stratificare, strata
  • Executați set.seed() înainte de vfold_cv() pentru reproductibilitate
  • splits
    • Coloană listă cu obiecte de împărțire a datelor pentru crearea pliurilor
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
Modelare cu tidymodels în R

Antrenarea modelului cu validare încrucișată

Funcția fit_resamples()

  • Antrenează un model parsnip sau un obiect workflow
  • Furnizați pliurile de validare încrucișată, resamples
  • Funcție opțională de metrici personalizate, metrics
    • Implicit: acuratețe și ROC AUC

 

Fiecare metrică este estimată de 10 ori

  • O estimare per pliu
  • Valoarea medie în coloana 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
Modelare cu tidymodels în R

Rezultate detaliate ale validării încrucișate

Funcția collect_metrics()

  • Transmiterea summarize = FALSE returnează toate estimările pentru fiecare pliu
  • 30 de combinații totale (3 metrici x 10 pliuri)
    • Coloana .metric identifică metrica
    • Coloana .estimate oferă valoarea estimată pentru fiecare pliu
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
Modelare cu tidymodels în R

Rezumarea rezultatelor validării încrucișate

Funcția collect_metrics() returnează un tibble

  • Rezultatele pot fi rezumate cu dplyr
    • Începeți cu rs_metrics
    • Grupați după valorile .metric
    • Calculați statistici rezumat cu 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
Modelare cu tidymodels în R

Metodologia validării încrucișate

Modelele antrenate cu fit_resamples() nu pot genera predicții pe date noi

  • Funcția predict() nu acceptă obiecte de reesantionare

Scopul fit_resample()

  • Explorarea și compararea profilului de performanță al diferitelor tipuri de modele
  • Selectarea celui mai bun tip de model și concentrarea eforturilor de ajustare
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')"
Modelare cu tidymodels în R

Hai să aplicăm validarea încrucișată!

Modelare cu tidymodels în R

Preparing Video For Download...