Evaluarea potrivirii modelului

Modelare cu tidymodels în R

David Svancer

Data Scientist

Clasificare binară

Variabilă de rezultat cu două niveluri

  • Clasa pozitivă
    • Evenimentul de interes de prezis
    • „yes" în variabila purchased
  • Clasa negativă

    • „no"
  • În tidymodels, variabila de rezultat trebuie să fie un factor

    • Primul nivel este clasa pozitivă
    • Verificați ordinea cu 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"
Modelare cu tidymodels în R

Matricea de confuzie

 

Matrice cu numărul tuturor combinațiilor de valori reale și prezise

Predicții corecte

  • Adevărat Pozitiv (TP)
  • Adevărat Negativ (TN)

Erori de clasificare

  • Fals Pozitiv (FP)
  • Fals Negativ (FN)

 

Matricea de confuzie

Modelare cu tidymodels în R

Metrici de clasificare cu yardstick

Crearea matricelor de confuzie și a altor metrici cu yardstick

  • Necesită un tibble cu rezultatele modelului care conține:
    • Valorile reale ale rezultatului
      • purchased
    • Categoriile prezise
      • .pred_class
    • Probabilitățile estimate pentru fiecare categorie
      • .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
Modelare cu tidymodels în R

Matricea de confuzie cu yardstick

Funcția conf_mat()

  • Tibble cu rezultatele modelului
  • truth - coloana cu valorile reale
  • estimate - coloana cu valorile prezise

Regresie logistică pe leads_df

  • 252 din 332 clienți clasificați corect (76%)
  • 46 fals negative
  • 34 fals pozitive
conf_mat(leads_results,

truth = purchased,
estimate = .pred_class)
          Truth
Prediction yes  no
       yes  74  34
       no   46 178
Modelare cu tidymodels în R

Acuratețea clasificării

Funcția accuracy()

  • Acceptă aceleași argumente ca conf_mat()
  • Calculează acuratețea clasificării

 

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

 

  • Funcțiile yardstick returnează întotdeauna un tibble
    • .metric - tipul metricii
    • .estimate - valoarea calculată
accuracy(leads_results, 
         truth = purchased, 
         estimate = .pred_class)
# A tibble: 1 x 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.759
Modelare cu tidymodels în R

Sensibilitate

În multe cazuri, acuratețea nu este cea mai bună metrică

  • Date leads_df
    • Clasificând totul ca „nu" se obține 64% acuratețe

 

Sensibilitate

Proporția cazurilor pozitive clasificate corect

  • Dintre clienții care au cumpărat, ce proporție a prezis corect modelul?
    • Mai puține fals negative cresc sensibilitatea

Calculul sensibilității

Modelare cu tidymodels în R

Calculul sensibilității

Funcția sens()

  • Acceptă aceleași argumente ca conf_mat() și accuracy()
  • Returnează valoarea sensibilității în coloana .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
Modelare cu tidymodels în R

Specificitate

Specificitatea reprezintă proporția cazurilor negative clasificate corect

  • Dintre clienții care nu au cumpărat, ce proporție a prezis corect modelul?
    • Mai puține fals pozitive cresc specificitatea

 

1 - Specificitate

  • Numită și rata fals pozitivă (FPR)
  • Proporția fals pozitivelor dintre negativele reale

Calculul specificității

Modelare cu tidymodels în R

Calculul specificității

Funcția spec()

  • Acceptă aceleași argumente ca sens()
  • Returnează valoarea specificității în coloana .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
Modelare cu tidymodels în R

Crearea unui set de metrici

Seturi de metrici definite de utilizator

  • Funcția metric_set()
    • Creează o funcție de metrici personalizată cu metrici yardstick selectate
    • Transmiteți numele funcțiilor de metrici yardstick în metric_set()
    • Utilizați funcția personalizată pentru a calcula metricile
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
Modelare cu tidymodels în R

Multe metrici

Metrici pentru clasificare binară

  • O gamă largă de metrici disponibile

    • accuracy(), kap(), sens(), spec(), ppv(), npv(), mcc(), j_index(), bal_accuracy(), detection_prevalence(), precision(), recall(), f_meas()
  • Transmiteți rezultatele conf_mat() funcției summary() pentru a le calcula pe toate

 

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
Modelare cu tidymodels în R

Să exersăm!

Modelare cu tidymodels în R

Preparing Video For Download...