F1-Score
Der F1-Score ist das harmonische Mittel aus Präzision und Trefferquote. Er bleibt daher niedrig, wenn nicht beide Werte hoch sind. Formel, F-Beta, Makro- vs. Mikro-F1 und Einsatz bei der Detektion.
Der F1-Score ist eine einzelne Kennzahl, die Präzision und Recall als harmonisches Mittel zusammenfasst: F1 = 2 × Präzision × Recall / (Präzision + Recall). Sie reicht von 0 bis 1 und erreicht den Wert 1 nur dann, wenn ein Modell weder falsch positive noch falsch negative Ergebnisse liefert. Das harmonische Mittel nähert sich stärker dem kleineren der beiden Werte an, sodass der F1-Score niedrig bleibt, sobald entweder die Präzision oder der Recall niedrig ist; deshalb ist er die übliche zusammenfassende Kennzahl für Probleme mit unausgewogener Klassenverteilung wie Defekterkennung, Betrugsprüfung und die Dokumentensuche, bei denen Genauigkeit irreführend ist. Der F1-Score wird auch als ausgewogener F-Score oder als F-Maß bezeichnet und entspricht bei binären Pixelmasken dem Dice-Koeffizienten.
So wird der F1-Wert berechnet#
Ausgedrückt durch die Werte der Konfusionsmatrix lautet die Formel: F1 = 2TP / (2TP + FP + FN). Richtig negative Ergebnisse kommen in der Formel nicht vor, daher misst der F1-Wert nur, wie gut das Modell mit der positiven Klasse umgeht. Das eignet sich für Aufgaben, bei denen positive Fälle selten und negative Fälle wenig relevant sind. Wenn richtig negative Ergebnisse wichtig sind, berücksichtigen der Matthews-Korrelationskoeffizient oder die balancierte Genauigkeit alle vier Felder. Das harmonische Mittel unterscheidet den F1-Wert von einem einfachen Durchschnitt: Bei einer Präzision von 1,0 und einer Trefferquote von 0,1 beträgt der arithmetische Durchschnitt 0,55, der F1-Wert dagegen 0,18.
F-Beta und Mittelung über mehrere Klassen#
Beim F1-Wert werden Präzision und Trefferquote gleich gewichtet. Der allgemeine F-Beta-Wert gewichtet die Trefferquote β-mal so stark wie die Präzision. Daher bevorzugt F2 die Trefferquote, etwa bei der medizinischen Vorsorgeuntersuchung, bei der ein übersehener Fall schwerwiegende Folgen hat. F0,5 bevorzugt dagegen die Präzision, etwa beim Filtern von Spam, bei dem ein Fehlalarm kostspielig ist.
Bei mehr als zwei Klassen wird der F1-Wert für jede Klasse berechnet und anschließend gemittelt:
- Makro-F1: der ungewichtete Mittelwert der Werte pro Klasse. Eine seltene Klasse zählt damit genauso viel wie eine häufige.
- Gewichteter F1-Wert: der Mittelwert der Werte pro Klasse, gewichtet nach der Anzahl der tatsächlichen Beispiele jeder Klasse.
- Mikro-F1: ein einzelner F1-Wert, berechnet aus den über alle Klassen zusammengefassten TP, FP und FN. Bei Mehrklassenaufgaben mit genau einer richtigen Bezeichnung pro Beispiel entspricht er der Genauigkeit.
from sklearn.metrics import f1_score
# Imbalanced inspection labels: 8 good parts, 2 defective parts
y_true = ["ok"] * 8 + ["defect"] * 2
y_pred = ["ok"] * 7 + ["defect"] + ["defect", "ok"]
# F1 for each class, then two ways to average them
per_class = f1_score(y_true, y_pred, labels=["ok", "defect"], average=None)
print(f"F1 ok: {per_class[0]:.3f}, F1 defect: {per_class[1]:.3f}")
print(f"Macro F1: {f1_score(y_true, y_pred, average='macro'):.3f}")
print(f"Micro F1: {f1_score(y_true, y_pred, average='micro'):.3f}")Das Skript gibt für gute Teile einen F1-Wert von 0,875 und für Fehler einen Wert von 0,500 aus, außerdem einen Makro-F1-Wert von 0,688 und einen Mikro-F1-Wert von 0,800. Das Modell klassifiziert 8 von 10 Teilen korrekt, daher entspricht der Mikro-F1-Wert seiner Genauigkeit von 0,80. Der Makro-F1-Wert ist niedriger, weil die schwache Fehlerklasse genauso stark zählt wie die Mehrheitsklasse.
F1 bei der Objekterkennung#
Ein Detektor hat bei jeder Konfidenzschwelle eine Präzision und Trefferquote und somit eine F1-Kurve über den Konfidenzwerten. Der Höchstpunkt dieser Kurve kennzeichnet die Konfidenzschwelle, die falsche Erkennungen und übersehene Objekte am besten ausbalanciert: den einzelnen Betriebspunkt, bei dem ein bereitgestelltes Modell ausgeführt wird. Der F1-Wert ergänzt die mittlere durchschnittliche Präzision (mAP), die Modelle über alle Schwellen hinweg bewertet. Bei der Validierung von YOLO26 wird diese Kurve als BoxF1_curve.png gespeichert. Außerdem werden Präzision, Trefferquote und der F1-Wert pro Klasse bei der Konfidenzschwelle ausgegeben, an der der mittlere F1-Wert seinen Höchststand erreicht.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validation sweeps confidence thresholds and saves BoxF1_curve.png
metrics = model.val(data="coco8.yaml")
# Precision, recall, and F1 at the confidence where mean F1 peaks
print(f"Precision: {metrics.box.mp:.3f}")
print(f"Recall: {metrics.box.mr:.3f}")
print(f"Mean F1: {metrics.box.f1.mean():.3f}")Der mittlere F1-Wert ist der Durchschnitt der F1-Werte pro Klasse und kann sich daher leicht vom harmonischen Mittel der darüber ausgegebenen mittleren Präzision und Trefferquote unterscheiden.










