Skatta prestanda med korsvalidering

Modellering med tidymodels i R

David Svancer

Data Scientist

Tränings- och testdatamängder

 

Att skapa tränings- och testdatamängder är det första steget i modelleringsprocessen

  • Skyddar mot överfitting
    • Träningsdata används för modellträning
    • Testdata används för modellutvärdering

 

Nackdel

  • Ger bara en skattning av modellprestanda

 

Partitionsdiagram för att skapa tränings- och testdatamängder

Modellering med tidymodels i R

K-faldig korsvalidering

Resamplingteknik för att utforska modellprestanda

  • Ger K skattningar av modellprestanda under modellträningen

 

Uppdelning av data i tränings- och testdatamängder

Modellering med tidymodels i R

K-faldig korsvalidering

Resamplingteknik för att utforska modellprestanda

  • Ger K skattningar av modellprestanda under modellträningen
  • Träningsdata delas slumpmässigt in i K ungefär lika stora delar
  • Delarna används för att utföra K iterationer av modellträning och utvärdering

 

Uppdelning av träningsdata i korsvalideringsfolds

Modellering med tidymodels i R

Maskininlärning med korsvalidering

Utför 5-faldig korsvalidering

  • Fem iterationer av modellträning och utvärdering

 

Iteration ett av femfaldig korsvalidering

Modellering med tidymodels i R

Maskininlärning med korsvalidering

Utför 5-faldig korsvalidering

  • Fem iterationer av modellträning och utvärdering
  • Iteration 1
    • Fold 1 reserveras för modellutvärdering och folds 2 till 5 för modellträning

 

Iteration ett av femfaldig korsvalidering

Modellering med tidymodels i R

Maskininlärning med korsvalidering

Utför 5-faldig korsvalidering

  • Fem iterationer av modellträning och utvärdering
  • Iteration 1
    • Fold 1 reserveras för modellutvärdering och folds 2 till 5 för modellträning
  • Iteration 2
    • Fold 2 reserveras för modellutvärdering

 

Iteration två av femfaldig korsvalidering

Modellering med tidymodels i R

Maskininlärning med korsvalidering

Utför 5-faldig korsvalidering

  • Fem iterationer av modellträning och utvärdering
  • Iteration 1
    • Fold 1 reserveras för modellutvärdering och folds 2 till 5 för modellträning
  • Iteration 2
    • Fold 2 reserveras för modellutvärdering

 

Fem skattningar av modellprestanda totalt

 

Iteration fem av femfaldig korsvalidering

Modellering med tidymodels i R

Skapa korsvalideringsfolds

Funktionen vfold_cv()

  • Träningsdata
  • Antal folds, v
  • Stratifieringsvariabel, strata
  • Kör set.seed() innan vfold_cv() för reproducerbarhet
  • splits
    • Listkolumn med datasplittobjekt för att skapa folds
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
Modellering med tidymodels i R

Modellträning med korsvalidering

Funktionen fit_resamples()

  • Träna en parsnip-modell eller ett workflow-objekt
  • Ange korsvalideringsfolds, resamples
  • Valfri anpassad måttfunktion, metrics
    • Standard är accuracy och ROC AUC

 

Varje mått skattas 10 gånger

  • En skattning per fold
  • Medelvärde i kolumnen 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
Modellering med tidymodels i R

Detaljerade korsvalideringsresultat

Funktionen collect_metrics()

  • Anger man summarize = FALSE visas alla måttskattningar för varje korsvalideringsfold
  • 30 kombinationer totalt (3 mått x 10 folds)
    • Kolumnen .metric anger måttet
    • Kolumnen .estimate ger det skattade värdet för varje fold
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
Modellering med tidymodels i R

Sammanfatta korsvalideringsresultat

Funktionen collect_metrics() returnerar en tibble

  • Resultaten kan sammanfattas med dplyr
    • Börja med rs_metrics
    • Gruppera efter värdena i .metric
    • Beräkna sammanfattande statistik med 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
Modellering med tidymodels i R

Korsvalideringsmetodik

Modeller tränade med fit_resamples() kan inte göra prediktioner på nya datakällor

  • Funktionen predict() accepterar inte resample-objekt

Syftet med fit_resample()

  • Utforska och jämföra prestanda hos olika modelltyper
  • Välj den bäst presterande modelltypen och fokusera på modellträningen
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')"
Modellering med tidymodels i R

Nu kör vi en övning!

Modellering med tidymodels i R

Preparing Video For Download...