ML Atlas

Machine Learning von Grund auf · Lektion 2.2 · 9 von 33 fertigen Lektionen · 10 Min.

Einen Klassifikator bewerten: mehr als Genauigkeit

Kurz gesagt

Die Genauigkeit verschweigt, welche Fehler ein Modell macht. Konfusionsmatrix, Präzision und Recall zeigen den Zielkonflikt, den ein Schwellenwert erzeugt.

Aufwärmen Zwei Fragen aus früheren Lektionen. Eine Minute, und sie blockiert die Lektion nicht.
Aus Lektion 2.1: Klassifikation: eine Grenze ziehen Was gibt die logistische Regression aus, bevor ein Schwellenwert angewendet wird?

Antwort anzeigen

Richtige Antwort: Eine Wahrscheinlichkeit zwischen 0 und 1 für eine der Klassen

Die Sigmoidfunktion macht aus der gewichteten Summe eine Wahrscheinlichkeit, und der Schwellenwert macht aus der Wahrscheinlichkeit eine Entscheidung.

Aus Lektion 1.6: Gradientenabstieg: Lernen in kleinen Schritten Der Verlust steigt mit jedem Schritt weiter. Was ist die wahrscheinlichste Ursache?

Antwort anzeigen

Richtige Antwort: Die Lernrate ist zu groß, sodass jeder Schritt über das Minimum hinausschießt

Mit zu großen Schritten springen die Parameter jedes Mal über das Tal hinweg auf einen höheren Punkt, und der Fehler wächst.

Ein Rauchmelder, der nie piept, löst nie einen falschen Feueralarm aus. Ein Rauchmelder, der bei jedem Toast losschrillt, verpasst nie ein echtes Feuer. Welcher ist der bessere? Keiner von beiden – und eine einzelne Genauigkeitszahl würde dir nicht einmal verraten, welchen du hast. In dieser Lektion geht es darum, Fehler so zu zählen, dass ihre Art sichtbar wird, nicht nur ihre Anzahl. Probier es zuerst selbst aus, bevor du die Erklärung liest.

Erst vorhersagen, dann prüfen Du willst mindestens 95 % der bösartigen Tumoren finden (Recall von mindestens 95 %). Welches ist die höchste Schwelle am Regler, die das schafft?
Wie sicher bist du?

Interaktives Labor

Dieses interaktive Labor läuft im Browser mit aktiviertem JavaScript. Der Text drumherum beschreibt, was es zeigt.

Antwort anzeigen

Richtige Antwort: 0,1

Bei der Schwelle 0,1 liegt der Recall bei 96,9 % (62 von 64 bösartigen Tumoren gefunden), bei 0,2 nur noch bei 92,2 % und bei 0,5 bei 82,8 %. Dafür zahlst du mit Fehlalarmen: 20 gesunde Biopsien werden bei 0,1 als bösartig markiert, bei 0,5 nur 3.

Probier es aus

  • Schieb den Schwellenwert-Regler nach links. Beobachte, wie die falsch Negativen in der Konfusionsmatrix schrumpfen und die falsch Positiven wachsen, und wie sich Recall und Präzision in entgegengesetzte Richtungen bewegen.
  • Schieb den Schwellenwert-Regler nach rechts und sieh zu, wie das Gegenteil passiert. Behalte die Genauigkeit im Blick: Verrät sie dir, welche Art von Fehler du machst?
  • Finde den höchsten Schwellenwert, bei dem kein bösartiger Tumor übersehen wird. Lies ab, wie viele gutartige Tumoren dort fälschlich markiert werden.
  • Wähl den Schwellenwert, den du für einen Vorsorgetest nehmen würdest, und begründe ihn in einem Satz.

Die Idee in einfachen Worten

Zurück zu den 569 Brusttumoren aus Lektion 1. Ein Modell gibt jedem Tumor eine Punktzahl: Je höher sie ist, desto wahrscheinlicher ist er bösartig. Ein Schwellenwert macht aus der Punktzahl eine Entscheidung. Jede Entscheidung landet dann in einem von vier Feldern:

vorhergesagt bösartigvorhergesagt gutartig
tatsächlich bösartigrichtig positiv (TP)falsch negativ (FN)
tatsächlich gutartigfalsch positiv (FP)richtig negativ (TN)

Diese Tabelle ist die Konfusionsmatrix (Wahrheitsmatrix). Auf der Diagonale stehen die richtigen Entscheidungen. Die beiden anderen Felder enthalten zwei sehr verschiedene Fehlerarten: Ein falsch Positiver ist ein Fehlalarm (eine gesunde Patientin wird zu weiteren Untersuchungen geschickt), ein falsch Negativer ist ein Übersehen (ein Krebs wird nach Hause geschickt).

Der Rauchmelder bringt es auf den Punkt. Der stumme Melder hat keine falsch Positiven und jede Menge falsch Negative. Der Toast-Melder hat es umgekehrt. Ein guter Melder gleicht beides danach aus, was jeder Fehler kostet.

Warum es funktioniert

Zwei Zahlen fassen die Matrix viel besser zusammen als die Genauigkeit:

Präzision = TP / (TP + FP) Recall = TP / (TP + FN)

Der Recall (Sensitivität, Trefferquote) beantwortet: Welchen Anteil aller bösartigen Tumoren haben wir erwischt? Die Präzision beantwortet: Welcher Anteil der Tumoren, die wir bösartig genannt haben, war es wirklich? Beim Recall geht es darum, nichts zu übersehen; bei der Präzision darum, nicht ständig falschen Alarm zu schlagen.

Der Schwellenwert steuert den Zielkonflikt zwischen beiden. Senkst du ihn, werden mehr Tumoren als bösartig markiert: Du erwischst mehr Krebsfälle (der Recall steigt), markierst aber auch mehr gutartige Tumoren (die Präzision sinkt meist). Erhöhst du ihn, passiert das Gegenteil. Kein Schwellenwert kann beide maximieren, es sei denn, das Modell trennt die Klassen perfekt. Einen Schwellenwert zu wählen ist daher kein technisches Detail, sondern eine Wertentscheidung: Wie viele Fehlalarme nimmst du in Kauf, um einen übersehenen Krebs zu vermeiden?

Die Genauigkeit vermischt alle vier Felder zu einer Zahl und verdeckt diese Wahl. Sie verdeckt auch unausgewogene Klassen. Da 357 der 569 Tumoren gutartig sind, liegt ein Modell, das alles für gutartig erklärt, in fast zwei Dritteln der Fälle richtig und erwischt dabei keinen einzigen Krebs – Recall null. Das ist das Genauigkeitsparadoxon: Ein Modell kann nach Genauigkeit ordentlich aussehen und für seinen eigentlichen Zweck nutzlos sein.

Häufiger Fehler

Der häufigste Fehler ist, nur die Genauigkeit zu berichten, besonders bei unausgewogenen Daten, in denen eine Klasse viel seltener ist als die andere. Der zweite ist, den Standard-Schwellenwert von 0,5 zu behalten, ohne zu fragen, was die Fehler kosten. Ein Vorsorgetest, bei dem ein Übersehen tödlich sein kann und ein Fehlalarm eine zusätzliche Untersuchung bedeutet, sollte meist einen niedrigeren Schwellenwert haben als ein Test, der eine Operation auslöst. Eine dritte Falle ist, Präzision und Recall zu verwechseln; sich die Fragen zu merken, die sie beantworten – „von denen, die ich markiert habe“ gegenüber „von denen, die es gibt“ –, hilft mehr als das Auswendiglernen von Formeln.

Bisher haben wir Modelle auf festen Testdaten bewertet. Aber ein Modell kann auf den Daten, aus denen es gelernt hat, glänzen und auf allem anderen versagen. In der nächsten Lektion lassen wir genau das absichtlich geschehen: Überanpassung.

Finde den Fehler der KI

So hat ein Chatbot geantwortet. Ein Satz ist inhaltlich falsch. Welcher?

Frage: Bei der Schwelle 0,1 findet mein Tumorklassifikator 62 der 64 bösartigen Tumoren, markiert aber auch 20 gutartige. Wie soll ich das lesen?

Antwort des Chatbots

Falschen Satz zeigen

Der falsche Satz: Und da die Präzision der Anteil aller bösartigen Tumoren ist, die das Modell erwischt, ist sie hier genauso hoch.

Das ist die Definition des Recalls. Die Präzision beantwortet die andere Frage – von den markierten Tumoren, wie viele wirklich bösartig sind – und bei der Schwelle 0,1 drücken die 20 Fehlalarme sie nach unten, während es bei 0,5 nur 3 sind.

Quiz

Drei Fragen zur Selbstkontrolle. Wähle eine Antwort oder klappe die Lösung unter der Frage auf. Mit der Tastatur: Pfeiltasten wählen, Enter oder Leertaste bestätigt.

1. Ein Screening-Modell übersieht viele Krebsfälle, schlägt aber fast nie falschen Alarm. Welche Zahl ist niedrig?
Antwort anzeigen

Richtige Antwort: Der Recall, also der Anteil entdeckter Krebsfälle an allen tatsächlichen Krebsfällen

Der Recall ist der Anteil der tatsächlich Positiven, die erwischt wurden, also bedeuten viele Übersehene einen niedrigen Recall.

2. Du senkst den Entscheidungs-Schwellenwert. Was passiert normalerweise?
Antwort anzeigen

Richtige Antwort: Der Recall steigt und die Präzision sinkt

Ein niedrigerer Schwellenwert markiert mehr Fälle als positiv, erwischt mehr richtig Positive, fügt aber auch falsch Positive hinzu.

3. Warum kann die Genauigkeit bei den Tumordaten in die Irre führen?
Antwort anzeigen

Richtige Antwort: Gutartige sind in der Mehrheit, daher kann ein Modell gut abschneiden und jeden Krebs übersehen

Bei unausgewogenen Klassen bringt schon die Mehrheitsantwort allein eine ansehnliche Genauigkeit und einen Recall von null.

Das Wichtigste

  • Die Konfusionsmatrix teilt Entscheidungen in richtig und falsch Positive und Negative auf.
  • Der Recall ist der Anteil erwischter tatsächlich Positiver; die Präzision der Anteil echter Fälle unter den markierten.
  • Der Schwellenwert tauscht Recall gegen Präzision, und die richtige Balance hängt von den Kosten jedes Fehlers ab.
  • Die Genauigkeit verdeckt die Art der Fehler und kann bei unausgewogenen Daten gut aussehen, obwohl jeder Positive übersehen wird.

Tiefer: Formel, Code, Praxis

Die Mathematik

Eine Schwelle t macht aus einem Score eine Entscheidung: Sage bösartig voraus, wenn score ≥ t. Das Zählen der vier Felder ergibt die Kennzahlen:

  • accuracy = (TP + TN) / n, der Anteil aller Entscheidungen, die richtig sind;
  • precision = TP / (TP + FP), der Anteil der Alarme, die echt sind;
  • recall = TP / (TP + FN), der Anteil der echten Fälle, die gefunden wurden;
  • F1 = 2 · precision · recall / (precision + recall), das harmonische Mittel der beiden, das niedrig bleibt, wenn eines von beiden niedrig ist.

Wenn man t senkt, können nur Alarme hinzukommen, TP und FP fallen also nie und FN steigt nie. Deshalb fällt der Recall nie, wenn t sinkt, die Präzision dagegen meistens. Ein Modell, das immer „gutartig“ antwortet, hat TP = 0, also Recall 0, und seine Genauigkeit ist nur der Anteil der Mehrheitsklasse: 357 / 569.

Im Code (Python)

Die 569 Tumoren aus der Lektion, mit den 10 „mean“-Merkmalen des Labs, einer skalierten logistischen Regression und einer stratifizierten Testaufteilung mit 30 % (171 Biopsien, random_state=1). Die eigenen Zahlen des Labs (TP / FN / FP) sind 53 / 11 / 3 bei Schwelle 0,5 und 62 / 2 / 20 bei 0,1. Diese Aufteilung ist nicht die des Labs, deshalb weichen die Zahlen etwas ab:

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, b = load_breast_cancer(return_X_y=True, as_frame=True)
X = X.filter(like="mean ")  # die 10 „mean“-Merkmale, wie im Lab
y = 1 - b  # in sklearn gilt 0 = bösartig; umdrehen, sodass 1 = bösartig
print(f"tumours {len(y)}, benign {(y == 0).sum()}, always-benign accuracy {(y == 0).mean():.3f}")
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.3, stratify=y, random_state=1)
score = make_pipeline(StandardScaler(), LogisticRegression()).fit(Xtr, ytr).predict_proba(Xte)[:, 1]
for t in (0.5, 0.1):
    flag = score >= t
    tp, fp, fn = (flag & (yte == 1)).sum(), (flag & (yte == 0)).sum(), (~flag & (yte == 1)).sum()
    print(f"t={t}: TP {tp} FN {fn} FP {fp} precision {tp / (tp + fp):.3f} recall {tp / (tp + fn):.3f}")

Ausgabe

tumours 569, benign 357, always-benign accuracy 0.627
t=0.5: TP 53 FN 11 FP 2 precision 0.964 recall 0.828
t=0.1: TP 61 FN 3 FP 13 precision 0.824 recall 0.953

Bei 0,5 beträgt der Recall hier 0,828, wie im Lab, bei 0,1 aber 0,953 gegenüber 96,9 % im Lab, und die Fehlalarme sind 13 statt 20. Der Recall schwankt von Aufteilung zu Aufteilung, genau darum geht es in Lektion 2. Wenn man die Schwelle von 0,5 auf 0,1 senkt, steigt der Recall trotzdem und die Präzision sinkt, wie die Lektion sagt. Die Baseline „immer gutartig“ sieht nach Genauigkeit ordentlich aus und findet keinen einzigen Krebsfall.

Für die Praxis
  • Gib Präzision und Recall (oder die ganze Konfusionsmatrix) neben der Genauigkeit an und sage immer, welche Klasse „positiv“ ist.
  • Wähle die Schwelle auf Validierungsdaten aus den Kosten jedes Fehlers, nicht aus Gewohnheit. Die Standardschwelle 0,5 ist nur eine Konvention.
  • Berechne immer die Baseline, die Mehrheitsklasse vorherzusagen. Liegt deine Genauigkeit nahe daran, hat das Modell wenig gelernt.
  • Recall und Präzision bei einer Schwelle sind ein Punkt einer Kurve. Um zwei Modelle fair zu vergleichen, vergleiche sie beim selben Recall oder schau dir die ganze Precision-Recall-Kurve an.
  • Ein Score ist nur eine Rangfolge, solange er nicht kalibriert ist. Lies 0,3 nicht als „30 % Wahrscheinlichkeit“, ohne die Kalibrierung zu prüfen.

Mehr im Atlas

Einträge der Enzyklopädie zu den Ideen dieser Lektion: