Comment calculer le score F1 dans R (avec exemple)



Lors de l’utilisation de modèles de classification dans l’apprentissage automatique, une métrique courante que nous utilisons pour évaluer la qualité du modèle est le score F1 .

Cette métrique est calculée comme suit :

Score F1 = 2 * (Précision * Rappel) / (Précision + Rappel)

où:

  • Précision : Corriger les prédictions positives par rapport au total des prédictions positives
  • Rappel : Corriger les prédictions positives par rapport au total des positifs réels

Par exemple, supposons que nous utilisions un modèle de régression logistique pour prédire si 400 joueurs de basket-ball universitaires différents seront recrutés ou non dans la NBA.

La matrice de confusion suivante résume les prédictions faites par le modèle :

Voici comment calculer le score F1 du modèle :

Précision = Vrai Positif / (Vrai Positif + Faux Positif) = 120/ (120+70) = 0,63157

Rappel = Vrai Positif / (Vrai Positif + Faux Négatif) = 120 / (120+40) = 0,75

Score F1 = 2 * (.63157 * .75) / (.63157 + .75) = . 6857

L’exemple suivant montre comment calculer le score F1 pour ce modèle exact dans R.

Exemple : Calcul du score F1 dans R

Le code suivant montre comment utiliser la fonction confusionMatrix() du package caret dans R pour calculer le score F1 (et d’autres métriques) pour un modèle de régression logistique donné :

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          
              Precision : 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    

On voit que le score F1 est de 0,6857 . Cela correspond à la valeur que nous avons calculée manuellement plus tôt.

Remarque : Nous devons spécifier mode = « everything » afin que le score F1 soit affiché dans la sortie.

Si vous utilisez le score F1 pour comparer plusieurs modèles, le modèle avec le score F1 le plus élevé représente le modèle le plus à même de classer les observations en classes.

Par exemple, si vous ajustez un autre modèle de régression logistique aux données et que ce modèle a un score F1 de 0,85, ce modèle sera considéré comme meilleur car il a un score F1 plus élevé.

Ressources additionnelles

Comment effectuer une régression logistique dans R
Score F1 vs précision : lequel devriez-vous utiliser ?

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *