Estimer la performance avec la validation croisée

Modélisation avec tidymodels en R

David Svancer

Data Scientist

Ensembles d'entraînement et de test

 

Créer des ensembles d'entraînement et de test est la première étape du processus de modélisation

  • Protège contre le surapprentissage
    • Les données d'entraînement servent à l'ajustement du modèle
    • Les données de test servent à l'évaluation du modèle

 

Inconvénient

  • Une seule estimation de la performance du modèle

 

Schéma de partition pour créer les ensembles d'entraînement et de test

Modélisation avec tidymodels en R

Validation croisée à K plis

Technique de rééchantillonnage pour explorer la performance d'un modèle

  • Fournit K estimations de performance pendant l'ajustement du modèle

 

Partition des données en ensembles d'entraînement et de test

Modélisation avec tidymodels en R

Validation croisée à K plis

Technique de rééchantillonnage pour explorer la performance d'un modèle

  • Fournit K estimations de performance pendant l'ajustement
  • Les données d'entraînement sont réparties aléatoirement en K ensembles d'environ même taille
  • Les plis servent à effectuer K itérations d'ajustement et d'évaluation

 

Partition des données d'entraînement en plis de validation croisée

Modélisation avec tidymodels en R

Machine learning avec validation croisée

Effectuer une validation croisée à 5 plis

  • Cinq itérations d'entraînement et d'évaluation du modèle

 

Itération un d'une validation croisée à cinq plis

Modélisation avec tidymodels en R

Machine learning avec validation croisée

Effectuer une validation croisée à 5 plis

  • Cinq itérations d'entraînement et d'évaluation du modèle
  • Itération 1
    • Plis 1 réservé à l'évaluation et plis 2 à 5 à l'entraînement

 

Itération un d'une validation croisée à cinq plis

Modélisation avec tidymodels en R

Machine learning avec validation croisée

Effectuer une validation croisée à 5 plis

  • Cinq itérations d'entraînement et d'évaluation du modèle
  • Itération 1
    • Plis 1 réservé à l'évaluation et plis 2 à 5 à l'entraînement
  • Itération 2
    • Plis 2 réservé à l'évaluation

 

Itération deux d'une validation croisée à cinq plis

Modélisation avec tidymodels en R

Machine learning avec validation croisée

Effectuer une validation croisée à 5 plis

  • Cinq itérations d'entraînement et d'évaluation du modèle
  • Itération 1
    • Plis 1 réservé à l'évaluation et plis 2 à 5 à l'entraînement
  • Itération 2
    • Plis 2 réservé à l'évaluation

 

Au total, cinq estimations de la performance du modèle

 

Itération cinq d'une validation croisée à cinq plis

Modélisation avec tidymodels en R

Créer des plis de validation croisée

La fonction vfold_cv()

  • Données d'entraînement
  • Nombre de plis, v
  • Variable de stratification, strata
  • Exécutez set.seed() avant vfold_cv() pour la reproductibilité
  • splits
    • Colonne de liste avec des objets de division pour créer les plis
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
Modélisation avec tidymodels en R

Entraîner un modèle avec validation croisée

La fonction fit_resamples()

  • Entraîner un modèle parsnip ou un objet workflow
  • Fournir les plis de validation croisée, resamples
  • Fonction de mesure personnalisée facultative, metrics
    • Par défaut : exactitude et AUC ROC

 

Chaque mesure est estimée 10 fois

  • Une estimation par pli
  • Valeur moyenne dans la colonne 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
Modélisation avec tidymodels en R

Résultats détaillés de la validation croisée

La fonction collect_metrics()

  • En passant summarize = FALSE, vous obtenez toutes les estimations pour chaque pli de validation croisée
  • 30 combinaisons au total (3 mesures × 10 plis)
    • La colonne .metric identifie la mesure
    • La colonne .estimate donne la valeur estimée pour chaque pli
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
Modélisation avec tidymodels en R

Résumer les résultats de validation croisée

La fonction collect_metrics() retourne un tibble

  • Les résultats peuvent être résumés avec dplyr
    • Partir de rs_metrics
    • Former des groupes selon .metric
    • Calculer des statistiques sommaires avec 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
Modélisation avec tidymodels en R

Méthodologie de validation croisée

Les modèles entraînés avec fit_resamples() ne peuvent pas produire de prédictions sur de nouvelles données

  • La fonction predict() n'accepte pas les objets de rééchantillonnage

Objectif de fit_resample()

  • Explorer et comparer le profil de performance de différents types de modèles
  • Choisir le meilleur type de modèle et concentrer les efforts d'ajustement
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')"
Modélisation avec tidymodels en R

Passons à la validation croisée !

Modélisation avec tidymodels en R

Preparing Video For Download...