Visualisering av modellprestanda

Modellering med tidymodels i R

David Svancer

Data Scientist

Plotta konfusionsmatrisen

Heatmap med autoplot()

  • Skicka konfusionsmatrisobjektet till autoplot()
  • Sätt type till 'heatmap'
  • Visualisera de vanligaste förekomsterna

 

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

autoplot(type = 'heatmap')

Heatmap för konfusionsmatris

Modellering med tidymodels i R

Mosaikplot

Mosaikplot med autoplot()

  • Sätt type till 'mosaic'
  • Varje lodrätt stapel representerar 100 % av det faktiska utfallsvärdet i kolumnen
  • Visualiserar
    • sensitivitet

 

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

Sensitivitetsstapel i mosaikplot för konfusionsmatris

Modellering med tidymodels i R

Mosaikplot

Mosaikplot med autoplot()

  • Sätt type till 'mosaic'
  • Varje lodrätt stapel representerar 100 % av det faktiska utfallsvärdet i kolumnen
  • Visualiserar
    • sensitivitet
    • specificitet
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Specificitetesstapel i mosaikplot för konfusionsmatris

Modellering med tidymodels i R

Sannolikhetströsklar

Standardtröskel för sannolikhet vid binär klassificering är 0,5

  • Om den skattade sannolikheten för den positiva klassen är större än eller lika med 0,5 förutsägs den positiva klassen

 

leads_results

  • Om .pred_yes är större än eller lika med 0,5 sätts .pred_class till 'yes' av funktionen predict() i 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
Modellering med tidymodels i R

Utforska prestanda över trösklar

Hur presterar en klassificeringsmodell över ett intervall av trösklar?

  • Unika sannolikhetströsklar i kolumnen .pred_yes i testdatasets resultat
    • Beräkna specificitet och sensitivitet för var och en

 

threshold specificity sensitivity
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
Modellering med tidymodels i R

Visualisera prestanda över trösklar

ROC-kurva (receiver operating characteristic)

  • Används för att visualisera prestanda över sannolikhetströsklar

 

  • Sensitivitet mot (1 - specificitet) över unika trösklar i testsetresultaten

Sensitivitet mot 1 minus specificitet

Modellering med tidymodels i R

Visualisera prestanda över trösklar

ROC-kurva (receiver operating characteristic)

  • Används för att visualisera prestanda över sannolikhetströsklar

 

  • Sensitivitet mot (1 - specificitet) över unika trösklar i testsetresultaten
    • Andel korrekta bland faktiska positiva mot andel felaktiga bland faktiska negativa

ROC-kurva

Modellering med tidymodels i R

ROC-kurvor

Optimal prestanda uppnås i punkten (0, 1)

  • Idealt sett producerar en klassificeringsmodell punkter nära det övre vänstra hörnet över alla trösklar

Ideal ROC-kurva

Modellering med tidymodels i R

ROC-kurvor

Optimal prestanda uppnås i punkten (0, 1)

  • Idealt sett producerar en klassificeringsmodell punkter nära det övre vänstra hörnet över alla trösklar

 

Svag prestanda

  • Sensitivitet och (1 - specificitet) är lika stora över alla trösklar
    • Motsvarar en klassificeringsmodell som förutsäger utfall baserat på resultatet av ett slumpmässigt myntsinglande

ROC-kurva med svag prestanda

Modellering med tidymodels i R

Sammanfatta ROC-kurvan

Arean under ROC-kurvan (ROC AUC) sammanfattar ROC-kurvans information för en klassificeringsmodell i ett enda tal

Används som ett betyg för klassificeringsprestanda

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

Arean under ROC-kurvan

Modellering med tidymodels i R

Beräkna prestanda över trösklar

Funktionen roc_curve()

  • Tar en resultattibble som första argument
  • Kolumnen truth med faktiska utfallskategorier
  • Kolumn med skattade sannolikheter för den positiva klassen
    • .pred_yes i tibble:n leads_results

 

  • Returnerar en tibble med specificitet och sensitivitet för alla unika trösklar i .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
Modellering med tidymodels i R

Plotta ROC-kurvan

Skickar resultaten från roc_curve() till funktionen autoplot() för att rita en ROC-kurva

 

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

Modellering med tidymodels i R

Beräkna ROC AUC

Funktionen roc_auc() från yardstick beräknar ROC AUC

  • Tibble med modellresultat
  • Kolumnen truth
  • Kolumn med skattade sannolikheter för den positiva klassen
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
Modellering med tidymodels i R

Nu kör vi en övning!

Modellering med tidymodels i R

Preparing Video For Download...