Zum Inhalt springen

Was ist die Konfusionsmatrix?

Die Konfusionsmatrix (auch Wahrheitsmatrix oder engl.: Confusion Matrix) ist ein Werkzeug, um die Qualität eines Klassifikationsmodells im Machine Learning zu beurteilen. Sie überprüft, wie viele der Vorhersagen richtiger- oder fälschlicherweise einer Klasse zugeordnet wurden.

Wie beurteilt man eine Klassifikation?

Im einfachsten Fall besteht eine Klassifikation aus zwei Zuständen. Angenommen wir wollen untersuchen, wie gut Corona-Tests den Infektionsstatus eines Patienten wiederspiegeln. In diesem Fall dient der Corona-Test als Klassifikator von insgesamt zwei Zuständen: infiziert oder nicht-infiziert.

Aus diesen zwei Klassen können sich insgesamt vier Zustände ergeben, abhängig davon, ob die Klassifikation des Tests wirklich korrekt war:

  1. True Positive: Der Schnelltest klassifiziert die Person als infiziert und ein anschließender PCR-Test bestätigt dieses Ergebnis. Somit war der Schnelltest korrekt.
  2. False Positive: Der Schnelltest ist für eine Person positiv, jedoch ergibt ein anschließender PCR-Test, dass die Person eigentlich nicht infiziert, also negativ, ist.
  3. True Negative: Der Schnelltest ist negativ und die Person ist auch wirklich nicht infiziert.
  4. False Negative: Der Corona-Schnelltest klassifiziert die getestete Person als gesund, also negativ, jedoch ist die Person infiziert und sollte somit einen positiven Schnelltest haben.

Was ist eine Confusion Matrix?

Die Konfusionsmatrix hilft dabei, die Qualität einer erlernten Klassifikation auswerten und neutral zu bewerten. Des Weiteren lassen sich mithilfe der Wahrheitsmatrix einfacher spezifische Kennzahlen errechnen. Um die Confusion Matrix aufzubauen, benötigt man das Testset des Datensatzes. Der Klassifikator teilt den Datenpunkten die Klassen zu.

Die Matrix setzt sich aus den bereits genannten Fehlertypen zusammen. Die Zeilen sind dabei die vorhergesagten Klassen für das Testset und die Spalten die tatsächlichen Labels des Testset:

Das Bild zeigt den allgemeinen Aufbau der Konfusionsmatrix.
Struktur der Konfusionsmatrix

Angenommen unser Testset für die Corona-Schnelltests umfasst 200 Personen, die sich wie folgt auf die einzelnen Zellen aufteilen:

Das Bild zeigt eine beispielhafte Konfusionsmatrix für den Klassifikator "Corona Schnelltest".
Beispielhafte Konfusionsmatrix für Corona Schnelltest

Konkret ergeben sich aus der Matrix folgende Werte:

  • True Positive = 120: Insgesamt 120 Personen wurden vom Schnelltest als infiziert eingeordnet und tragen das Virus auch wirklich in sich.
  • False Positive = 20: 20 Personen sind laut Schnelltest krank, sind aber in Wirklichkeit gar nicht infiziert.
  • False Negative = 40: 40 Probanden wurden laut Schnelltest negative getestet, sind aber tatsächlich infiziert.
  • True Negative = 20: 20 Personen waren wirklich negativ und der Schnelltest hat dies auch bestätigt.

Die Konfusionsmatrix wird deshalb gerne genutzt, um festzustellen welche Art des Fehlers beim Klassifikator häufig vorkommt. Unser beispielhafter Corona-Schnelltest ist in 70 % der Fälle korrekt ((120 + 20) / 200), was auf den ersten Blick kein schlechter Wert ist. Jedoch kommt in 20 % (40 / 200) aller Fälle ein False Negative Fehler vor. Das bedeutet, dass in 20 % aller Fälle, die Person als gesund ausgewiesen wird, obwohl sie eigentlich krank und ansteckend ist. Im Fall einer Viruskrankheit ist also nicht nur die Genauigkeit entscheidend, sondern auch die False Negative Rate.

Diese Kennzahlen lassen sich aus einer Wahrheitsmatrix sehr einfach ablesen und anschließend berechnen.

Welche Kennzahlen lassen sich aus der Wahrheitsmatrix errechnen?

Da jeder Anwendungsfall andere Kennzahlen in den Vordergrund stellt, haben sich über die Zeit einige dieser Kennzahlen entwickelt. In diesem Kapitel stellen wir die wichtigsten kurz vor.

Sensitivität

Die Sensitivität, oder auch True-Positive-Rate, umschreibt die Fälle in denen positiv klassifizierte Datenpunkte auch tatsächlich positiv waren:

\(\) \[\frac{\text{True Positive}}{\text{True Positive + False Negative}}\]

Spezifizität

Die Spezifizität, oder auch True Negative Rate, misst alle Fälle in denen negativ klassifizierte Datenpunkte auch tatsächlich negativ waren:

\(\) \[\frac{\text{True Negative}}{\text{True Negative + False Positive}}\]

Präzision

Die Präzision ist die relative Häufigkeit von richtig, positiv klassifizierten Probanden:

\(\) \[\frac{\text{True Positive}}{\text{True Positive + False Positive}}\]

Genauigkeit

Die Genauigkeit kennen wir bereits aus anderen Modellarten. Sie umschreibt die insgesamt richtig Klassifizierten im Verhältnis zu allen Klassifzierungen:

\(\) \[\frac{\text{True Positive + True Negative}}{\text{True Positive + True Negative + False Positive + False Negative}}\]

Fehlerrate

Die Fehlerrate ist das Gegenteil der Genauigkeit, also der prozentuale Anteil von Falsch – Klassifizierungen:

\(\) \[\frac{\text{False Positive + False Negative}}{\text{True Positive + True Negative + False Positive + False Negative}}\]

Wie erstellt man eine Confusion Matrix in Python?

Wenn man in Python einen Klassifikator trainiert hat, lässt sich die Wahrheitsmatrix mithilfe des Moduls „Scikit-Learn“ erstellen. Dazu benötigen wir lediglich zwei Arrays mit den vorhergesagten Klassen für das Testset und die tatsächlichen Labels für das Testset. In unserem Fall kann das Klassifikationsmodell zwischen den Klassen „Katze“, „Ameise“ und „Vogel“ unterscheiden. Entsprechend erwarten wir eine Konfusionsmatrix mit drei Reihen und drei Spalten.

# Import Scikit-Learn
from sklearn.metrics import confusion_matrix

# True Labels of Testset
y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]

# Predicted Labels of Testset
y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]


# Create Confusion Matrix
confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])

Out: 
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]], dtype=int64)

Diese Wahrheitsmatrix kann nun auch genutzt werden, um sich daraus die True Positives, False Positives, etc. berechnen zu lassen. Bei einer Klassifikation mit mehr als zwei Klassen kann das von Hand durchaus kompliziert sein.

# Get Figures of a two-class Classification
tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], [1, 1, 1, 0]).ravel()
(tn, fp, fn, tp)

Out: 
(0, 2, 1, 1)

# Get Figures of a multi-class Classification
confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"]).ravel()

Out: 
array([2, 0, 0, 0, 0, 1, 1, 0, 2], dtype=int64)

Das solltest Du mitnehmen

  • Die Konfusionsmatrix hilft bei der Evaluierung von Klassifikationsmodellen.
  • Sie enthält in den meisten Fällen vier Felder: True Positive, True Negative, False Positive und False Negative.
  • Mithilfe der Felder lassen sich spezielle Kennzahlen errechnen, die bei der Beurteilung des Klassifikators helfen.

Andere Beiträge zum Thema Konfusionsmatrix

close
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner