Utvärdera modellpassning

Modellering med tidymodels i R

David Svancer

Data Scientist

Binär klassificering

Utfallsvariabel med två nivåer

  • Positiv klass
    • Det utfall vi vill förutsäga
    • "yes" i variabeln purchased
  • Negativ klass

    • "no"
  • I tidymodels måste utfallsvariabeln vara en faktor

    • Första nivån är positiv klass
    • Kontrollera ordningen med levels()
leads_df
# A tibble: 1,328 x 7
  purchased total_visits  ...   us_location
   <fct>        <dbl>     ...     <fct>
 1 yes            7       ...     west
 2 no             8       ...     west
 3 no             5       ...     southeast
# ... with 1,325 more rows
levels(leads_df[['purchased']])
[1] "yes" "no"
Modellering med tidymodels i R

Förväxlingsmatris

 

Matris med antal förekomster av alla kombinationer av faktiska och förutsagda utfallsvärden

Korrekta förutsägelser

  • Sant positivt (TP)
  • Sant negativt (TN)

Klassificeringsfel

  • Falskt positivt (FP)
  • Falskt negativt (FN)

 

Förväxlingsmatris

Modellering med tidymodels i R

Klassificeringsmått med yardstick

Skapa förväxlingsmatriser och andra modellanpassningsmått med yardstick

  • Kräver en tibble med modellresultat som innehåller:
    • Sanna utfallsvärden
      • purchased
    • Förutsagda utfallskategorier
      • .pred_class
    • Skattade sannolikheter för varje kategori
      • .pred_yes
      • .pred_no
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

Förväxlingsmatris med yardstick

Funktionen conf_mat()

  • Tibble med modellresultat
  • truth – kolumn med sanna utfall
  • estimate – kolumn med förutsagda utfall

Logistisk regression på leads_df

  • Korrekt klassificerade 252 av 332 kunder (76%)
  • 46 falska negativa
  • 34 falska positiva
conf_mat(leads_results,

truth = purchased,
estimate = .pred_class)
          Truth
Prediction yes  no
       yes  74  34
       no   46 178
Modellering med tidymodels i R

Klassificeringsträffsäkerhet

Funktionen accuracy()

  • Tar samma argument som conf_mat()
  • Beräknar klassificeringsträffsäkerhet

 

$$\frac{TP + TN}{TP + TN + FP + FN}$$

 

  • yardstick-funktioner returnerar alltid en tibble
    • .metric – typ av mått
    • .estimate – beräknat värde
accuracy(leads_results, 
         truth = purchased, 
         estimate = .pred_class)
# A tibble: 1 x 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.759
Modellering med tidymodels i R

Sensitivitet

I många fall är träffsäkerhet inte det bästa måttet

  • Data i leads_df
    • Att klassificera alla som 'no' ger 64% träffsäkerhet

 

Sensitivitet

Andelen positiva fall som klassificerades korrekt

  • Av kunder som faktiskt köpte, hur stor andel förutsåg modellen rätt?
    • Färre falska negativa ökar sensitiviteten

Beräkning av sensitivitet

Modellering med tidymodels i R

Beräkna sensitivitet

Funktionen sens()

  • Tar samma argument som conf_mat() och accuracy()
  • Returnerar sensitivitetsberäkningen i kolumnen .estimate
sens(leads_results, 
     truth = purchased, 
     estimate = .pred_class)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 sens    binary         0.617
Modellering med tidymodels i R

Specificitet

Specificitet är andelen negativa fall som klassificerades korrekt

  • Av kunder som inte köpte, hur stor andel förutsåg modellen rätt?
    • Färre falska positiva ökar specificiteten

 

1 - Specificitet

  • Kallas även falsk-positivkvot (FPR)
  • Andelen falska positiva bland sanna negativa

Beräkning av specificitet

Modellering med tidymodels i R

Beräkna specificitet

Funktionen spec()

  • Tar samma argument som sens()
  • Returnerar specificitetsberäkningen i kolumnen .estimate
spec(leads_results, 
     truth = purchased, 
     estimate = .pred_class)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 spec    binary         0.840
Modellering med tidymodels i R

Skapa en måttuppsättning

Egendefinerade måttuppsättningar

  • Funktionen metric_set()
    • Skapar en egendefinerad måttfunktion med valda yardstick-mått
    • Skicka in yardstick-funktionsnamn i metric_set()
    • Använd den anpassade funktionen för att beräkna mått
custom_metrics <-
  metric_set(accuracy, sens, spec)
custom_metrics(leads_results, 
               truth = purchased, 
               estimate = .pred_class)
# A tibble: 3 x 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.759
2 sens     binary         0.617
3 spec     binary         0.840
Modellering med tidymodels i R

Många mått

Mått för binär klassificering

  • Stort urval av mått för binär klassificering

    • accuracy(), kap(), sens(), spec(), ppv(), npv(), mcc(), j_index(), bal_accuracy(), detection_prevalence(), precision(), recall(), f_meas()
  • Skicka resultatet av conf_mat() till summary() för att beräkna alla

 

https://yardstick.tidymodels.org/reference

conf_mat(leads_results, truth = purchased, 
         estimate = .pred_class) %>% 
  summary()
# A tibble: 13 x 3
   .metric              .estimator .estimate
   <chr>                <chr>          <dbl>
 1 accuracy             binary         0.759
 2 kap                  binary         0.466
 3 sens                 binary         0.617
 4 spec                 binary         0.840
 5 ppv                  binary         0.685
 6 npv                  binary         0.795
 7 mcc                  binary         0.468
 8 j_index              binary         0.456
 9 bal_accuracy         binary         0.728
10 detection_prevalence binary         0.325
11 precision            binary         0.685
12 recall               binary         0.617
13 f_meas               binary         0.649
Modellering med tidymodels i R

Nu kör vi en övning!

Modellering med tidymodels i R

Preparing Video For Download...