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?