Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Metriken | Modelle Vergleichen
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
Klassifikation mit Python

bookMetriken

Bis zu diesem Punkt haben wir Accuracy als Hauptmetrik zur Bewertung der Modellleistung verwendet. Allerdings weist Accuracy einige Einschränkungen auf. Im Folgenden werden deren Schwächen 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=korrektkorrekt+inkorrekt=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{korrekt}}{\text{korrekt} + \text{inkorrekt}} = \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. Stellen Sie sich beispielsweise 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 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, und in diesen Fällen ist die balancierte Accuracy eine bessere Metrik.

Ausgewogene Genauigkeit

Ausgewogene Genauigkeit berechnet den Anteil der korrekt vorhergesagten positiven und den Anteil der korrekt vorhergesagten negativen Ergebnisse 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. Das Problem wird also adressiert.

Allerdings unterscheidet die ausgewogene Genauigkeit weiterhin nicht zwischen Fehlern 1. Art und Fehlern 2. Art – 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=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

Durch die Verwendung der Präzisionsmetrik kann nachvollzogen werden, 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 dabei zu verstehen, wie häufig ein Fehler 2. Art auftritt. Hoher Recall bedeutet, dass Fehler 2. Art selten sind, während niedriger Recall darauf hinweist, dass sie häufig vorkommen.

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 zwar einfach ist, ein Modell mit perfekter Präzision oder perfektem Recall zu erstellen, es jedoch deutlich schwieriger ist, ein Modell 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 kombiniert 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 balancierte Accuracy bei unausgeglichenen Datensätzen) ist intuitiv und bietet einen allgemeinen Eindruck von der Gesamtleistung des Modells. Für detailliertere Einblicke in die Fehlertypen des Modells 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

Ein weiteres häufig verwendetes Maß ist ROC/AUC, über das Sie in diesem Artikel nachlesen können.

Metriken in Python

Scikit-learn stellt Implementierungen für alle 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 Evaluationsmetrik stellt ein Gleichgewicht zwischen Präzision und Recall her 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

bookMetriken

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 deren Schwächen 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=korrektkorrekt+inkorrekt=TP+TNTP+TN+FP+FN\text{accuracy} = \frac{\text{korrekt}}{\text{korrekt} + \text{inkorrekt}} = \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. Stellen Sie sich beispielsweise 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 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, und in diesen Fällen ist die balancierte Accuracy eine bessere Metrik.

Ausgewogene Genauigkeit

Ausgewogene Genauigkeit berechnet den Anteil der korrekt vorhergesagten positiven und den Anteil der korrekt vorhergesagten negativen Ergebnisse 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. Das Problem wird also adressiert.

Allerdings unterscheidet die ausgewogene Genauigkeit weiterhin nicht zwischen Fehlern 1. Art und Fehlern 2. Art – 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=TPTP+FP\text{precision} = \frac{\textcolor{green}{\text{TP}}}{\textcolor{green}{\text{TP}} + \textcolor{red}{\text{FP}}}

Durch die Verwendung der Präzisionsmetrik kann nachvollzogen werden, 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 dabei zu verstehen, wie häufig ein Fehler 2. Art auftritt. Hoher Recall bedeutet, dass Fehler 2. Art selten sind, während niedriger Recall darauf hinweist, dass sie häufig vorkommen.

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 zwar einfach ist, ein Modell mit perfekter Präzision oder perfektem Recall zu erstellen, es jedoch deutlich schwieriger ist, ein Modell 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 kombiniert 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 balancierte Accuracy bei unausgeglichenen Datensätzen) ist intuitiv und bietet einen allgemeinen Eindruck von der Gesamtleistung des Modells. Für detailliertere Einblicke in die Fehlertypen des Modells 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

Ein weiteres häufig verwendetes Maß ist ROC/AUC, über das Sie in diesem Artikel nachlesen können.

Metriken in Python

Scikit-learn stellt Implementierungen für alle 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 Evaluationsmetrik stellt ein Gleichgewicht zwischen Präzision und Recall her 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