Stima delle prestazioni con la cross validation

Modellazione con tidymodels in R

David Svancer

Data Scientist

Training e test set

 

Creare training e test set è il primo passo del modeling

  • Evita l’overfitting
    • Il training set serve per stimare il modello
    • Il test set per valutarlo

 

Svantaggio

  • Solo una stima delle prestazioni

 

Schema di partizione per creare training e test set

Modellazione con tidymodels in R

K-fold cross validation

Tecnica di resampling per esplorare le prestazioni del modello

  • Fornisce K stime delle prestazioni durante il fitting

 

Partizione dei dati in training e test set

Modellazione con tidymodels in R

K-fold cross validation

Tecnica di resampling per esplorare le prestazioni del modello

  • Fornisce K stime delle prestazioni durante il fitting
  • Il training set è partizionato casualmente in K insiemi di dimensione simile
  • I fold servono per K iterazioni di fitting e valutazione

 

Partizione del training set in fold di cross validation

Modellazione con tidymodels in R

Machine learning con cross validation

Eseguire una cross validation a 5 fold

  • Cinque iterazioni di training e valutazione del modello

 

Iterazione uno di una cross validation a cinque fold

Modellazione con tidymodels in R

Machine learning con cross validation

Eseguire una cross validation a 5 fold

  • Cinque iterazioni di training e valutazione del modello
  • Iterazione 1
    • Fold 1 riservato alla valutazione; fold da 2 a 5 per il training

 

Iterazione uno di una cross validation a cinque fold

Modellazione con tidymodels in R

Machine learning con cross validation

Eseguire una cross validation a 5 fold

  • Cinque iterazioni di training e valutazione del modello
  • Iterazione 1
    • Fold 1 riservato alla valutazione; fold da 2 a 5 per il training
  • Iterazione 2
    • Fold 2 riservato alla valutazione

 

Iterazione due di una cross validation a cinque fold

Modellazione con tidymodels in R

Machine learning con cross validation

Eseguire una cross validation a 5 fold

  • Cinque iterazioni di training e valutazione del modello
  • Iterazione 1
    • Fold 1 riservato alla valutazione; fold da 2 a 5 per il training
  • Iterazione 2
    • Fold 2 riservato alla valutazione

 

Cinque stime complessive delle prestazioni del modello

 

Iterazione cinque di una cross validation a cinque fold

Modellazione con tidymodels in R

Creare i fold di cross validation

La funzione vfold_cv()

  • Training data
  • Numero di fold, v
  • Variabile di stratificazione, strata
  • Esegui set.seed() prima di vfold_cv() per la riproducibilità
  • splits
    • Colonna lista con oggetti di split per creare i fold
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
Modellazione con tidymodels in R

Training del modello con cross validation

La funzione fit_resamples()

  • Allena un modello parsnip o un oggetto workflow
  • Fornisci i fold di cross validation, resamples
  • Funzione metrica personalizzata opzionale, metrics
    • Default: accuracy e ROC AUC

 

Ogni metrica è stimata 10 volte

  • Una stima per fold
  • Valore medio nella colonna 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
Modellazione con tidymodels in R

Risultati dettagliati della cross validation

La funzione collect_metrics()

  • Passare summarize = FALSE restituisce tutte le stime per ogni fold di cross validation
  • 30 combinazioni totali (3 metriche x 10 fold)
    • La colonna .metric identifica la metrica
    • La colonna .estimate dà il valore stimato per ciascun 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
Modellazione con tidymodels in R

Riassumere i risultati della cross validation

collect_metrics() restituisce una tibble

  • Puoi riassumere i risultati con dplyr
    • Parti da rs_metrics
    • Crea gruppi per valori di .metric
    • Calcola statistiche con 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
Modellazione con tidymodels in R

Metodologia di cross validation

I modelli allenati con fit_resamples() non possono generare previsioni su nuovi dati

  • La funzione predict() non accetta oggetti di tipo resample

Scopo di fit_resample()

  • Esplorare e confrontare il profilo prestazionale di diversi tipi di modello
  • Scegli il modello migliore e concentrati sul fitting
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')"
Modellazione con tidymodels in R

Facciamo la cross validation!

Modellazione con tidymodels in R

Preparing Video For Download...