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:
- True Positive: Der Schnelltest klassifiziert die Person als infiziert und ein anschließender PCR-Test bestätigt dieses Ergebnis. Somit war der Schnelltest korrekt.
- 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.
- True Negative: Der Schnelltest ist negativ und die Person ist auch wirklich nicht infiziert.
- 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:
Angenommen unser Testset für die Corona-Schnelltests umfasst 200 Personen, die sich wie folgt auf die einzelnen Zellen aufteilen:
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 Confusion Matrix 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:
\(\) \[\text{Recall} = \frac{\text{True Positive}}{\text{True Positive + False Negative}}\]
Diese Kennzahl wird im Englischen auch als der sogenannte Recall bezeichnet. Sie ist von großer Bedeutung, da in vielen Praxisbeispielen das Modell vor allem daran gemessen wird, ob es die positiven Fälle richtig erkennt. Nehmen wir an, wir trainieren ein Klassifikationsmodell, das anhand von Bildern Krebszellen erkennen soll. In diesem Fall ist es sehr wichtig, dass alle positiven Personen, die also wirklich Krebs haben, erkannt werden, damit man die Krankheit frühzeitig behandeln kann. In diesem Beispiel sind andere Kennzahlen nicht von solch großer Bedeutung, denn es schadet nicht, wenn Personen, die keinen Krebs haben, trotzdem genauer untersucht werden.
Spezifizität
Die Spezifizität, oder auch True Negative Rate, misst alle Fälle in denen negativ klassifizierte Datenpunkte auch tatsächlich negativ waren:
\(\) \[\text{Spezifizität} = \frac{\text{True Negative}}{\text{True Negative + False Positive}}\]
Präzision
Die Präzision ist die relative Häufigkeit von richtig, positiv klassifizierten Probanden:
\(\) \[\text{Präzision} = \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:
\(\) \[\text{Genauigkeit} = \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:
\(\) \[\text{Fehlerrate} = \frac{\text{False Positive + False Negative}}{\text{True Positive + True Negative + False Positive + False Negative}}\]
Was ist der Unterschied zwischen der Genauigkeit und der Präzision?
Auf den ersten Blick sehen die Formeln für die Genauigkeit und Präzision relativ ähnlich aus, jedoch messen sie leicht unterschiedliche Umstände. Ein gutes Machine Learning Modell muss nach dem Training gute Vorhersage für neue, ungesehene Daten liefern. Jedoch ist ein solches Modell nur dann wertvoll, wenn es sehr oft gute Vorhersagen liefert und die guten Ergebnisse nicht nur selten auftreten. Diese Eigenschaften lassen sich mit der Genauigkeit und Präzision messen.
Die Genauigkeit misst, wie nahe die Vorhersagen an den gewünschten Werten liegt. Bei einer Klassifikation bedeutet das also, wie oft die vorhergesagte Klasse auch der tatsächlichen entspricht. Die Präzision hingegen misst, wie scharf die Ergebnisse sind, das heißt, wie reproduzierbar die Ergebnisse sind. Konkret bedeutet dies, wie nahe die Ergebnisse für ähnliche Eigenschaftswerte beeinander liegen. Dies gibt eine Aussage über die Reproduzierbarkeit von Ergebnissen da ein Modell nicht wirklich brauchbar ist, wenn es für denselben bei zwei Vorhersagen zwei sehr unterschiedliche Werte liefert.
Was ist das F-Maß?
Der F-Score, auch F1-Score genannt, ist eine im maschinellen Lernen und in der Datenanalyse weit verbreitete Metrik zur Bewertung der Leistung von Klassifizierungsmodellen. Er ist ein Maß für die Präzision und den Recall eines Modells, wobei die Präzision den Anteil der wahrhaft positiven Ergebnisse an allen vorhergesagten positiven Ergebnissen und der Recall den Anteil der wahrhaft positiven Ergebnisse an allen tatsächlich positiven Ergebnissen angibt.
Der F-Score ist ein gewichtetes harmonisches Mittel aus Precision und Recall und liefert eine einzige Zahl, die die Leistung eines Modells in Bezug auf Precision und Recall zusammenfasst. Der F-Score reicht von 0 bis 1, wobei ein höherer Wert für eine bessere Modellleistung steht. Der F1-Score wird häufig in Situationen verwendet, in denen ein Ungleichgewicht zwischen der Anzahl positiver und negativer Beispiele in den Daten besteht, da er eine ausgewogene Bewertung der Leistung eines Modells unabhängig von der Klassenverteilung liefert.
\(\) \[\text{F-Score} = \frac{2 \cdot \text{Recall} \cdot \text{Precision}}{\text{Recall} + \text{Precision}}\]
Durch die Nutzung des sogenannten harmonischen Mittels, und nicht des klassischen arithmetischen Mittel, wird sichergestellt, dass Extremwerte einer der beiden Größen deutlich stärker bestraft werden.
Was ist Supervised Learning?
Supervised Learning Algorithmen nutzen Datensätze, um aus den Inputs Zusammenhänge zu lernen und aus diesen dann die gewünschte Vorhersage zu treffen. Im Optimalfall sind die Vorhersage und das Label aus dem Datensatz identisch. Der Trainingsdatensatz enthält Inputs und bereits die korrekten Outputs dafür. Diese kann das Modell nutzen, um in mehreren Iterationen daraus zu lernen. Die Genauigkeit wiederum gibt an, wie oft der richtige Output aus den gegebenen Inputs vorhergesagt werden konnte. Diese wird mithilfe der Verlustfunktion berechnet und der Algorithmus versucht sie so lange zu minimieren, bis ein zufriedenstellendes Ergebnis erreicht wurde.
Supervised Learning lässt sich in zwei grobe Kategorien unterteilen:
- Klassifizierung wird genutzt, um neue Datenobjekte einer oder mehreren vordefinierten Kategorien zuzuordnen. Das Modell versucht aus den Inputs Zusammenhänge zu erkennen, die für die Zuordnung zu einer Kategorie sprechen. Ein Beispiel hierfür sind Bilder, die erkannt und dann einer Klasse zugeordnet werden sollen. Das Modell kann dann für ein Bild beispielsweise vorhersagen, ob darin ein Hund zu erkennen ist oder nicht.
- Regressionen erklären den Zusammenhang zwischen den Inputs, den sogenannten unabhängigen Variablen, und den Outputs, also den abhängigen Variablen. Wenn wir beispielsweise den Umsatz eines Unternehmens vorhersagen wollen und die Marketingaktivität und den Durchschnittspreis des Vorjahres haben, kann die Regression Aufschluss darüber geben, wie hoch der Einfluss der Marketinganstrengungen auf den Umsatz ist.
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.
- Die Konfusionsmatrix 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.
Was ist das No-Free-Lunch Theorem (NFLT)?
Entschlüsselung des No-Free-Lunch-Theorems: Implikationen und Anwendungen in ML und Optimierung.
Was ist Automated Data Labeling?
Erschließen Sie die Effizienz des maschinellen Lernens mit Automated Data Labeling. Entdecken Sie die Vorteile, Techniken und Tools.
Was ist die Synthetische Datengenerierung?
Verbessern Sie Ihr Datenmanagement mit synthetische Datengenerierung. Gewinnen Sie neue Erkenntnisse und schließen Sie Datenlücken.
Was ist Multi-Task Learning?
Steigern Sie die Effizienz von ML mit Multi-Task-Learning. Erforschen Sie die Auswirkungen auf verschiedene Bereiche & Anwendungen.
Was ist Federated Learning?
Entdecken Sie das Federated Learning. Zusammenarbeit, Sicherheit und Innovation unter Wahrung der Privatsphäre.
Was ist Adagrad?
Entdecken Sie Adagrad: Der Adaptive Gradientenabstieg für die effiziente Optimierung von maschinellem Lernen.
Andere Beiträge zum Thema Konfusionsmatrix
- In folgendem Link findest Du die Dokumentation zur Konfusionsmatrix in Scikit-Learn.