Wizualizacja wydajności modelu

Modelowanie z tidymodels w R

David Svancer

Data Scientist

Wykres macierzy pomyłek

Mapa cieplna z autoplot()

  • Przekaż obiekt macierzy pomyłek do autoplot()
  • Ustaw type na 'heatmap'
  • Wizualizuj najczęściej występujące wartości

 

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

autoplot(type = 'heatmap')

Mapa cieplna macierzy pomyłek

Modelowanie z tidymodels w R

Wykres mozaikowy

Mozaika z autoplot()

  • Ustaw type na 'mosaic'
  • Każdy pionowy pasek reprezentuje 100% rzeczywistych wartości wyników w kolumnie
  • Wyświetla wizualnie
    • czułość

 

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

Pasek czułości na wykresie mozaikowym macierzy pomyłek

Modelowanie z tidymodels w R

Wykres mozaikowy

Mozaika z autoplot()

  • Ustaw type na 'mosaic'
  • Każdy pionowy pasek reprezentuje 100% rzeczywistych wartości wyników w kolumnie
  • Wyświetla wizualnie
    • czułość
    • swoistość
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Pasek swoistości na wykresie mozaikowym macierzy pomyłek

Modelowanie z tidymodels w R

Progi prawdopodobieństwa

Domyślny próg prawdopodobieństwa w klasyfikacji binarnej wynosi 0,5

  • Jeśli szacowane prawdopodobieństwo klasy pozytywnej jest większe lub równe 0,5, przewidywana jest klasa pozytywna

 

leads_results

  • Jeśli .pred_yes jest większe lub równe 0,5, funkcja predict() w tidymodels ustawia .pred_class na '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
Modelowanie z tidymodels w R

Analiza wydajności dla różnych progów

Jak model klasyfikacji działa dla różnych progów?

  • Unikalne progi prawdopodobieństwa w kolumnie .pred_yes wyników zbioru testowego
    • Oblicz swoistość i czułość dla każdego

 

próg swoistość czułość
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
Modelowanie z tidymodels w R

Wizualizacja wydajności dla różnych progów

Krzywa charakterystyki operacyjnej odbiornika (ROC)

  • Służy do wizualizacji wydajności dla różnych progów prawdopodobieństwa

 

  • Czułość vs. (1 - swoistość) dla unikalnych progów w wynikach zbioru testowego

Czułość a 1 minus swoistość

Modelowanie z tidymodels w R

Wizualizacja wydajności dla różnych progów

Krzywa charakterystyki operacyjnej odbiornika (ROC)

  • Służy do wizualizacji wydajności dla różnych progów prawdopodobieństwa

 

  • Czułość vs. (1 - swoistość) dla unikalnych progów w wynikach zbioru testowego
    • Odsetek poprawnych wyników wśród rzeczywistych pozytywów vs. odsetek błędnych wyników wśród rzeczywistych negatywów

Krzywa ROC

Modelowanie z tidymodels w R

Krzywe ROC

Optymalna wydajność odpowiada punktowi (0, 1)

  • Idealnie model klasyfikacji generuje punkty blisko lewej górnej krawędzi dla wszystkich progów

Idealna krzywa ROC

Modelowanie z tidymodels w R

Krzywe ROC

Optymalna wydajność odpowiada punktowi (0, 1)

  • Idealnie model klasyfikacji generuje punkty blisko lewej górnej krawędzi dla wszystkich progów

 

Słaba wydajność

  • Czułość i (1 - swoistość) są równe dla wszystkich progów
    • Odpowiada modelowi klasyfikacji przewidującemu wyniki na podstawie losowego rzutu monetą

Krzywa ROC przy słabej wydajności

Modelowanie z tidymodels w R

Podsumowanie krzywej ROC

Pole pod krzywą ROC (ROC AUC) ujmuje informacje z krzywej ROC w jednej liczbie

Przydatna interpretacja jako ocena klasyfikacji

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

Pole pod krzywą ROC

Modelowanie z tidymodels w R

Obliczanie wydajności dla różnych progów

Funkcja roc_curve()

  • Przyjmuje tibble z wynikami jako pierwszy argument
  • Kolumna truth z rzeczywistymi kategoriami wyników
  • Kolumna z szacowanymi prawdopodobieństwami klasy pozytywnej
    • .pred_yes w tibble leads_results

 

  • Zwraca tibble ze swoistością i czułością dla wszystkich unikalnych progów w .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
Modelowanie z tidymodels w R

Wykres krzywej ROC

Przekazanie wyników roc_curve() do funkcji autoplot() generuje wykres krzywej ROC

 

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

Modelowanie z tidymodels w R

Obliczanie ROC AUC

Funkcja roc_auc() z pakietu yardstick oblicza ROC AUC

  • Tibble z wynikami modelu
  • Kolumna truth
  • Kolumna z szacowanymi prawdopodobieństwami klasy pozytywnej
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
Modelowanie z tidymodels w R

Czas na ćwiczenia!

Modelowanie z tidymodels w R

Preparing Video For Download...