Menu
CoddyTech

Die Entscheidungsschwelle

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 17 von 58.

predict sagt Ja, wenn die Wahrscheinlichkeit den Schwellenwert 0.5 überschreitet. Ein übersehenes defektes Display kann jedoch mehr kosten als ein zweiter Blick. Senke den Schwellenwert:

Vierzehn Handybildschirme auf einer Linie entsprechend ihrer Wahrscheinlichkeit, defekt zu sein: sechs defekte Quadrate, acht einwandfreie Punkte. Beim Schwellenwert 0.5 werden 4 von 6 Defekten erkannt, bei 1 Fehlalarm; bei 0.3 alle 6, bei 4 Fehlalarmen

Ein Fehlalarm ist ein unauffälliger Bildschirm, der markiert wurde. Wähle deinen eigenen Schwellenwert mithilfe eines Vergleichs:

proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3  # True: Diesen Bildschirm prüfen

Bei einem niedrigeren Wert erfasst es mehr tatsächliche Fälle und schlägt häufiger fälschlich Alarm; bei einem höheren Wert ist es umgekehrt. Die Wahrscheinlichkeiten ändern sich nie, nur der Schwellenwert.

Wähle es danach aus, wie viel jeder Fehler kostet.

challenge icon

Aufgabe

Mittel

Eine Fluggesellschaft bucht Passagiere, die ihren Anschlussflug wahrscheinlich verpassen werden, schon vor ihrer Landung um. Das Grundgerüst trainiert ein Modell mit connections.csv und liest einen Schwellenwert ein.

  1. Ermittle die Wahrscheinlichkeit, mit der die Testpassagiere ihren Anschlussflug verpassen.
  2. Zähle für 0.5 und danach für den Schwellenwert die umgebuchten Passagiere, die tatsächlich verpassten Anschlussflüge (von allen verpassten) und die unnötigen Umbuchungen.
  3. Gib für jeden Schwellenwert eine Zeile aus.

Für eine andere Fluggesellschaft und 0.25:

Threshold 0.5: 9 rebooked, 7 of 15 misses caught, 2 needless rebookings
Threshold 0.25: 21 rebooked, 13 of 15 misses caught, 8 needless rebookings

Probier es selbst

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Eine Zeile pro Passagier: Umsteigezeit und Verspätung des ankommenden Flugs in Minuten, Terminalwechsel (1 oder 0), aufgegebenes Gepäck; missed ist 1 oder 0
trips = pd.read_csv("connections.csv")
features = ["layover_min", "delay_min", "terminal_change", "checked_bags"]
X_train, X_test, y_train, y_test = train_test_split(trips[features], trips["missed"], test_size=0.25, random_state=0)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
threshold = float(input())

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler