LoslegenKostenlos loslegen

Präzision-Rückruf-Kompromiss

Bei Klassifizierungsaufgaben taucht oft der Begriff „Präzision-Rückruf-Trade-off” auf. Wo kommt das her?

Normalerweise wird die Klasse mit der höheren Wahrscheinlichkeit ausgewählt, um das Dokument zuzuordnen. Aber was ist, wenn die maximale Wahrscheinlichkeit gleich ist 0.1? Denkst du, dass dieses Dokument mit nur 10 % Wahrscheinlichkeit zu dieser Klasse gehört?

Die Antwort hängt davon ab, was genau das Problem ist. Man kann einen Mindestschwellenwert für die Akzeptanz der Klassifizierung festlegen. Wenn man den Schwellenwert ändert, ändern sich die Werte für Präzision und Recall in entgegengesetzte Richtungen.

Die Variablen „ y_true “ und das Modell „ model “ werden geladen. Wenn die Wahrscheinlichkeit unter dem Schwellenwert liegt, wird das Dokument außerdem der Kategorie „ DEFAULT_CLASS “ (als Klasse „ 2 “ ausgewählt) zugeordnet.

Diese Übung ist Teil des Kurses

Rekursive neuronale Netze (RNNs) für die Sprachmodellierung mit Keras

Kurs anzeigen

Anleitung zur Übung

  • Mit der Methode „ .predict() “ kannst du die Wahrscheinlichkeiten für jede Klasse ermitteln und in der Variablen „ pred_probabilities “ speichern.
  • Nimm die höchste Wahrscheinlichkeit nur an, wenn sie größer oder gleich „ 0.5 “ ist, und speicher die Ergebnisse in der Variablen „ y_pred_50 “.
  • Verwende die Funktionen „ np.argmax() “ und „ np.max() “, um dasselbe für einen Schwellenwert von „ 0.8 “ zu machen.
  • Druck die Variable „ trade_off “ mit allen Metriken aus.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Get probabilities for each class
pred_probabilities = model.____(X_test)

# Thresholds at 0.5 and 0.8
y_pred_50 = [np.argmax(x) if np.max(x) >= ____ else DEFAULT_CLASS for x in pred_probabilities]
y_pred_80 = [np.____(x) if np.____(x) >= 0.8 else DEFAULT_CLASS for x in pred_probabilities]

trade_off = pd.DataFrame({
    'Precision_50': precision_score(y_true, y_pred_50, average=None), 
    'Precision_80': precision_score(y_true, y_pred_80, average=None), 
    'Recall_50': recall_score(y_true, y_pred_50, average=None), 
    'Recall_80': recall_score(y_true, y_pred_80, average=None)}, 
  index=['Class 1', 'Class 2', 'Class 3'])

____
Code bearbeiten und ausführen