Metriken
Swipe um das Menü anzuzeigen
Bis zu diesem Punkt haben wir Accuracy als Hauptmetrik zur Bewertung der Modellleistung verwendet. Allerdings weist Accuracy einige Einschränkungen auf. Im Folgenden werden die Schwächen dieser Metrik erläutert und mehrere zusätzliche Metriken – basierend auf TP, TN, FP und FN – vorgestellt, die helfen, diese Probleme zu adressieren.
Accuracy
Accuracy bezeichnet den Anteil der korrekten Vorhersagen:
accuracy=correct+incorrectcorrect=TP+TN+FP+FNTP+TNDie Genauigkeit hat jedoch ihre Schwächen. Stellen Sie sich zum Beispiel vor, Sie möchten vorhersagen, ob ein Patient an einer seltenen Krankheit leidet. Der Datensatz enthält 99,9 % gesunde Patienten und nur 0,1 % mit der Krankheit. In diesem Fall würde eine ständige Vorhersage, dass der Patient gesund ist, zu einer Genauigkeit von 0,999 führen – obwohl ein solches Modell völlig nutzlos ist.
Solche Datensätze werden als unausgewogen bezeichnet, und in solchen Fällen ist die balancierte Genauigkeit eine bessere Kennzahl.
Balancierte Genauigkeit
Die balancierte Genauigkeit berechnet den Anteil der korrekt vorhergesagten positiven Fälle und den Anteil der korrekt vorhergesagten negativen Fälle jeweils separat und mittelt diese anschließend. Dieser Ansatz gibt jeder Klasse das gleiche Gewicht, unabhängig davon, wie unausgewogen der Datensatz ist.
balanced_accuracyaccuracy=21⋅PTP+21⋅NTN=P+NTP+TNDabei gilt:
- P=TP+FN – Gesamtanzahl der positiven Instanzen (Klasse 1);
- N=TN+FP – Gesamtanzahl der negativen Instanzen (Klasse 0).
Im Beispiel mit der seltenen Krankheit hätte ein Modell, das immer "gesund" vorhersagt, eine balancierte Genauigkeit von 0,5 – was das Problem deutlich macht. Das Problem wird also erkannt.
Allerdings unterscheidet die balancierte Genauigkeit weiterhin nicht zwischen Fehlern vom Typ 1 und Fehlern vom Typ 2 – genau wie die normale Genauigkeit. Hier kommen Präzision und Recall ins Spiel.
Präzision
Die Metrik Präzision gibt an, wie viele der vom Modell als positiv vorhergesagten Werte tatsächlich positiv waren. Sie ist der Anteil der tatsächlich positiven Vorhersagen an allen positiven Vorhersagen, die das Modell gemacht hat:
precision=TP+FPTPDurch die Verwendung der Präzisionsmetrik kann verstanden werden, wie häufig ein Fehler 1. Art auftritt. Eine hohe Präzision bedeutet, dass Fehler 1. Art selten sind, während eine niedrige Präzision darauf hinweist, dass Fehler 1. Art häufig vorkommen.
Sensitivität
Die Metrik Sensitivität zeigt den Anteil der tatsächlich positiven Fälle, die vom Modell korrekt vorhergesagt wurden:
recall=TP+FNTPDie Recall-Metrik hilft dabei zu verstehen, wie häufig ein Fehler 2. Art auftritt. Ein hoher Recall bedeutet, dass Fehler 2. Art selten sind, während ein niedriger Recall auf häufige Fehler 2. Art hinweist.
Sowohl Precision als auch Recall haben jedoch Einschränkungen. Ein Modell, das nur die positive Klasse (1) vorhersagt, erreicht beispielsweise einen perfekten Recall, aber seine Precision ist schlecht. Umgekehrt hat ein Modell, das nur eine positive Instanz korrekt vorhersagt und alles andere als negativ klassifiziert, eine perfekte Precision, aber einen katastrophalen Recall.
Dies zeigt, dass es zwar einfach ist, ein Modell mit perfekter Precision oder perfektem Recall zu erstellen, aber viel schwieriger, eines zu entwickeln, das in beiden Metriken gut abschneidet. Deshalb ist es wichtig, beide Metriken zu berücksichtigen – und glücklicherweise gibt es eine Metrik, die beide kombiniert.
F1-Score
Der F1-Score ist das harmonische Mittel von Precision und Recall. Das harmonische Mittel wird dem gewöhnlichen (arithmetischen) Mittel vorgezogen, da es Situationen bestraft, in denen einer der Werte (entweder Precision oder Recall) niedrig ist, und somit eine ausgewogenere Messung der Modellleistung bietet.
F1=precision1+recall12=precision+recall2⋅precision⋅recallDer F1-Score kombiniert sowohl Precision als auch Recall in einer einzigen Metrik. Er ist nur dann hoch, wenn sowohl Precision als auch Recall relativ hoch sind, und ist daher ein nützliches Maß, wenn beide Fehlertypen ausgewogen berücksichtigt werden sollen.
Die Wahl der richtigen Metrik hängt von der jeweiligen Aufgabe ab. Accuracy (oder balanced accuracy bei unausgeglichenen Datensätzen) ist intuitiv und liefert einen allgemeinen Eindruck von der Gesamtleistung des Modells. Wenn detailliertere Einblicke in die Fehlerarten des Modells benötigt werden, hilft precision bei der Identifikation von Fehlern vom Typ 1, während recall Fehler vom Typ 2 hervorhebt. Der F1-Score zeigt, wie ausgewogen das Modell in Bezug auf Fehler vom Typ 1 und Typ 2 ist.
Eine weitere häufig verwendete Metrik ist ROC/AUC, über die Sie in diesem Artikel mehr lesen können.
Metriken in Python
Scikit-learn stellt Implementierungen für all diese Metriken im Modul sklearn.metrics bereit:
from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
Wenn alle Metriken wie Precision, Recall und F1-Score gleichzeitig benötigt werden, bietet sklearn die Funktion classification_report() an:
12345678910111213import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
Support bezeichnet die Anzahl der tatsächlichen Vorkommen jeder Klasse im Testdatensatz. Macro avg berechnet den Durchschnitt jeder Metrik (Precision, Recall, F1) über alle Klassen hinweg gleichgewichtet, ohne Klassenungleichgewicht zu berücksichtigen. Weighted avg mittelt die Metriken ebenfalls über alle Klassen, gewichtet jedoch Klassen mit mehr Instanzen stärker (basierend auf deren Support).
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen