Direkt zum Inhalt

F1-Score im maschinellen Lernen: Eine ausgewogene Metrik für Präzision und Recall

Verstehe, wie der F1-Score die Modellleistung durch die Kombination von Präzision und Recall bewertet. Lerne seine Verwendung in der binären und Mehrklassenklassifizierung anhand von Python-Beispielen kennen.
Aktualisierte 12. Nov. 2025  · 6 Min. Lesezeit

Beim Erstellen von ML-basierten Modellen ist es genauso wichtig, die Leistung eines Modells zu checken wie es zu trainieren. Genauigkeit ist zwar oft die Standardmetrik, kann aber irreführend sein, vor allem bei unausgewogenen Datensätzen, bei denen eine Klasse die Daten dominiert. 

Der F1-Score ist der harmonische Mittelwert aus Präzision und Recall. Es schafft einen Ausgleich zwischen falsch positiven und falsch negativen Ergebnissen und liefert eine genauere Messung der Modellleistung.

Bei Sachen wie Betrugserkennung, medizinischer Diagnose, Spam-Filterung und Fehlererkennung reicht Genauigkeit allein nicht aus, um das ganze Bild zu zeigen. Ein Modell kann zwar eine hohe Genauigkeit haben, aber wenn es seltene kritische Fälle nicht erkennt, kann es mehr schaden als nützen. Der F1-Score deckt dieses Risiko ab. Wenn du dich mit Bewertungsmetriken noch nicht so gut auskennst, solltest du dir vielleicht erst mal die Grundlagen in „Machine Learning Fundamentals in Python“ anschauen, bevor wir weitermachen.

Was ist der F1-Score?

Der F1-Score zeigt an, wie gut die Genauigkeit und der Rückruf eines Modells zusammenpassen. Der Wert liegt zwischen 0 und 1, wobei 1 für perfekte Genauigkeit und Wiederauffindbarkeit steht und 0 für schlechte Leistung.

  • Präzision hilft dabei, zu messen, wie viele der positiven Vorhersagen des Modells tatsächlich eingetroffen sind.
  • Der Recall ist super, um zu checken, wie viele von allen echten Positiven vom Modell richtig erkannt wurden. 

Der F1-Score macht aus beidem eine einzige Zahl und bestraft Modelle, die bei einem gut abschneiden, beim anderen aber nicht. Zum Beispiel könnte jemand, der sich super erinnert, aber nicht so genau ist, alle positiven Fälle richtig erkennen, aber zu viele falsche positive Ergebnisse liefern. Die F1-Maßnahme stellt sicher, dass beide Maßnahmen zusammen durchgeführt werden. 

F1-Punktformel und Erklärung

Die Formel für den F1-Score lautet:

F1-Score-Formel

Wo Präzision so definiert ist:

genaue Formel

Und die Formel für die Erinnerung lautet:

Rückrufformel

Hier bedeutet TP = True Positives (echte Positive), FP = False Positives (falsche Positive) und FN = False Negatives (falsche Negative).

Man nimmt den harmonischen Mittelwert statt dem arithmetischen Mittelwert, weil der erstere große Unterschiede stärker bestraft. Wenn die Genauigkeit hoch, aber die Trefferquote niedrig ist (oder umgekehrt), sinkt der F1-Score deutlich, was ein Ungleichgewicht zeigt.

F1-Punktestand vs. Genauigkeit

Die Genauigkeit bestimmt, wie viele Vorhersagen von allen richtig sind:

Obwohl Genauigkeit für klassenausgeglichene Datensätze gut ist, kann sie bei klassenungleichen Problemen irreführend sein.

Beispiel:

Wenn ein Spam-Filtersystem 90 % Spam- und 10 % Nicht-Spam-Nachrichten enthält, erreicht ein einfacher Klassifikator, der alle E-Mails als „Spam” einstuft, eine Genauigkeit von 90 %, klassifiziert aber Nicht-Spam-E-Mails nie richtig. Das bringt in der Praxis nichts.

Hier ist der F1-Wert genauer, weil er die Kosten von falsch positiven und falsch negativen Ergebnissen berücksichtigt, was bei der Genauigkeit nicht der Fall ist.

F1-Score für binäre und mehrklassige Klassifizierung

Binäre Klassifizierung

Bei der binären Klassifizierung wird der F1-Score im Verhältnis zur positiven Klasse berechnet. Bei medizinischen Tests könnte die positive Klasse zum Beispiel „Krankheit vorhanden“ bedeuten.

Mehrklassenklassifizierung

Bei Multiklassenproblemen werden die F1-Wertemit Hilfe von Mittelwertbildungsmethoden erweitert:

Methode

Beschreibung

Best für

Macro

Berechnet F1 für jede Klasse einzeln und macht dann den Durchschnitt.

Ausgewogene Datensätze, gleiche Gewichtung für alle Klassen.

Gewichtet

Durchschnittliche F1-Werte, gewichtet nach Klassenunterstützung (Anzahl der Proben pro Klasse).

Unausgewogene Datensätze.

Micro

Sammelt die Beiträge aller Klassen, um einen globalen F1-Wert zu berechnen.

Situationen, in denen die Gesamtleistung wichtiger ist.

Diese Flexibilität macht den F1-Scorefür viele verschiedene Klassifizierungsprobleme einsetzbar.

Wie man den F1-Score in Python berechnet

Die Bibliothek „ scikit-learn “ hat einfache Funktionen, um den F1-Score zu berechnen.

Beispiel für eine binäre Klassifizierung

Fang damit an, ein einfaches binäres Klassifizierungsproblem zu checken, bei dem die Vorhersagen entweder 0 oder 1 sind. Die Funktion „ f1_score() “ berechnet den F1-Score direkt anhand der echten und der vorhergesagten Labels.

from sklearn.metrics import f1_score

# True labels
y_true = [0, 1, 1, 1, 0, 1, 0, 1]

# Predicted labels
y_pred = [0, 1, 0, 1, 0, 1, 1, 1]

# Calculate F1 Score
print("F1 Score:", round(f1_score(y_true, y_pred, average='binary'),2))
F1 Score: 0.8

Beispiel für eine Mehrklassenklassifizierung

Als Nächstes kannst du denselben Ansatz auf Multiklassenprobleme ausweiten, bei denen das Modell mehr als zwei Klassen vorhersagt. Der Parameter „ average “ bestimmt, wie F1-Werte über Klassen hinweg zusammengefasst werden – gängige Optionen sind 'macro' “, 'micro' “ und 'weighted' “.

from sklearn.metrics import f1_score, classification_report

y_true = [0, 1, 2, 2, 0, 1, 2, 1, 2]
y_pred = [0, 2, 1, 2, 0, 0, 2, 1, 2]

# Macro, Micro, Weighted F1
print("Macro F1:", round(f1_score(y_true, y_pred, average='macro'),2))
print("Micro F1:", round(f1_score(y_true, y_pred, average='micro'),2))
print("Weighted F1:", round(f1_score(y_true, y_pred, average='weighted'),2))

# Detailed report
print(classification_report(y_true, y_pred))
Macro F1: 0.65
Micro F1: 0.67
Weighted F1: 0.64
              precision    recall  f1-score   support

           0       0.67      1.00      0.80         2
           1       0.50      0.33      0.40         3
           2       0.75      0.75      0.75         4

    accuracy                           0.67         9
   macro avg       0.64      0.69      0.65         9
weighted avg       0.65      0.67      0.64         9

Wenn wir bei der Multi-Class- oder Multi-Label-Klassifizierung den F1 oder berechnen, müssen wir uns überlegen, wie wir die Scores über verschiedene Klassen hinweg mitteln. Der Parameter „average“ in scikit-learn hat ein paar Optionen:

  • Binär wird bei zwei Klassen benutzt. Wir konzentrieren uns auf die positive Klasse und berechnen hauptsächlich precision, recall und F1 für diese Klasse.

  • Bei der Mikroaggregation werden die Beiträge aller Klassen zusammengefasst und dann gemittelt, um den Durchschnittswert zu berechnen. In der Praxis werden die echten Positiven, falschen Negativen und falschen Positiven über alle Klassen hinweg addiert und dann werden Präzision, Recall und F1 anhand dieser Summen berechnet. Die Mikro-Mittelwertbildung ist super, um die Gesamtleistung zu sehen, egal wie unausgewogen die Klassen sind.

  • Macro: Wir berechnen die Metrik für jede Klasse und machen dann einen ungewichteten Durchschnitt. Das ist keine gleiche Behandlung aller Klassen und daher okay, wenn alle Klassen gleich wichtig sind, auch wenn der Datensatz unausgewogen ist.

  • Gewichtet ist ähnlich wie Makro, aber es gibt nicht jeder Klasse das gleiche Gewicht. Es gewichtet die Punktzahlen nach der Anzahl der echten Instanzen pro Klasse. Das heißt, dass größere Klassen in der Endnote mehr zählen. Gewichtete Durchschnittswerte sind nützlich, wenn wir eine ausgewogene Sichtweise suchen, ohne die Klassenverteilung zu ignorieren.

  • Beispiele: Es wird bei Multi-Label-Problemen benutzt, wo eine Probe zu mehr als einer Klasse gehören kann. Hier wird die Metrik für jede Instanz berechnet und dann über alle Instanzen gemittelt.

Mit diesen Optionen zur Mittelwertbildung können wir den F1- oder Fβ-Score an das jeweilige Problem anpassen. Wenn wir zum Beispiel seltene Krankheiten klassifizieren, bei denen Minderheitenklassen super wichtig sind, wäre Makro oder Fβ, wobei β > 1, genau das Richtige. Wenn wir aber die Genauigkeit über alle Klassen hinweg wollen, dann gibt uns die Mikro- oder gewichtete Mittelwertbildung ein besseres Bild.

Für anspruchsvollere Anforderungen bietet scikit-learn auch „ fbeta_score() “ an, das F1 verallgemeinert. Ein tieferes Verständnis solcher Tools zur maschinellen Lern s ist Teil des Lernpfads als Machine Learning Scientist in Python.

Verallgemeinerung des F1-Scores mit dem Fβ-Score

Der Fβ-Score ist eine Erweiterung des F1-Scores, je nachdem, ob Genauigkeit oder Recall wichtiger ist:

  •  𝛃 > 1 gibt dem Abrufen mehr Gewicht.
  •  𝛃 < 1 legt mehr Wert auf Genauigkeit.

Beispiele

  • Der F2-Score wird in der medizinischen Diagnose benutzt, wo das Übersehen einer Krankheit (falsch negativ) schlimmer ist als ein Fehlalarm.
  • Bei der Spam-Filterung ist ein F0.5-Score besser, weil dort falsche Positive (also richtige E-Mails, die als Spam erkannt werden) mehr Kosten verursachen.

Anwendungsfall: Diabetes erkennen mit F1 vs. Genauigkeit

Nimm mal an, wir haben einen medizinischen Datensatz, in dem nur 5 % der Patienten wirklich Diabetes haben. Ein Modell, das für die Erkennung von Diabetes trainiert wurde, kann eine Genauigkeit von 95 % haben. Aber diese 95 % Genauigkeit kann man leicht erreichen, indem man bei allen Leuten einfach „kein Diabetes“ sagt, was das Modell dann nutzlos macht.

Stattdessen messen wir das Modell mit dem F1-Score.

from sklearn.metrics import f1_score, fbeta_score, confusion_matrix

# Suppose these are results from a diabetes detection model
y_true = [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1]  # true outcomes
y_pred = [0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1]  # model predictions

print("Accuracy:", round((sum([yt == yp for yt, yp in zip(y_true, y_pred)]) / len(y_true)),2))
print("F1 Score:", round(f1_score(y_true, y_pred),2))
print("F2 Score (recall-focused):", round(fbeta_score(y_true, y_pred, beta=2),2))
Accuracy: 0.88
F1 Score: 0.8
F2 Score (recall-focused): 0.71

Warum solltest du dich hier für F1 oder F2 entscheiden?

  • Die Genauigkeit ist wegen der starken Klassenungleichheit irreführend.
  • Der F1-Score stellt sicher, dass sowohl falsch-positive Ergebnisse (falsche Einstufung normaler Patienten als Diabetiker) als auch falsch-negative Ergebnisse (Nichtdiagnose von Diabetes) berücksichtigt werden.

In diesem Fall ist die Erinnerung echt wichtig, weil eine verpasste Diagnose das Leben verändern kann. Der F2-Score ist also passender, weil er dem Recall mehr Gewicht gibt.

Das zeigt, wie die F1-Metrikfamilie in klinischen Anwendungsfällen ein praktischeres und besser nutzbares Maß als die Genauigkeit bietet.

Wichtigste Erkenntnisse

Der F1-Score zeigt uns, dass die Modellbewertung mehr als nur ein Zahlenspiel ist. Es geht echt darum, die Kompromisse hinter jeder Prognose zu verstehen. Das ist wichtig, weil es in der Praxis echt schlimme Folgen haben kann, wenn man einen wichtigen Fall übersieht.

Wenn du weiter Modelle entwickelst und verfeinerst, hilft dir das Entwickeln eines Gespürs für Metriken wie F1 dabei, kontextbewusstere Entscheidungen über die Leistung zu treffen. Wenn du deine Fähigkeiten in der Anwendung dieser Konzepte des maschinellen Lernens auf echte Datensätze vertiefen möchtest, schau dir den Lernpfad „ Scientist mit Python” an. Dort lernst du, wie du Modelle in verschiedenen Anwendungsfällen effektiv bewerten, optimieren und einsetzen kannst.


Vidhi Chugh's photo
Author
Vidhi Chugh
LinkedIn

Ich bin KI-Stratege und Ethiker und arbeite an der Schnittstelle von Datenwissenschaft, Produkt und Technik, um skalierbare maschinelle Lernsysteme zu entwickeln. Als einer der "Top 200 Business and Technology Innovators" der Welt bin ich auf der Mission, das maschinelle Lernen zu demokratisieren und den Fachjargon zu überwinden, damit jeder an diesem Wandel teilhaben kann.

FAQs

Wie wichtig ist der F1-Score beim maschinellen Lernen?

Der F1-Score ist der harmonische Mittelwert aus Präzision (wie viele vorhergesagte positive Ergebnisse richtig waren) und Recall (wie viele tatsächliche positive Ergebnisse erkannt wurden). Es gibt eine einzige Kennzahl, die beide Arten von Fehlern zeigt.

Warum ist der F1-Score bei unausgewogenen Datensätzen besser als die Genauigkeit?

Genauigkeit kann irreführend sein, wenn eine Klasse die Daten dominiert, da ein Modell die Mehrheitsklasse gut vorhersagen kann, bei der Minderheitsklasse aber versagt. Der F1-Score berücksichtigt sowohl falsch-positive als auch falsch-negative Ergebnisse, was in solchen Fällen zu einer faireren Bewertung führt.

Was ist der Unterschied zwischen F1- und Fβ-Werten?

Der F1-Score gewichtet Präzision und Recall gleich, während man mit dem Fβ-Score dieses Gleichgewicht anpassen kann. Zum Beispiel legt F2 mehr Wert auf Recall (nützlich bei der medizinischen Diagnose), während F0.5 die Präzision bevorzugt (nützlich bei der Spam-Erkennung).

Was ist ein guter F1-Wert?

Ein F1-Wert nahe 1 zeigt eine hohe Genauigkeit und Wiederauffindbarkeit an. Was „gut“ ist, hängt vom jeweiligen Bereich ab. Zum Beispiel kann 0,8 im Gesundheitswesen super sein, aber bei der Spam-Erkennung eher schlecht abschneiden.

Wie kann ich den F1-Score in Python berechnen?

Der F1-Score lässt sich ganz einfach mit der Funktion f1_score() von scikit-learn berechnen. Es unterstützt binäre, Multiklassen- und Multilabel-Einstellungen mit einem Durchschnittsparameter für verschiedene Aggregationsstrategien.

Themen

Lerne mit DataCamp

Kurs

Foundations of Probability in R

4 Std.
40.8K
In this course, you'll learn about the concepts of random variables, distributions, and conditioning.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Lernprogramm

Fibonacci-Folge in Python: Lerne und entdecke Programmiertechniken

Finde raus, wie die Fibonacci-Folge funktioniert. Schau dir die mathematischen Eigenschaften und die Anwendungen in der echten Welt an.
Laiba Siddiqui's photo

Laiba Siddiqui

Lernprogramm

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

Lernprogramm

Wie man in Python auf 2 Dezimalstellen rundet

Lerne, wie du in Python eine Zahl auf zwei Dezimalstellen rundest, um die Genauigkeit zu verbessern, indem du Techniken wie round(), format() und String-Formatierungstechniken verwendest.
Allan Ouko's photo

Allan Ouko

Lernprogramm

Python-Lambda-Funktionen: Ein Leitfaden für Anfänger

Lerne mehr über Python-Lambda-Funktionen, wozu sie gut sind und wann man sie benutzt. Enthält praktische Beispiele und bewährte Methoden für eine effektive Umsetzung.
Mark Pedigo's photo

Mark Pedigo

Lernprogramm

Python-Cache: Zwei einfache Methoden

Lerne, wie du Dekoratoren wie @functools.lru_cache oder @functools.cache benutzt, um Funktionen in Python zwischenzuspeichern.
Stephen Gruppetta's photo

Stephen Gruppetta

Lernprogramm

Wie man Listen in Python aufteilt: Einfache Beispiele und fortgeschrittene Methoden

Lerne, wie du Python-Listen mit Techniken wie Slicing, List Comprehensions und itertools aufteilen kannst. Finde heraus, wann du welche Methode für die beste Datenverarbeitung nutzen solltest.
Allan Ouko's photo

Allan Ouko

Mehr anzeigenMehr anzeigen