Confusion Matrix
Eine Konfusionsmatrix zählt die Vorhersagen eines Modells im Vergleich zu den tatsächlichen Bezeichnungen für jede Klasse. Hier erfährst du, wie du sie liest, welche Metriken sie liefert und wie sie bei der Objekterkennung aussieht.
Eine Konfusionsmatrix ist eine Tabelle, die zählt, wie gut die Vorhersagen eines Klassifikationsmodells mit den wahren Labels übereinstimmen. Eine Achse listet die tatsächlichen Klassen auf, die andere die vorhergesagten Klassen, und jede Zelle zählt die Beispiele, die zu diesem Klassenpaar gehören. Korrekte Vorhersagen liegen auf der Diagonalen; jeder Fehler liegt außerhalb davon, und zwar in der Zelle, die genau angibt, welche Klasse mit welcher verwechselt wurde. Die Konfusionsmatrix ist damit die übliche erste Übersicht über die Fehler eines Modells und die Grundlage für Genauigkeit, Präzision, Recall und den F1-Score.
Eine binäre Konfusionsmatrix lesen#
Bei zwei Klassen hat die Matrix vier Zellen:
- Richtig-positive Ergebnisse (TP): Positive Beispiele, die als positiv vorhergesagt werden, etwa ein defektes Bauteil, das als defekt markiert wird.
- Falsch-positive Ergebnisse (FP): Negative Beispiele, die als positiv vorhergesagt werden; auch Fehler vom Typ I oder Fehlalarme genannt.
- Falsch-negative Ergebnisse (FN): Positive Beispiele, die als negativ vorhergesagt werden; auch Fehler vom Typ II oder übersehene Fälle genannt.
- Richtig-negative Ergebnisse (TN): Negative Beispiele, die als negativ vorhergesagt werden.
Die meisten binären Metriken sind Verhältnisse dieser vier Zählwerte. Die Präzision ist TP / (TP + FP), der Recall ist TP / (TP + FN) und die Genauigkeit ist (TP + TN) geteilt durch die Summe aller vier Werte. Welche Zelle außerhalb der Diagonalen wichtiger ist, hängt von der Anwendung ab: Bei einem Krebsscreening soll die Zahl falsch-negativer Ergebnisse gering bleiben, bei einem Spamfilter die Zahl falsch-positiver Ergebnisse.
Konfusionsmatrizen für mehrere Klassen#
Bei N Klassen hat die Matrix die Größe N × N. In der von scikit-learn's confusion_matrix verwendeten Anordnung entspricht jede Zeile einer wahren Klasse und jede Spalte einer vorhergesagten Klasse. Liest du eine Zeile, siehst du, wo die Beispiele dieser Klasse gelandet sind. Die Diagonalzelle geteilt durch die Zeilensumme ergibt daher den Recall der Klasse. Liest du eine Spalte, siehst du, was die Vorhersagen des Modells für diese Klasse tatsächlich waren. Die Diagonalzelle geteilt durch die Spaltensumme ergibt daher die Präzision der Klasse. Manche Werkzeuge stellen die Matrix transponiert dar; deshalb bestimmen die Achsenbeschriftungen, wie ein Diagramm zu lesen ist.
from sklearn.metrics import confusion_matrix
# Wahre und vorhergesagte Labels für 10 Bilder
y_true = ["cat", "cat", "cat", "dog", "dog", "dog", "dog", "fox", "fox", "fox"]
y_pred = ["cat", "cat", "dog", "dog", "dog", "dog", "cat", "fox", "dog", "fox"]
# Die Zeilen entsprechen den wahren Klassen und die Spalten den vorhergesagten Klassen, in dieser Label-Reihenfolge
labels = ["cat", "dog", "fox"]
matrix = confusion_matrix(y_true, y_pred, labels=labels)
print(matrix)Die ausgegebenen Zeilen für cat, dog und fox lauten [2 1 0], [1 3 0] und [0 1 2]. Die Diagonale enthält 7 der 10 Bilder, daher beträgt die Genauigkeit 0.7. In der Spalte für dog stehen eine cat- und eine fox-Vorhersage; damit beträgt die Präzision für dog 3 / 5 = 0.6. In der Zeile für dog ist ein Bild als cat fehlklassifiziert; damit beträgt der Recall für dog 3 / 4 = 0.75. Eine normalisierte Matrix teilt jede Zelle durch die Gesamtzahl der Beispiele ihrer wahren Klasse, sodass die Diagonale den klassenweisen Recall zeigt und Klassen sehr unterschiedlicher Größe vergleichbar werden.
Konfusionsmatrizen für Objekterkennung#
Bei der Objekterkennung kommt eine Hintergrundklasse hinzu, denn ein Detektor kann eine Box an einer Stelle ausgeben, an der sich nichts befindet, oder ein Objekt ganz übersehen. Zunächst werden die Vorhersagen anhand der Schnittmenge über Vereinigungsmenge (IoU) den Labels zugeordnet und dann gezählt: Zugeordnete Paare landen in den Klassenzellen, nicht zugeordnete Vorhersagen zählen als falsch-positive Ergebnisse gegenüber dem Hintergrund und nicht zugeordnete Labels als falsch-negative Ergebnisse mit dem Hintergrund als vorhergesagter Klasse. Die Zelle für Hintergrund zu Hintergrund bleibt leer, da leere Bildbereiche nicht gezählt werden können; daher hat eine Erkennungsmatrix keine richtig-negativen Ergebnisse. Die Validierung von YOLO26 erstellt diese Matrix mit einer zusätzlichen Zeile und Spalte für den Hintergrund. Sie ordnet Vorhersagen Labels zu, wenn die IoU über 0.45 liegt, und speichert die Matrix unter confusion_matrix.png. Dabei stehen die vorhergesagten Klassen auf der vertikalen und die wahren Klassen auf der horizontalen Achse.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validation builds the confusion matrix and saves it as confusion_matrix.png
metrics = model.val(data="coco8.yaml")
matrix = metrics.confusion_matrix.matrix # rows: predicted class, columns: true class
# 80 COCO classes plus one background row and column
print(matrix.shape)
# Class 0 is "person": correct detections and people the model missed
print(f"Person TP: {matrix[0, 0]:.0f}, missed: {matrix[-1, 0]:.0f}")Die Form ist (81, 81), und die letzte Zeile zählt die annotierten Personen, denen keine Vorhersage zugeordnet wurde.
Konfusionsmatrizen und verwandte Werkzeuge#
- ROC-Kurve: ein Punkt pro Entscheidungsschwelle. Jeder Punkt fasst die Konfusionsmatrix dieser Schwelle als Rate richtig-positiver und falsch-positiver Ergebnisse zusammen.
- Mittlere durchschnittliche Präzision (mAP): die zentrale Erkennungsmetrik. Sie basiert auf denselben TP- und FP-Entscheidungen über alle Konfidenzwerte hinweg, zeigt aber nicht, welche Klassen verwechselt werden.
- Genauigkeit: Die Matrix wird auf eine Zahl reduziert: die Summe der Diagonale geteilt durch die Gesamtzahl. Bei einem Datensatz, der zu 95 % aus negativen Beispielen besteht, erreicht ein Modell, das immer „negativ“ vorhersagt, eine Genauigkeit von 95 %, obwohl die Matrix null richtig-positive Ergebnisse zeigt.










