Modelprestatie visualiseren

Modelleren met tidymodels in R

David Svancer

Data Scientist

De confusion matrix plotten

Heatmap met autoplot()

  • Geef het confusion-matrixobject door aan autoplot()
  • Zet type op 'heatmap'
  • Visualiseer de meest voorkomende tellingen

 

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

autoplot(type = 'heatmap')

Heatmap van confusion matrix

Modelleren met tidymodels in R

Mozaïekdiagram

Mozaïek met autoplot()

  • Zet type op 'mosaic'
  • Elke verticale balk is 100% van de echte uitkomstwaarde in de kolom
  • Toont visueel
    • sensitiviteit

 

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

Mozaïekdiagram van confusion matrix met sensitiviteitsbalk

Modelleren met tidymodels in R

Mozaïekdiagram

Mozaïek met autoplot()

  • Zet type op 'mosaic'
  • Elke verticale balk is 100% van de echte uitkomstwaarde in de kolom
  • Toont visueel
    • sensitiviteit
    • specificiteit
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Mozaïekdiagram van confusion matrix met specificiteitsbalk

Modelleren met tidymodels in R

Kansdrempels

Standaard drempel bij binaire classificatie is 0,5

  • Is de geschatte kans op de positieve klasse ≥ 0,5, dan wordt de positieve klasse voorspeld

 

leads_results

  • Is .pred_yes ≥ 0,5, dan zet predict() in tidymodels .pred_class op 'yes'
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
Modelleren met tidymodels in R

Prestatie over drempels verkennen

Hoe presteert een classificatiemodel bij verschillende drempels?

  • Unieke kansdrempels in de .pred_yes-kolom van de testresultaten
    • Bereken specificiteit en sensitiviteit voor elke drempel

 

drempel specificiteit sensitiviteit
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
Modelleren met tidymodels in R

Prestatie over drempels visualiseren

Receiver operating characteristic (ROC)-curve

  • Visualiseert prestatie over kansdrempels

 

  • Sensitiviteit vs. (1 - specificiteit) over unieke drempels in testresultaten

Sensitiviteit versus 1 min specificiteit

Modelleren met tidymodels in R

Prestatie over drempels visualiseren

Receiver operating characteristic (ROC)-curve

  • Visualiseert prestatie over kansdrempels

 

  • Sensitiviteit vs (1 - specificiteit) over unieke drempels in testresultaten
    • Aandeel correct bij echte positieven vs. aandeel fout bij echte negatieven

ROC-curve

Modelleren met tidymodels in R

ROC-curves

Optimale prestatie ligt op punt (0, 1)

  • Idealiter liggen de punten bij alle drempels dicht bij de linkerbovenrand

Ideale ROC-curve

Modelleren met tidymodels in R

ROC-curves

Optimale prestatie ligt op punt (0, 1)

  • Idealiter liggen de punten bij alle drempels dicht bij de linkerbovenrand

 

Slechte prestatie

  • Sensitiviteit en (1 - specificiteit) zijn gelijk bij alle drempels
    • Komt overeen met een model dat voorspelt door willekeurig munt te gooien

ROC-curve met slechte prestatie

Modelleren met tidymodels in R

De ROC-curve samenvatten

Het oppervlak onder de ROC-curve (ROC AUC) vat de ROC-informatie van een classificatiemodel samen in één getal

Handige interpretatie als een cijfer voor classificatieprestatie

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

Oppervlak onder de ROC-curve

Modelleren met tidymodels in R

Prestatie over drempels berekenen

De functie roc_curve()

  • Neemt een resultaten-tibble als eerste argument
  • truth-kolom met de echte uitkomsten
  • Kolom met geschatte kansen voor de positieve klasse
    • .pred_yes in de leads_results-tibble

 

  • Geeft een tibble terug met specificiteit en sensitiviteit voor alle unieke drempels in .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
Modelleren met tidymodels in R

De ROC-curve plotten

De resultaten van roc_curve() doorgeven aan autoplot() geeft een ROC-plot

 

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

Modelleren met tidymodels in R

ROC AUC berekenen

De functie roc_auc() uit yardstick berekent de ROC AUC

  • Tibble met modelresultaten
  • truth-kolom
  • Kolom met geschatte kansen voor de positieve klasse
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
Modelleren met tidymodels in R

Laten we oefenen!

Modelleren met tidymodels in R

Preparing Video For Download...