Performance-Metriken des überwachten Lernens für Klassifikationsprobleme

Die Daten wurden aufbereitet, neue Features abgeleitet und verschieden Machine-Learning-Modelle trainiert. Doch wie bewertet man die Performance dieser Modelle? Wie entscheidet man sich z.B. zwischen einem neuronalen Netz, Random Forest oder Gradient Boosting Classifier? Hierfür verwendet man im Machine-Learning-Bereich sogenannte Performance-Metriken. Diese werden auf einem Testdatensatz (Hold-Out Set) evaluiert, welches nicht zum Training des Modells verwendet wurde. Dadurch wird die Performance für neue, vom Modell ungesehene, Daten geschätzt. Doch welche Metriken werden für welches Problem eigentlich verwendet und wann ist die Performance ausreichend?

In diesem Blogbeitrag werden wir verschiedene Performance Metriken für Klassifizierungsprobleme vorstellen und unter Berücksichtigung des Business-Cases interpretieren.

Metriken für Klassifizierungsmodelle

Klassifizierungsmodelle können in verschiedene Kategorien eingeteilt werden: Binäre, Multi-Class, Multi-Label und hierarchische Klassifizierung. Die meisten Performance-Metriken für diese Kategorien lassen sich aus denen der binären Klassifizierung ableiten, weshalb wir uns in diesem Blogbeitrag auf diese beschränken. Der interessierte Leser findet die Ableitungen der Performance-Metriken auf komplexere Klassifizierungsmodelle in [1].
Bei der binären Klassifikationen gibt es genau zwei Klassen, die häufig mit der Zahl 1 für die sog. positive Klasse und der Zahl 0 für die sog. negative Klasse gekennzeichnet werden.

Accuracy

Die wohl einfachste Performance-Metrik für eine Klassifikation ist die Accuracy (Genauigkeit). Diese lässt sich mit der Formel

$$\mathrm{Acc} = \frac{\# \text{correct predictions} }{\# \text{all predictions}}$$

berechnen und gibt den Anteil an richtigen Vorhersagen an. Hat man z.B. 55 richtige Vorhersagen für insgesamt 100 Beobachtungen, dann ist die Genauigkeit 55% und damit nicht viel besser als der Zufall. Letztere Aussage gilt nur dann, wenn die beiden Klassen ausbalanciert sind, d.h. dass im Datensatz ungefähr gleich viele Beobachtungen der Klasse 0 und der Klasse 1 vorliegen. Falls eine der beiden Klassen unter- oder überrepräsentiert ist, dann ist die Accuarcy keine gute Metrik. Ein gutes Beispiel dafür ist die Klassifikation von E-Mails in die Kategorien Spam und kein Spam: Von 100 E-Mails seien zum Beispiel nur 5 E-Mails Spam (Klasse 1). Wenn das Modell immer vorhersagt, dass es sich bei den E-Mails um kein Spam (Klasse 0) handelt, dann ist die Accuracy 95%. Klingt zwar gut, jedoch landen dann trotzdem alle Spam E-Mails im Posteingang. Daher ist die Accuary für solche Fälle nicht geeignet. Für eine genauere Evaluation teilt man die Vorhersagen daher üblicherweise in eine sog. Confusion Matrix auf.

Die Confusion-Matrix

In Tabelle 1 ist die allgemeine Confusion-Matrix dargestellt. Diese beinhaltet als Elemente die Anzahl an korrekten positiven (True Positives TP), korrekten negativen (True Negatives TN), falschen positiven (False Positives FP) und falschen negativen (False Negatives FN) Vorhersagen. Oft wird die Confusion Matrix normiert (siehe Tabelle 2), da es sonst schwierig ist anhand der absoluten Zahlen die Performance einzuschätzen. Die Elemente spiegeln dann die Raten TNR, FPR, FNR und TPR wider. Ein Zahlenbeispiel ist in den jeweiligen Tabellen (unten) aufgeführt. Dort können wir direkt ablesen, dass 23% der Vorhersagen für die positive Klasse und 21% der Vorhersagen für die negative Klasse falsch sind. Diese beiden Fehler werden auch als Typ I- und Typ II-Fehler bezeichnet. Welchen Fehler man reduzieren möchte, hängt stark vom Anwendungsfall des Modells ab. Soll es z.B. als Spam Filter dienen (Spam ist hier die positive Klasse 1), so würde man gerne die Rate der als falsch positiv klassifizierten E-Mails reduzieren (geringe FPR). Denn es ist weitaus dramatischer, wenn eine wichtige E-Mail im Spamordner landet, als wenn eine Spam E-Mail nicht als solche erkannt wird (hohe FNR). Umgekehrte Anforderungen stellen wir z.B. an ein Modell, welches nicht-jugendfreie Filme (Klasse 1) herausfiltern soll. Lieber stellen wir unseren Kindern weniger Filme zur Verfügung (hohe FPR), als dass sie sich nicht-jugendfreie Filme anschauen können (geringe FNR).

Viele weitere Metriken lassen sich mit den Elementen der Confusion Matrix ableiten. Weit verbreitete sind beispielsweise Precison, Recall und F1-Score, welche im folgenden kurz besprochen werden.

Tabelle 1: Confusion Matrix als Performance Metrik für ein binäres Klassifikationsproblem (oben) und Zahlenbeispiel (unten).

Predicted 0Predicted 1
Actual 0TNFP
Actual 1FNTP
Predicted 0Predicted 1
Actual 08322
Actual 11757

Tabelle 2: Normierte Confusion Matrix als Performance Metrik für ein binäres Klassifikationsproblem (oben) und Zahlenbeispiel (unten).

Predicted 0Predicted 1
Actual 0TN/(#all negatives)FP/(#all negatives)
Actual 1FN/(#all positives)TP/(#all positives)
Predicted 0Predicted 1
Actual 00.790.21
Actual 10.230.77

Abgeleitete Metriken aus der Confusion Matrix

Die Precision berechnet sich wie in der unten aufgeführten Gleichung und gibt den Anteil an richtig vorhergesagten positiven Ergebnissen (TP) bezogen auf die Gesamtheit aller als positiv vorhergesagten Ergebnisse (P*) an. Zum Beispiel sollte beim Spam Filter die Precision sehr hoch sein, da wichtige E-Mails besser nicht als Spam (Klasse 1) klassifiziert werden sollten. Anders ist es bei einer Kindersicherung: Es ist nicht so schlimm, falls einige jugendfreie Filme (Klasse 0) auch als nicht-jugendfrei (Klasse 1) klassifiziert werden.

$$\mathrm{Precision} = \frac{\mathrm{TP}}{\mathrm{TP} + \mathrm{FP}} = \frac{\mathrm{TP}}{\mathrm{P}^*}$$

$$\mathrm{Recall} = \frac{\mathrm{TP}}{\mathrm{TP} +\mathrm{FN}} = \frac{\mathrm{TP}}{\mathrm{P}}$$

$$\mathrm{F}_1 =  \left(\frac{1/\mathrm{Precison} + 1/\mathrm{Recall}}{2}\right)^{-1}$$

Der Recall oder auch Hit-Rate genannt gibt den Anteil der korrekt als positiv klassifizierten Ergebnisse (TP) bezogen auf die Gesamtheit der tatsächlich positiven Ergebnisse (P) an. Informell kann man sagen, er gibt den Anteil der Objekte der positiven Klasse an, den wir mit unserem Modell erwischen bzw. detektieren. Für die Kindersicherung hätten wir gerne einen sehr hohen Recall, damit wir jeden nicht-jugendfreien Film detektieren und herausfiltern, wohingegen wir bei unserem Spamfilter nicht notwendigerweise jede Spam-Mail herausfiltern müssen. Der F1-Score ist das harmonische Mittel aus Precision und Recall und wird häufig als zusammenfassende Metrik verwendet.

Ohne Veränderung der Daten oder des Modells kann man nicht Precision und Recall gleichermaßen verbessern. Bei vielen Modellen gibt es jedoch einen sog. Threshold-Parameter, mit dem wir zum Beispiel die Precision verbessern können, jedoch dadurch den Recall verschlechtern (oder vice versa). Hierfür ist es hilfreich sich die Sigmoid Funktion (siehe Abbildung 1) anzuschauen, welche zum Beispiel bei der Logistischen Regression oder neuronalen Netzen verwendet wird. Diese Funktion projiziert jeden Eingangswert auf ein Intervall zwischen 0 und 1. Per default werden alle Beobachtungen x zur Klasse 1 zugeordnet, falls die Sigmoid Funktion einen Wert größer als 0.5 zurückgibt und zur Klasse 0 falls der Wert kleiner als 0.5 ist. Dieser Schwellwert kann beliebig verändert werden. Wählt man zum Beispiel einen höheren Schwellwert, dann werden nur Beobachtungen zur Klasse 1 zugeordnet, falls sich das Modell sehr sicher ist. Je sicherer sich das Modell ist, desto größer ist der Rückgabewert der Sigmoid Funktion. Dieser Wert wird im Machine Learning Bereich auch oft als Score bezeichnet.

Sigmoid Funktion in blau und default Threshold in rot.

Andere Modelle, wie z.B. ein Random Forest oder K-Nearest Neighbor, besitzen auch einen Threshold Parameter bzw. können auch Scores (Sicherheiten) für Beobachtungen zurückgeben. Mit der Veränderung des Thresholds kann man nun den sog. Precision-Recall Tradeoff erklären. In Abbildung 2 ist das Ergebnis von Precision und Recall gegen diesen Schwellwert für einen Random Forest Classifier aufgetragen. Wenn man den Threshold auf 0 setzt, dann werden alle Beobachtungen der positiven Klasse 1 zugeordnet. Somit ist der Recall natürlich 1, da wir auch alle positiven Beobachtungen mit unserem Modell detektieren. Die Precision ist jedoch nur so gut, wie der Anteil aller positiven Instanzen (Beobachtungen) im Datensatz. Ein umgekehrtes Verhalten tritt ein, wenn wir einen hohen Threshold verwenden. Dadurch werden nur Beobachtungen als positiv klassifiziert, wenn sich das Modell sehr sicher ist bzw. hohe Scores als Rückgabewert hat. Dadurch vergrößern wir natürlich die Precision, jedoch wird unser Recall geringer, da immer weniger Beobachtungen überhaupt als positiv klassifiziert werden. Der Schnittpunkt zwischen der Precision- und Recall-Kurve wird auch Break-Even-Punkt genannt. In Abbildung 3 ist die Precision gegen den Recall aufgetragen. Ein perfektes Modell führt zu einem Flächeninhalt von 1 unter dieser Kurve.
Die optimalen Thresholds hängen jeweils vom Use-Case ab. Bei unserem Spa- Filter wählt man beispielsweise eher einen hohen Threshold (hohe Precision), wohingegen für die Kindersicherung eher ein niedriger Threshold (hoher Recall) gewählt werden sollte.

Precision (Recall) für verschiedene Thresholds des Klassifikationsmodells.

Precision-Recall Kurve eines binären Klassifikationsmodells.

Receiver Operator Characteristic

Eine weitere häufig verwendete Metrik ist die Fläche unter der Receiver Operator Charateristic (ROC) Kurve. Hierfür berechnet man zunächst die TPR (Recall) und FNR für verschiedene Thresholds. Anschließend erhält man eine Kurve wie in Abbildung 4 dargestellt. Im Idealfall steigt diese senkrecht nach oben von (0,0) zu (1,0) und verläuft danach parallel zur x Achse zum Punkt (1,1). Das bedeutet, dass alle Scores für positive Beobachtungen höher sind als die von negativen Beobachtungen. Nachdem dann alle positiven Beobachtungen klassifiziert wurden, kann dann nur noch die FPR steigen.

Receiver Operator Characteristic.

Die Fläche unter dieser Kurve ist der AUC-Score (Area Under the Curve). Ein optimaler Classifier ergibt einen Wert von 1, ein Classifier der nicht besser ist als der Zufall ergibt einen Wert von 0.5. Für die ROC-Kurve des Zufalls gilt TPR = FPR. Wenn die FPR immer größer wäre als die TPR, dann sollte man die Klassen bzw. die Labels einfach vertauschen.
Das Schöne an dem AUC-Score ist, dass man damit verschiedene Modelle über alle verschiedenen Thresholds mit nur einem Score vergleichen kann. Der AUC-Score hat außerdem verschiedene anschauliche Interpretationen: z.B. als Wahrscheinlichkeit dafür, dass eine zufällig gezogene positives Beobachtung einen höheren Score hat als eine zufällig gezogene negative Beobachtung:

$$P(\mathrm{score}(x^+) > \mathrm{score}(x^+)).$$

Manche dieser Metriken wie Precision, Recall und F1 sind außerdem invariant unter einer bestimmten Veränderung der Confusion Matrix. Verändert man beispielsweise die Anzahl der True Negatives (TNs), so hat dies keine Auswirkung auf diese Performance Metriken. Dem sollte man sich bewusst sein, wenn man beispielsweise auch die Güte der negativen Klasse messen/beschreiben will. Die ROC Kurve hingegen beinhaltet alle Elemente der Confusion Matrix und ist daher nicht invariant unter Veränderung eines einzelnen Elements (FPR = FP / (TN + FP) und TPR = TP / (TP + FN)).

Verallgemeinerung auf Multi-Class-Probleme

Die oben aufgeührten Metriken können auch für Multi-Class-Probleme eingesetzt werden. Die Bestimmung von Pflanzenarten aufgrund der Blütenbeschaffenheit ist z.B. ein Multi-Class-Problem. Das wohl berühmteste Beispiel ist der Irisdatensatz (https://en.wikipedia.org/wiki/Iris_flower_data_set). Ausgangspunkt ist hier wieder eine Confusion Matrix mit den Elementen $$\mathrm{TP}_i, \mathrm{FP}_i, \mathrm{TN}_i, \mathrm{FN}_i,$$ wobei sich der Index i auf eine bestimmte Klasse, z.B. eine Pflanzenart bezieht. Anschließend kann man eine große Confusion Matrix aus den Teilergebnissen erstellen, d.h. man berechnet z.B. die Gesamtheit der True Positives $$\mathrm{TP} = \sum_i \mathrm{TP}_i.$$ Mit diesen kumulativen Werten kann dann wie gewohnt die Precision, der Recall oder der F1-Score berechnet werden. Dieses Vorgehen heißt Micro-Averaging und gewichtet stark überrepräsentierte Klassen deutlich stärker. Im Gegensatz dazu gibt es das Macro-Averaging. Hierfür berechnet man Precision, Recall und F1-Score für jede Klasse einzeln und mittelt erst anschließend die Ergebnisse. Dadurch werden alle Klassen gleich gewichtet.

Zusammenfassung

In diesem Blogbeitrag haben wir verschiedene Performance Metriken für Klassifikationsprobleme besprochen. Hierbei sollte man berücksichtigen, dass es sich bei den Größen wie Accuracy, Precision, Recall, etc. um mathematische Performance-Metriken der einzelnen Modelle handelt. Für Data Science Use-Cases ist jedoch häufig eine monetäre Größe der entscheidende Faktor. Zum Beispiel klingt eine Precision und ein Recall von 90% sehr gut. Wenn ein FP jedoch 100 € Verlust bedeutet, und ein TP nur 1 € Ersparnins, dann machen wir bei 10 Klassifikationen der Klasse 1 einen Verlust von (100 – 9) € = 91 €. Um mit diesem Use-Case keine Verluste einzufahren, brauchen wir also mindestens eine Precision von 99%. Das können wir zum Beispiel durch eine Verschiebung des Thresholds erreichen. Jedoch könnte das zu einem sehr geringen Recall führen. Es ist daher sehr wichtig möglichst früh den sog. Business-Value als weitere Performance-Größe heranzuziehen. Der Threshold des Modells wird dann so angepasst, dass wir möglichst den maximalen Gewinn mit dem Modell erzielen.

In einem weiteren Blogbeitrag werden wir uns mit den Performance-Metriken für Regressionsanalysen und für Unsupervised Learning beschäftigen.

 

Quellen:

[1] A systematic analysis of performance measures for classification tasks; M Sokolova, G Lapalme; Information Processing & Management 45 (4), 427-437