Como calcular a pontuação f1 em r (com exemplo)


Ao usar modelos de classificação em aprendizado de máquina, uma métrica comum que usamos para avaliar a qualidade do modelo é a pontuação F1 .

Esta métrica é calculada da seguinte forma:

Pontuação F1 = 2 * (Precisão * Recuperação) / (Precisão + Recuperação)

Ouro:

  • Precisão : Previsões positivas corretas em relação ao total de previsões positivas
  • Lembrete : corrigindo previsões positivas em relação ao total de positivos reais

Por exemplo, suponha que usemos um modelo de regressão logística para prever se 400 jogadores diferentes de basquete universitário serão convocados para a NBA.

A seguinte matriz de confusão resume as previsões feitas pelo modelo:

Veja como calcular a pontuação F1 do modelo:

Precisão = Verdadeiro Positivo / (Verdadeiro Positivo + Falso Positivo) = 120/ (120+70) = 0,63157

Rechamada = Verdadeiro Positivo / (Verdadeiro Positivo + Falso Negativo) = 120 / (120+40) = 0,75

Pontuação F1 = 2 * (0,63157 * 0,75) / (0,63157 + 0,75) = . 6857

O exemplo a seguir mostra como calcular a pontuação F1 para este modelo exato em R.

Exemplo: Calculando a pontuação F1 em R

O código a seguir mostra como usar a função confusãoMatrix() do pacote circunflexo em R para calcular a pontuação F1 (e outras métricas) para um determinado modelo de regressão logística:

 library (caret)

#define vectors of actual values and predicted values
actual <- factor(rep(c(1, 0), times=c(160, 240)))
pred <- factor(rep(c(1, 0, 1, 0), times=c(120, 40, 70, 170)))

#create confusion matrix and calculate metrics related to confusion matrix
confusionMatrix(pred, actual, mode = " everything ", positive=" 1 ")

          Reference
Prediction 0 1
         0 170 40
         1 70 120
                                          
               Accuracy: 0.725           
                 95% CI: (0.6784, 0.7682)
    No Information Rate: 0.6             
    P-Value [Acc > NIR]: 1.176e-07       
                                          
                  Kappa: 0.4444          
                                          
 Mcnemar's Test P-Value: 0.005692        
                                          
            Sensitivity: 0.7500          
            Specificity: 0.7083          
         Pos Pred Value: 0.6316          
         Neg Pred Value: 0.8095          
              Accuracy: 0.6316          
                 Recall: 0.7500          
                     F1: 0.6857          
             Prevalence: 0.4000          
         Detection Rate: 0.3000          
   Detection Prevalence: 0.4750          
      Balanced Accuracy: 0.7292          
                                          
       'Positive' Class: 1

Vemos que a pontuação da F1 é 0,6857 . Isso corresponde ao valor que calculamos manualmente anteriormente.

Nota : Precisamos especificar mode=”everything” para que a pontuação F1 seja exibida na saída.

Se você usar a pontuação F1 para comparar vários modelos, o modelo com a pontuação F1 mais alta representará o modelo mais capaz de classificar as observações em classes.

Por exemplo, se você ajustar outro modelo de regressão logística aos dados e esse modelo tiver uma pontuação F1 de 0,85, esse modelo será considerado melhor porque tem uma pontuação F1 mais alta.

Recursos adicionais

Como realizar regressão logística em R
Pontuação F1 vs precisão: qual você deve usar?

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *