Visualiser les performances du modèle

Modéliser avec tidymodels en R

David Svancer

Data Scientist

Tracer la matrice de confusion

Carte thermique avec autoplot()

  • Passer l'objet matrice de confusion à autoplot()
  • Définir type sur 'heatmap'
  • Visualiser les effectifs les plus fréquents

 

conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>%

autoplot(type = 'heatmap')

Carte thermique de la matrice de confusion

Modéliser avec tidymodels en R

Diagramme mosaïque

Mosaïque avec autoplot()

  • Définir type sur 'mosaic'
  • Chaque barre verticale représente 100 % de la valeur réelle de l'issue dans la colonne
  • Affiche visuellement
    • la sensibilité

 

conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Diagramme mosaïque : barre de sensibilité

Modéliser avec tidymodels en R

Diagramme mosaïque

Mosaïque avec autoplot()

  • Définir type sur 'mosaic'
  • Chaque barre verticale représente 100 % de la valeur réelle de l'issue dans la colonne
  • Affiche visuellement
    • la sensibilité
    • la spécificité
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Diagramme mosaïque : barre de spécificité

Modéliser avec tidymodels en R

Seuils de probabilité

Le seuil de probabilité par défaut en classification binaire est 0,5

  • Si la probabilité estimée de la classe positive est supérieure ou égale à 0,5, la classe positive est prédite

 

leads_results

  • Si .pred_yes est supérieur ou égal à 0,5, alors .pred_class est défini sur 'yes' par la fonction predict() de tidymodels
leads_results
# A tibble: 332 x 4
   purchased .pred_class .pred_yes .pred_no
   <fct>     <fct>           <dbl>    <dbl>
 1 no        no             0.134     0.866
 2 yes       yes            0.729     0.271
 3 no        no             0.133     0.867
 4 no        no             0.0916    0.908
 5 yes       yes            0.598     0.402
 6 no        no             0.128     0.872
 7 yes       no             0.112     0.888
 8 no        no             0.169     0.831
 9 no        no             0.158     0.842
10 yes       yes            0.520     0.480
# ... with 322 more rows
Modéliser avec tidymodels en R

Explorer la performance selon les seuils

Comment un modèle de classification se comporte-t-il selon différents seuils ?

  • Seuils de probabilité uniques dans la colonne .pred_yes des résultats de test
    • Calculer la spécificité et la sensibilité pour chacun

 

seuil spécificité sensibilité
0 0 1
0,11 0,01 0,98
0,15 0,05 0,97
... ... ...
0,84 0,89 0,08
0,87 0,94 0,02
0,91 0,99 0
1 1 0
Modéliser avec tidymodels en R

Visualiser la performance selon les seuils

Courbe ROC (receiver operating characteristic)

  • Sert à visualiser la performance selon les seuils de probabilité

 

  • Sensibilité vs. (1 - spécificité) selon les seuils uniques des résultats de test

Sensibilité versus 1 moins spécificité

Modéliser avec tidymodels en R

Visualiser la performance selon les seuils

Courbe ROC (receiver operating characteristic)

  • Sert à visualiser la performance selon les seuils de probabilité

 

  • Sensibilité vs (1 - spécificité) selon les seuils uniques des résultats de test
    • Proportion correcte parmi les positifs réels vs proportion incorrecte parmi les négatifs réels

Courbe ROC

Modéliser avec tidymodels en R

Courbes ROC

Performance optimale au point (0, 1)

  • Idéalement, un modèle de classification produit des points proches du bord supérieur gauche pour tous les seuils

Courbe ROC idéale

Modéliser avec tidymodels en R

Courbes ROC

Performance optimale au point (0, 1)

  • Idéalement, un modèle de classification produit des points proches du bord supérieur gauche pour tous les seuils

 

Faible performance

  • La sensibilité et (1 - spécificité) sont égales pour tous les seuils
    • Correspond à un modèle qui prédit en tirant à pile ou face avec une pièce équilibrée

Courbe ROC avec faible performance

Modéliser avec tidymodels en R

Résumer la courbe ROC

La surface sous la courbe ROC (ROC AUC) résume en un seul nombre l'information de la courbe ROC d'un modèle de classification

Interprétation utile comme note de performance

  • A - [0,9, 1]
  • B - [0,8, 0,9)
  • C - [0,7, 0,8)
  • D - [0,6, 0,7)
  • F - [0,5, 0,6)

Aire sous la courbe ROC

Modéliser avec tidymodels en R

Calculer la performance selon les seuils

La fonction roc_curve()

  • Prend un tibble de résultats en premier argument
  • Colonne truth avec les catégories réelles de l'issue
  • Colonne avec les probabilités estimées pour la classe positive
    • .pred_yes dans le tibble leads_results

 

  • Renvoie un tibble avec spécificité et sensibilité pour tous les seuils uniques de .pred_yes
leads_results %>% 
  roc_curve(truth = purchased, .pred_yes)
# A tibble: 331 x 3
   .threshold specificity sensitivity
        <dbl>       <dbl>       <dbl>
 1     -Inf       0             1    
 2     0.0871     0             1    
 3     0.0888     0.00472       1    
 4     0.0893     0.00943       1    
 5     0.0896     0.0142        1    
 6     0.0902     0.0142        0.992
 7     0.0916     0.0142        0.983
 8     0.0944     0.0189        0.983
# ... with 323 more rows
Modéliser avec tidymodels en R

Tracer la courbe ROC

Passer le résultat de roc_curve() à autoplot() renvoie un tracé de courbe ROC

 

leads_results %>% 
  roc_curve(truth = purchased, .pred_yes) %>% 
  autoplot()

Modéliser avec tidymodels en R

Calculer la ROC AUC

La fonction roc_auc() de yardstick calcule la ROC AUC

  • Tibble des résultats du modèle
  • Colonne truth
  • Colonne avec les probabilités estimées pour la classe positive
roc_auc(leads_results,
        truth = purchased,
        .pred_yes)
# A tibble: 1 x 3
  .metric  .estimator .estimate
  <chr>      <chr>       <dbl>
1 roc_auc    binary      0.763
Modéliser avec tidymodels en R

Passons à la pratique !

Modéliser avec tidymodels en R

Preparing Video For Download...