Visualizando o desempenho do modelo

Modelagem com tidymodels em R

David Svancer

Data Scientist

Plotando a matriz de confusão

Heatmap com autoplot()

  • Passe o objeto da matriz de confusão para autoplot()
  • Defina type como 'heatmap'
  • Visualize as contagens mais prevalentes

 

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

autoplot(type = 'heatmap')

Mapa de calor da matriz de confusão

Modelagem com tidymodels em R

Gráfico mosaico

Mosaico com autoplot()

  • Defina type como 'mosaic'
  • Cada barra vertical representa 100% do valor real do desfecho na coluna
  • Mostra visualmente
    • sensitivity

 

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

Gráfico mosaico da matriz de confusão com barra de sensibilidade

Modelagem com tidymodels em R

Gráfico mosaico

Mosaico com autoplot()

  • Defina type como 'mosaic'
  • Cada barra vertical representa 100% do valor real do desfecho na coluna
  • Mostra visualmente
    • sensitivity
    • specificity
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Gráfico mosaico da matriz de confusão com barra de especificidade

Modelagem com tidymodels em R

Limiar de probabilidade

O limiar padrão de probabilidade em classificação binária é 0.5

  • Se a probabilidade estimada da classe positiva for maior ou igual a 0.5, a classe positiva é prevista

 

leads_results

  • Se .pred_yes for maior ou igual a 0.5, então .pred_class é definido como 'yes' pela função predict() em 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
Modelagem com tidymodels em R

Explorando desempenho em diferentes limiares

Como um modelo de classificação se sai em vários limiares?

  • Limiars de probabilidade únicos na coluna .pred_yes dos resultados do conjunto de teste
    • Calcule especificidade e sensibilidade para cada um

 

limiar especificidade sensibilidade
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
Modelagem com tidymodels em R

Visualizando desempenho em diferentes limiares

Curva ROC (Receiver operating characteristic)

  • Usada para visualizar o desempenho em diferentes limiares de probabilidade

 

  • Sensibilidade vs. (1 - especificidade) nos limiares únicos dos resultados do teste

Sensibilidade versus 1 menos especificidade

Modelagem com tidymodels em R

Visualizando desempenho em diferentes limiares

Curva ROC (Receiver operating characteristic)

  • Usada para visualizar o desempenho em diferentes limiares de probabilidade

 

  • Sensibilidade vs (1 - especificidade) nos limiares únicos dos resultados do teste
    • Proporção correta entre os positivos reais vs. proporção incorreta entre os negativos reais

Curva ROC

Modelagem com tidymodels em R

Curvas ROC

O desempenho ideal está no ponto (0, 1)

  • Idealmente, um modelo gera pontos próximos à borda superior esquerda em todos os limiares

Curva ROC ideal

Modelagem com tidymodels em R

Curvas ROC

O desempenho ideal está no ponto (0, 1)

  • Idealmente, um modelo gera pontos próximos à borda superior esquerda em todos os limiares

 

Desempenho ruim

  • Sensibilidade e (1 - especificidade) são iguais em todos os limiares
    • Corresponde a um modelo que prevê resultados como se jogasse uma moeda justa ao acaso

Curva ROC com desempenho ruim

Modelagem com tidymodels em R

Resumindo a curva ROC

A área sob a curva ROC (ROC AUC) resume a informação da curva ROC de um modelo de classificação em um único número

Interpretação útil como uma nota de desempenho

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

Área sob a curva ROC

Modelagem com tidymodels em R

Calculando desempenho em diferentes limiares

A função roc_curve()

  • Recebe um tibble de resultados como primeiro argumento
  • Coluna truth com as categorias reais do desfecho
  • Coluna com as probabilidades estimadas da classe positiva
    • .pred_yes no tibble leads_results

 

  • Retorna um tibble com especificidade e sensibilidade para todos os limiares únicos em .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
Modelagem com tidymodels em R

Plotando a curva ROC

Passar os resultados de roc_curve() para autoplot() retorna um gráfico da curva ROC

 

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

Modelagem com tidymodels em R

Calculando a ROC AUC

A função roc_auc() do yardstick calcula a ROC AUC

  • Tibble de resultados do modelo
  • Coluna truth
  • Coluna com as probabilidades estimadas da classe positiva
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
Modelagem com tidymodels em R

Vamos praticar!

Modelagem com tidymodels em R

Preparing Video For Download...