Ist ein Modell erst einmal trainiert, kann es auf verschiedene Art und Weise und mit mehr oder weniger komplexen und aussagekräftigen Verfahren und Metriken bewertet werden. Die Anzahl und möglichen Kriterien, ein Modell zu bewerten, sind allerdings zunächst recht unübersichtlich, wenn man beginnt, sich mit dem Thema Machine Learning zu beschäftigen.
So hängt es beispielsweise davon ab, ob es sich um nicht überwachtes oder überwachtes Lernen handelt, im Fall von überwachtem Lernen um eine Regression oder Klassifikation, welcher Anwendungsfall zu Grunde liegt und so weiter – um nur einige Kriterien zu nennen. Starten möchte ich mit dem überwachten Lernen und der Klassifikation. Dazu stelle ich in diesem Artikel sieben gängige Metriken und Methoden zur Bewertung einer Klassifikation an einem durchgängigen Beispiel einführend dar. Eine ausführliche Diskussion würde den Rahmen dieser Einführung allerdings sprengen, sodass ich auch die den Metriken zugrunde liegende Mathematik nur streife.
Anwendungsfall
Ein Hersteller von Trinkgläsern möchte in seiner Produktion defekte Gläser erkennen und aussortieren. Dazu soll ein Modell zur Bildklassifikation trainiert und eingesetzt werden. Die Datenbasis besteht aus Bildern von unversehrten und defekten Gläsern. Wobei nicht beschädigte Gläser in dieser binären Klassifikation hier durch eine 0 und dementsprechend defekte durch eine 1 repräsentiert sind.
In den folgenden Test-Daten (y_true) sind beispielsweise acht defekte und zwei heile Gläser vorhanden und durch das Modell (y_pred) sieben davon richtig als defekt klassifiziert.
# Testdaten
y_true: [0, 1, 1, 1, 0, 1, 1, 1, 1, 1]
# Vorhersage/Prediction des Modell
y_pred: [0, 0, 1, 1, 0, 1, 1, 1, 1, 1]
Accuracy
Die Accuracy (Treffergenauigkeit) ist wahrscheinlich die am ehesten nachvollziehbare Metrik und stellt die Anzahl der richtigen Klassifizierungen allen zu tätigen Klassifizierungen gegenüber.
Im folgenden Beispiel wurde nur ein Wert falsch vorhergesagt und somit eine Accuracy von 90% erreicht.
y_true: [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
y_pred: [0, 1, 0, 0, 0, 1, 1, 1, 1, 1]
Accuracy: 90%
Sind die Klassen in den Daten extrem ungleich verteilt, kann das alleinige Betrachten der Accuracy leider zu falschen Schlüssen führen. Ist beispielsweise eine Klasse neun mal häufiger in den Daten vorhanden als die andere, genügt schon das alleinige Tippen auf die häufigere Klasse um eine Accuracy von 90% zu erreichen – obwohl das Modell vielleicht gar nicht in der Lage ist, die andere Klasse vorherzusagen. Ob das Modell überhaupt defekte Gläser von heilen unterscheiden kann ist mit dieser Metrik und einer Klassenverteilung* wie im folgenden Beispiel gar nicht einschätzbar, da es, wie es scheint, immer auf ein defektes Glas tippt.
y_true: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
y_pred: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Accuracy: 90%
Neben solchen Unwägbarkeiten hängt es natürlich auch vom Anwendungsfall ab, welche Metriken zur Bewertung des Modells herangezogen werden können.
Binäre Klassifikation
Zunächst lassen sich bei einer binären Klassifikation [1] vier Fälle unterscheiden:
- Auf die Klasse wurde getippt – was richtig ist (hit, true positiv)
- Auf die Klasse wurde nicht getippt – was richtig ist (correct reject, true negative)
- Auf die Klasse wurde getippt – was falsch ist (false alarm, false positive)
- Auf die Klasse wurde nicht getippt – was falsch ist (miss, false negative)
Für diese vier Fälle sind allerdings verschiedene Bezeichnungen geläufig [2]. Da mir hit, correct reject, false alarm und miss allerdings am sprechendsten erscheinen, werde ich sie hier im Wesentlichen verwenden.
Trade-Off zwischen Abdeckung und Präzision
Ist einem beispielsweise daran gelegen, eine Klasse in den Daten möglichst umfassend zu erkennen, lässt sich die Abdeckung (Recall, Hit Rate, True Positive Rate) als Gütekriterium heranziehen. Dabei stellt Recall die Anzahl der hit ins Verhältnis zur Summe aus hit und miss, also aller zu erkennenden defekten Gläser, dar:
Tippt das Modell wie oben dabei einfach immer nur auf ein defektes Glas, also nur auf die eine Klasse, ist die Abdeckung natürlich noch da hit=9 und miss=0 und somit Recall=9/\(9+0\)=1.
Im Gegensatz dazu beschreibt die Präzision (Precision) das Verhältnis der Anzahl von hit zu der Summe aus hit und false alarm, also aller vermeintlich als defekt erkannten Gläsern:
An dieser Stelle würde das ständige Tippen auf die eine Klasse natürlich die Anzahl der false alarm auf 1 erhöhen und so mit einer geringeren Präzision einhergehen – Precision=9/\(9+1\)=0,9.
Letztendlich beschreibt die Abdeckung, wie viele vermeintliche Treffer es gab und die Präzision, wie viele davon richtig waren. Sowohl eine komplette Abdeckung als auch eine hohe Präzision zu erreichen ist erstrebenswert. In der Praxis wird dies aber nicht immer möglich sein und der Fokus nicht immer auf beiden liegen. Um dabei nicht ständig die zwei Metriken gleichzeitig betrachten und gegeneinander abwägen zu müssen, lässt sich das F-Maß auswerten.
F-Maß / F1-Score
Das F-Maß beschreibt das harmonisch Mittel zwischen Recall und Precision und fasst damit die beiden Metriken zu einem Wert zusammen [3].
Die Verwendung des harmonischen Mittels führt dazu, dass sich die Metrik dem kleineren der beiden Werte etwas ’sensibler‘ gegenüber verhält als es im arithmetischen Mittel der Fall wäre.
Beispielsweise ergibt sich bei einem Recall-Wert von 1,0 und Precision von 0,1 ein arithmetisches Mittel von 0,55 – was intuitiv dem kleinen Wert von Precision wohl nicht gerecht wird. Das Harmonische Mittel berechnet sich allerdings zu 0,18 und deutet damit auf ein schlechteres Modell hin.
Der F1-Score ist abgeleitet von einer etwas allgemeineren Variante, der F-beta Score.
Beim F1-Score wird der Wert für beta auf 1 gesetzt und somit Recall und Precision gleich gewichtet. Falls es der Anwendungsfall erfordert, lassen sich dabei Recall und Precision auch verschieden gewichten. Ein *beta* Wert zwischen 0 und 1 gewichtet die Precision stärker, ein Wert größer 1 gewichtet Recall stärker.
Allerdings kann auch hier eine ungleiche Verteilung der Klassen in den Daten das Ergebnis verfälschen. Darüber hinaus wird der Fall correct recject im F-Maß nicht berücksichtigt. Wünschenswert wäre eine Möglichkeit, die alle oben genannten Fälle einer binären Klassifikation berücksichtigt, sich gegenüber unausgeglichenen Klassenverteilungen als robust erweist und sich einfach darstellen lässt.
Wahrheitsmatrix – Confusion Matrix
Die Gegenüberstellung der Tipps des Modells und der korrekten Werte in Form einer Kontingenztabelle ermöglicht einen etwas detaillierteren Einblick in die Leistung des Models. Dazu wird für jeden Fall gezählt, wie häufig er in dem Ergebnis vorkam, und die Anzahl in einer Kontingenztabelle eingetragen. Die Zeilen beschreiben dabei die Tipps und die Spalten die korrekten Werte. Im binären Fall wird diese Tabelle auch Wahrheitsmatrix oder Konfusionsmatrix [2] genannt.
Die vier Fälle finden sich in dieser Matrix beispielsweise so wieder:
Die Klassen sind im folgenden Beispiel nicht gleich verteilt sondern stehen im Verhältnis \(7:3\).
y_true: [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
y_pred: [0, 1, 1, 0, 1, 1, 1, 1, 1, 1]
hit = 6, false alarm = 2,
miss = 1, correct reject = 1
Das Modell hat sechs defekte Gläser korrekt erkannt (hit) und eins korrekt als heile klassifiziert (correct reject). Allerdings zwei unversehrte Gläser als defekt (false alarm) und ein defektes Glas nicht erkannt (miss). Das Ziel ist, in der Matrix möglichst hohe Werte auf der Diagonalen von oben links nach unten rechts zu erzielen – also hohe Werte nur für hit und correct reject.
Die Wahrheitsmatrix berücksichtigt zwar alle Fälle, hier die Übersicht zu behalten, fällt aber nicht immer einfach, und eine Aussage zur Leistung des Modells ist intuitiv nicht auf die Schnelle möglich. Dennoch bekommt man einen Eindruck, wie sich die Ergebnisse zueinander verhalten. So lassen sich beispielsweise die Werte, die Recall und Precision beeinflussen, in der Matrix direkt wiederfinden.
Matthews Correlation Coefficient (MCC)
Eine Metrik, die alle Fälle zusammenfasst und als geeignet angesehen wird für die Anwendung auf Datenbeständen mit unausgeglichenen Klassenverteilungen, ist der Matthew’s Correlation Coefficient [4,5,6]. Er lässt sich wie folgt aus der Confusion Matrix ablesen und berechnen:
Der Wertebereich der Metrik liegt zwischen -1 und 1. Der Wert 1 ist erstrebenswert, 0 markiert den Zufall, und negative Werte deuten auf eine gegensätzliche Einschätzung des Modells hin. Allerdings ist der MCC nicht definiert, wenn eine der vier Summen im Nenner 0 ist.
Die Crux
Die Werte für Accuracy, Precision und Recall des obigen Beispiels der Konfusionsmatrix liegen bei:
Accuracy: 0,70
Precision: 0,75
Recall: 0,86
Vergleicht man dieses Modell nur anhand der Accuracy mit einem weiteren Modell, könnte es hier schon zum Ausschluss des Modells führen.
Ein Modell mit guter Accuracy und schlechten Werten für Recall und Precision könnte bevorzugt werden, für diesen Anwendungsfall aber nicht unbedingt das beste Modell darstellen. Denn in diesem Fall wären zum Beispiel die Metriken Recall und Precision interessanter, da sie genauer auf die Anforderungen eingehen und sich somit das Modell besser einschätzen und vergleichen lässt.
Das heisst, dass reine Vertrauen auf die Accuracy kann abhängig vom Anwendungsfall abermals zu ungünstigen Schlussfolgerungen über die Leistung eines Modells führen. Dieses Phänomen ist als Accuracy Paradoxon geläufig [7].
Darüber hinaus können, abhängig von der Verteilung der Klassen in den Daten, Metriken teilweise Veränderungen in den Vorhersagen gar nicht darstellen oder in verschiedene Richtungen tendieren. Die folgenden Beispiele vermitteln einen weiteren kleinen Eindruck, wie unterschiedlich die Bewertungen ausfallen können.
y_true: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
y_pred: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Accuracy: 0.90
F1-Score: 0,95 (0.9474)
Matthews CC: 0,00
F1 und Accuracy versprechen mit einem Wert von >= 0.90 vielleicht schon ein recht gutes Modell. Allerdings trübt der Matthews CC das Bild des Modells und deutet auf zufällig korrekte Vorhersagen hin, da die heilen Gläser extrem unterrepräsentiert sind und dieses eine sogar noch falsch klassifiziert wurde.
Im folgenden Fall sind unversehrte Gläser etwas häufiger in den Daten vertreten und lassen somit eine bessere Bewertung zu.
y_true: [0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
y_pred: [1, 0, 1, 1, 1, 1, 1, 1, 1, 1]
Accuracy: 0,90
F1-Score: 0,94
(0.9412)
Matthews CC: 0,67 (0.6667)
Matthews CC deutet nun mit einem Wert von 0,67 auf ein besseres Modell hin, da eines der zwei heilen Gläser wenigstens einmal korrekt erkannt wurde. Accuracy und F1 reagieren gar nicht oder nur leicht auf die Veränderung und berechnen sich zu gleichen oder recht ähnlichen Werten wie im vorherigen Beispiel. Allerdings wird für die Entscheidungen wohl immer noch der Zufall gelten? Schließlich sind die zwei heilen Gläser einmal richtig und einmal falsch klassifiziert.
Im Folgenden sind nun drei heile Gläser zwei mal korrekt und ein mal falsch vorhergesagt worden, so dass sich die Leistung des Modells noch ein bisschen besser bewerten lässt. Matthews CC würdigt dies mit einer Erhöhung von 0,67 auf 0,76 und F1 mit einer weiteren Abwertung von 0,94 auf 0,93.
y_true: [0, 0, 0, 1, 1, 1, 1, 1, 1, 1]
y_pred: [1, 0, 0, 1, 1, 1, 1, 1, 1, 1]
Accuracy: 0,90
F1-Score: 0,93 (0.9333)
Matthews CC: 0,76 (0.7638)
Das heißt, man ist gut beraten, beim Vergleich von Modellen und insbesondere bei unausgeglichenen Klassenverteilungen die Werte mehrerer Metriken heranzuziehen und im Vorfeld festzulegen welche für den Anwendungsfall die relevanten sind.
Allerdings, ab welchem Score kann man sich mit dem Modell zufrieden geben? Das ist natürlich wieder vom Anwendungsfall bzw. den Anforderungen abhängig und oft schwierig einzuschätzen, wenn es keine Vergleichsgrößen wie beispielsweise die Zuverlässigkeit eines menschlichen Entscheiders gibt.
Eine weitere grafische Aufbereitung der Leistung eines Modells kann dabei aufschlussreich sein und helfen, einen guten Trade-Off zu erreichen.
Trade-off zwischen Hit und False Alarm Rate
Während die Verkaufsabteilung des Gläserproduzenten um einen möglichst hohen Durchsatz bei der Produktion bemüht ist, wird die Qualitäts- und Rechtsabteilung doch eher darauf erpicht sein, die Anzahl der defekten Gläser die in den Verkauf gelangen, zu minimieren. Das heißt die Verkaufsabteilung möchte Ausschuss bestehend aus unnötig als defekt klassifizierten Gläsern (false alarm) vermeiden. Wohingegen die Qualitätssicherung darauf besteht, alle defekten Gläser (hit) zu erkennen – auch wenn dadurch ein paar heile Gläser nicht in den Verkauf gelangen.
Receiver Operating Characteristic
Die Receiver-Operating-Characteristic-Kurve (ROC-Kurve) [8] stellt den Anteil der richtig als positiv klassifizierten Objekte, also der Hit Rate, dem Anteil der als falsch positiv klassifizierten, also der False Alarm Rate, in einem Diagramm gegenüber. Die False Alarm Rate beschreibt dabei das Verhältnis aus der Anzahl der falsch als defekt erkannten Gläsern und der aller als heile zu erkennenden Gläsern.
Das heißt, hier wird der Anteil der richtig als defekt erkannten Gläser mit dem Anteil der fälschlicherweise als defekt eingeschätzten Gläser verglichen.
Dem Ganzen liegt dabei auch die Optimierung eines Schwellwerts zu Grunde. Je nach Methode werden die Vorhersagen eines Modells nicht immer nur die Zahlen 0 und 1 zur Klassifizierung ausgeben. Eher liegen die Werte zwischen 0 und 1 und beschreiben somit eine Wahrscheinlichkeit zur Zugehörigkeit einer Klasse, die dann zu interpretieren ist. Das heißt ab welchem Wert will man gelten lassen, dass eine Klasse erkannt wurde?
Dazu werden auf der Vertikalen pro Schwellwert die Werte der Hit Rate und auf der Horizontalen die der False Alarm Rate eingetragen. Die Diagonale von links unten nach oben rechts beschreibt dabei die Zufallsgrenze. Das heißt Kurven, die weit oberhalb dieser Grenze und in die linke obere Ecke tendieren, stellen eine gute Bewertung dar. Die Hit Rate ist dort möglichst hoch und zugleich die False Alarm Rate sehr klein. Es ergibt sich diese typische Kurve (im Diagramm schwarz) an der man nun entscheiden kann, auf welchen Trade-Off man sich einlassen muss, oder – wenn man mehrere Modelle einträgt – welches Modell mit welchem Schwellwert zum Zuge kommen kann – oder ob weiter trainiert wird.
Bei dem Modell im folgenden Beispiel (orange Kurve im Diagramm) ließe sich eine Hit Rate von 0.86 erzielen, wenn man eine False Alarm Rate von 0.33 akzeptiert und einen Schwellwert von 0.3 anwendet. Die Schwellwerte selber sind dabei nicht in der Kurve dargestellt, sind aber in der folgenden Tabelle aufgeführt.
y_true: [0 0 0 1 1 1 1 1 1 1 ]
y_pred: [0.22 0.24 0.40 0.23 0.30 0.42 0.70 0.50 0.60 0.80]
Hit Rate: [0.00 0.14 0.71 0.71 0.86 0.86 1.00 1.00]
False Alarm Rate: [0.00 0.00 0.00 0.33 0.33 0.67 0.67 1.00]
Schwellwerte: [1.80 0.80 0.42 0.40 0.30 0.24 0.23 0.22]
Besteht man auf eine False Alarm Rate von 0, ist hier eine Hit Rate von 0.71 möglich. Dazu ist dann beispielsweise der Schwellwert mindestens auf 0.42 zu setzen. In der Praxis stehen natürlich mehr Datensätze zur Verfügung und dementsprechend viel feiner Abstufungen, aus denen eine Schwellwert auszuwählen ist. Darüber hinaus lässt sich die Fläche unter der Kurve Area Under Curve AUC mit einem Wert zwischen 0 und 1 interpretieren. Wobei 1 wieder den besten Wert und 0.5 den Zufall bzw. in diesem Fall auch den schlechtesten Wert darstellt [9]. Die AUC-Werte zu den Kurven sind im Diagramm in der Legende aufgeführt.
Fazit
Generell lässt sich natürlich versuchen, ein Modell zu trainieren, das bzgl. aller Metriken die möglichst besten Werte erreicht. Allerdings rechtfertigen die nötigen Aufwände, um das letzte Promille Verbesserung zu erreichen, in der Praxis oft nicht den tatsächlichen Nutzen. Eine pragmatische anwendungsfallorientierte Herangehensweise führt eher zum Erfolg und gibt den nötigen Spielraum, einen sinnvollen Trade-Off zu erreichen. Schließlich lassen sich mit den Testergebnissen und daraus resultierenden Werten der Metriken die Modelle nur miteinander vergleichen. Wie gut ein Modell wirklich ist, wird sich dann eher im Einsatz in der Praxis zeigen und eine Begründung, wie das Modell zu seiner Entscheidung kam, ist noch nicht erfolgt, in manchen Bereichen aber vielleicht durchaus nötig [10].
Aber wieviele Testdaten sind für eine aussagekräftige Bewertung eigentlich nötig?
Lesen Sie in: Machine-Learning-Modelle bewerten – die Crux mit den Testdaten ,
welchen Einfluss die Größe des Testdaten-Sets auf die Vergleichbarkeit von Modellen haben kann.
Referenzen
[1] Wikipedia, Beurteilung eines binären Klassifikators
[2] Wikipedia, Confusion Matrix
[3] TYutaka Sasaki, 2007, The truth of the F-measure
[4] Boughorbel S, Jarray F, El-Anbari M (2017) Optimal classifier for imbalanced data using Matthews Correlation Coefficient metric. PLoS ONE 12(6): e0177678. doi.org/10.1371/journal.pone.0177678
[5] Davide Chicco, 2017, Ten quick tips for machine learning in computational biology. doi:10.1186/s13040-017-0155-3
[6] Wikipedia, Matthews correlation coefficient
[7] Wikipedia, Accuracy paradox
[8] Tom Fawcett, 2005, An introduction to ROC analysis, doi.org/10.1016/j.patrec.2005.10.010
[9] Wikipedia, Receiver Operating Characteristic
[10] Shirin Elsinghorst, Erklärbarkeit von Machine-Learning-Methoden, Der Softwerker Vol. 13, Der Softwerker Vol. 13
Weitere Beiträge
von Berthold Schulte
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Gemeinsam bessere Projekte umsetzen.
Wir helfen deinem Unternehmen.
Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.
Hilf uns, noch besser zu werden.
Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.
Blog-Autor*in
Berthold Schulte
Consultant Data & AI
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.