Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Metriken | Modelle Vergleichen
Klassifikation mit Python

bookMetriken

Bis zu diesem Punkt wurde 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 diese Probleme adressieren.

Accuracy

Accuracy bezeichnet den Anteil der korrekten Vorhersagen:

accuracy=correctcorrect+incorrect=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{correct}}{\text{correct} + \text{incorrect}} = \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} + \textcolor{red}{\text{FN}}}

Accuracy weist jedoch Schwächen auf. Angenommen, es soll vorhergesagt werden, ob ein Patient an einer seltenen Krankheit leidet. Der Datensatz enthält 99,9 % gesunde Patienten und nur 0,1 % erkrankte Patienten. In diesem Fall würde die ständige Vorhersage, dass der Patient gesund ist, zu einer Accuracy von 0,999 führen – obwohl ein solches Modell völlig nutzlos ist.

Solche Datensätze werden als unausgewogen bezeichnet. In diesen Fällen ist die balancierte Accuracy eine geeignetere Metrik.

Ausgewogene Genauigkeit

Ausgewogene Genauigkeit berechnet den Anteil der korrekt vorhergesagten positiven und den Anteil der korrekt vorhergesagten negativen Fälle jeweils separat und mittelt diese anschließend. Dieser Ansatz gibt jeder Klasse die gleiche Bedeutung, unabhängig davon, wie unausgewogen der Datensatz ist.

balanced_accuracy=12TPP+12TNNaccuracy=TP+TNP+N\begin{aligned} \text{balanced\_accuracy} &= \frac12 \cdot \frac{\textcolor{green}{\text{TP}}}{\text{P}} + \frac12 \cdot \frac{\textcolor{green}{\text{TN}}}{\text{N}}\\ \text{accuracy} &= \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\text{P} + \text{N}} \end{aligned}

Dabei gilt:

  • P=TP+FN\text{P} = \textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}} – Gesamtanzahl der positiven Instanzen (Klasse 1);
  • N=TN+FP\text{N} = \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} – Gesamtanzahl der negativen Instanzen (Klasse 0).

Im Beispiel einer seltenen Krankheit hätte ein Modell, das immer "gesund" vorhersagt, eine ausgewogene Genauigkeit von 0,5 – was das Problem deutlich macht. Dieses Problem wird also adressiert.

Allerdings unterscheidet die ausgewogene Genauigkeit weiterhin nicht zwischen Fehlern vom Typ 1 und Fehlern vom Typ 2 – genauso wenig wie die normale Genauigkeit. Hier kommen Präzision und Recall ins Spiel.

Präzision

Die Kennzahl 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=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

Durch die Verwendung der Präzisionsmetrik lässt sich erkennen, wie häufig ein Fehler 1. Art auftritt. Hohe Präzision bedeutet, dass Fehler 1. Art selten sind, während niedrige Präzision darauf hinweist, dass Fehler 1. Art häufig vorkommen.

Recall

Die Recall-Metrik zeigt den Anteil der tatsächlich positiven Fälle, die das Modell korrekt vorhergesagt hat:

recall=precision=TPTP+FN\text{recall} = \text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}}}

Die Recall-Metrik hilft zu verstehen, wie häufig ein Fehler 2. Art auftritt. Hoher Recall bedeutet, dass Fehler 2. Art selten sind, während niedriger Recall auf häufige Fehler 2. Art hinweist.

Allerdings haben sowohl Präzision als auch Recall ihre Einschränkungen. Beispielsweise erreicht ein Modell, das ausschließlich die positive Klasse (1) vorhersagt, einen perfekten Recall, aber seine Präzision ist schlecht. Umgekehrt erzielt ein Modell, das nur eine positive Instanz korrekt vorhersagt und alles andere als negativ klassifiziert, eine perfekte Präzision, aber einen katastrophalen Recall.

Dies zeigt, dass es einfach ist, ein Modell mit perfekter Präzision oder perfektem Recall zu erstellen, aber deutlich schwieriger, eines zu entwickeln, das in beiden Metriken gut abschneidet. Daher 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 Präzision und Recall. Das harmonische Mittel wird dem regulären (arithmetischen) Mittel vorgezogen, da es Situationen bestraft, in denen einer der Werte (entweder Präzision oder Recall) niedrig ist. Dadurch stellt es ein ausgewogeneres Maß für die Leistungsfähigkeit eines Modells dar.

F1=21precision+1recall=2precisionrecallprecision+recall\text{F1} = \frac{2}{\frac{1}{\text{precision}} + \frac{1}{\text{recall}}} = \frac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} + \text{recall}}

Der F1-Score vereint sowohl Präzision als auch Recall in einer einzigen Kennzahl. Er ist nur dann hoch, wenn sowohl Präzision als auch Recall relativ hoch sind, was ihn zu einem nützlichen Maß macht, wenn beide Fehlertypen ausgewogen betrachtet werden sollen.

Die Wahl der richtigen Kennzahl hängt von der jeweiligen Aufgabe ab. Accuracy (oder Balanced Accuracy bei unausgeglichenen Datensätzen) ist intuitiv und bietet einen allgemeinen Überblick über die Gesamtleistung des Modells. Für detailliertere Einblicke in die Fehlertypen hilft Präzision 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 beide Fehlertypen ist.

Note
Mehr erfahren

Eine weitere häufig verwendete Kennzahl ist ROC/AUC, über die Sie in diesem Artikel nachlesen 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 Sie Metriken wie Precision, Recall und F1-Score auf einmal erhalten möchten, bietet sklearn die Funktion classification_report() an:

12345678910111213
import 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))
copy
Note
Hinweis

Support bezeichnet die Anzahl der tatsächlichen Vorkommen jeder Klasse im Testdatensatz. Macro avg berechnet den Durchschnitt jeder Metrik (Präzision, 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 (basierend auf ihrem Support) stärker.

question mark

Welche Bewertungsmetrik bietet ein Gleichgewicht zwischen Präzision und Recall und liefert einen einzelnen Wert, der beide widerspiegelt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4.17

bookMetriken

Swipe um das Menü anzuzeigen

Bis zu diesem Punkt wurde 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 diese Probleme adressieren.

Accuracy

Accuracy bezeichnet den Anteil der korrekten Vorhersagen:

accuracy=correctcorrect+incorrect=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{correct}}{\text{correct} + \text{incorrect}} = \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} + \textcolor{red}{\text{FN}}}

Accuracy weist jedoch Schwächen auf. Angenommen, es soll vorhergesagt werden, ob ein Patient an einer seltenen Krankheit leidet. Der Datensatz enthält 99,9 % gesunde Patienten und nur 0,1 % erkrankte Patienten. In diesem Fall würde die ständige Vorhersage, dass der Patient gesund ist, zu einer Accuracy von 0,999 führen – obwohl ein solches Modell völlig nutzlos ist.

Solche Datensätze werden als unausgewogen bezeichnet. In diesen Fällen ist die balancierte Accuracy eine geeignetere Metrik.

Ausgewogene Genauigkeit

Ausgewogene Genauigkeit berechnet den Anteil der korrekt vorhergesagten positiven und den Anteil der korrekt vorhergesagten negativen Fälle jeweils separat und mittelt diese anschließend. Dieser Ansatz gibt jeder Klasse die gleiche Bedeutung, unabhängig davon, wie unausgewogen der Datensatz ist.

balanced_accuracy=12TPP+12TNNaccuracy=TP+TNP+N\begin{aligned} \text{balanced\_accuracy} &= \frac12 \cdot \frac{\textcolor{green}{\text{TP}}}{\text{P}} + \frac12 \cdot \frac{\textcolor{green}{\text{TN}}}{\text{N}}\\ \text{accuracy} &= \frac{\textcolor{green}{\text{TP}} + \textcolor{green}{\text{TN}}}{\text{P} + \text{N}} \end{aligned}

Dabei gilt:

  • P=TP+FN\text{P} = \textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}} – Gesamtanzahl der positiven Instanzen (Klasse 1);
  • N=TN+FP\text{N} = \textcolor{green}{\text{TN}} + \textcolor{red}{\text{FP}} – Gesamtanzahl der negativen Instanzen (Klasse 0).

Im Beispiel einer seltenen Krankheit hätte ein Modell, das immer "gesund" vorhersagt, eine ausgewogene Genauigkeit von 0,5 – was das Problem deutlich macht. Dieses Problem wird also adressiert.

Allerdings unterscheidet die ausgewogene Genauigkeit weiterhin nicht zwischen Fehlern vom Typ 1 und Fehlern vom Typ 2 – genauso wenig wie die normale Genauigkeit. Hier kommen Präzision und Recall ins Spiel.

Präzision

Die Kennzahl 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=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

Durch die Verwendung der Präzisionsmetrik lässt sich erkennen, wie häufig ein Fehler 1. Art auftritt. Hohe Präzision bedeutet, dass Fehler 1. Art selten sind, während niedrige Präzision darauf hinweist, dass Fehler 1. Art häufig vorkommen.

Recall

Die Recall-Metrik zeigt den Anteil der tatsächlich positiven Fälle, die das Modell korrekt vorhergesagt hat:

recall=precision=TPTP+FN\text{recall} = \text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FN}}}

Die Recall-Metrik hilft zu verstehen, wie häufig ein Fehler 2. Art auftritt. Hoher Recall bedeutet, dass Fehler 2. Art selten sind, während niedriger Recall auf häufige Fehler 2. Art hinweist.

Allerdings haben sowohl Präzision als auch Recall ihre Einschränkungen. Beispielsweise erreicht ein Modell, das ausschließlich die positive Klasse (1) vorhersagt, einen perfekten Recall, aber seine Präzision ist schlecht. Umgekehrt erzielt ein Modell, das nur eine positive Instanz korrekt vorhersagt und alles andere als negativ klassifiziert, eine perfekte Präzision, aber einen katastrophalen Recall.

Dies zeigt, dass es einfach ist, ein Modell mit perfekter Präzision oder perfektem Recall zu erstellen, aber deutlich schwieriger, eines zu entwickeln, das in beiden Metriken gut abschneidet. Daher 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 Präzision und Recall. Das harmonische Mittel wird dem regulären (arithmetischen) Mittel vorgezogen, da es Situationen bestraft, in denen einer der Werte (entweder Präzision oder Recall) niedrig ist. Dadurch stellt es ein ausgewogeneres Maß für die Leistungsfähigkeit eines Modells dar.

F1=21precision+1recall=2precisionrecallprecision+recall\text{F1} = \frac{2}{\frac{1}{\text{precision}} + \frac{1}{\text{recall}}} = \frac{2 \cdot \text{precision} \cdot \text{recall}}{\text{precision} + \text{recall}}

Der F1-Score vereint sowohl Präzision als auch Recall in einer einzigen Kennzahl. Er ist nur dann hoch, wenn sowohl Präzision als auch Recall relativ hoch sind, was ihn zu einem nützlichen Maß macht, wenn beide Fehlertypen ausgewogen betrachtet werden sollen.

Die Wahl der richtigen Kennzahl hängt von der jeweiligen Aufgabe ab. Accuracy (oder Balanced Accuracy bei unausgeglichenen Datensätzen) ist intuitiv und bietet einen allgemeinen Überblick über die Gesamtleistung des Modells. Für detailliertere Einblicke in die Fehlertypen hilft Präzision 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 beide Fehlertypen ist.

Note
Mehr erfahren

Eine weitere häufig verwendete Kennzahl ist ROC/AUC, über die Sie in diesem Artikel nachlesen 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 Sie Metriken wie Precision, Recall und F1-Score auf einmal erhalten möchten, bietet sklearn die Funktion classification_report() an:

12345678910111213
import 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))
copy
Note
Hinweis

Support bezeichnet die Anzahl der tatsächlichen Vorkommen jeder Klasse im Testdatensatz. Macro avg berechnet den Durchschnitt jeder Metrik (Präzision, 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 (basierend auf ihrem Support) stärker.

question mark

Welche Bewertungsmetrik bietet ein Gleichgewicht zwischen Präzision und Recall und liefert einen einzelnen Wert, der beide widerspiegelt?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 2
some-alt