Hoe de f1-score in r te berekenen (met voorbeeld)


Bij het gebruik van classificatiemodellen in machine learning is een veelgebruikte maatstaf die we gebruiken om de modelkwaliteit te evalueren de F1-score .

Deze statistiek wordt als volgt berekend:

F1-score = 2 * (Precisie * Recall) / (Precisie + Recall)

Goud:

  • Nauwkeurigheid : corrigeer positieve voorspellingen ten opzichte van het totale aantal positieve voorspellingen
  • Herinnering : positieve voorspellingen corrigeren ten opzichte van het totale aantal werkelijke positieve resultaten

Stel dat we bijvoorbeeld een logistisch regressiemodel gebruiken om te voorspellen of 400 verschillende universiteitsbasketbalspelers wel of niet zullen worden opgeroepen voor de NBA.

De volgende verwarringsmatrix vat de voorspellingen van het model samen:

Zo berekent u de F1-score van het model:

Nauwkeurigheid = waar positief / (waar positief + fout positief) = 120/ (120+70) = 0,63157

Terugroepen = waar positief / (waar positief + fout negatief) = 120 / (120+40) = 0,75

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

Het volgende voorbeeld laat zien hoe u de F1-score voor dit exacte model in R kunt berekenen.

Voorbeeld: Berekening van de F1-score in R

De volgende code laat zien hoe u de functie verwarringMatrix() uit het dakje- pakket in R kunt gebruiken om de F1-score (en andere statistieken) voor een bepaald logistisch regressiemodel te berekenen:

 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

We zien dat de F1-score 0,6857 is. Dit komt overeen met de waarde die we eerder handmatig hebben berekend.

Opmerking : we moeten mode=“everything“ specificeren zodat de F1-score in de uitvoer wordt weergegeven.

Als u de F1-score gebruikt om meerdere modellen te vergelijken, vertegenwoordigt het model met de hoogste F1-score het model dat het beste in staat is waarnemingen in klassen in te delen.

Als u bijvoorbeeld een ander logistisch regressiemodel aan de gegevens koppelt en dat model een F1-score van 0,85 heeft, wordt dat model als beter beschouwd omdat het een hogere F1-score heeft.

Aanvullende bronnen

Hoe logistische regressie uit te voeren in R
F1-score versus nauwkeurigheid: welke moet u gebruiken?

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert