Wie gut ist ein Modell wirklich?
Ein Modell zu beurteilen heißt, seine Vorhersagen mit der Wahrheit zu vergleichen, und zwar an Daten, die es nie gesehen hat. Genauigkeit allein genügt dafür nicht, denn sie verbirgt, welche Fehler passieren.
Eine Bibliothek sagt voraus, welche Bücher verspätet zurückkommen, um rechtzeitig zu mahnen. Eine zu Unrecht verschickte Mahnung ärgert, eine vergessene kostet Geld. Beide Fehler muss man getrennt sehen.
Am Ende dieser Lektion
Notiz
Ich kann ein Modell mit Konfusionsmatrix, Precision und Recall beurteilen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Testmenge | Zeilen, die das Modell beim Lernen nie gesehen hat |
| Konfusionsmatrix | eine Tabelle der richtigen und falschen Vorhersagen |
| Precision | der Anteil echter Treffer unter allen gemeldeten |
| Recall | der Anteil gefundener unter allen echten Fällen |
| Genauigkeit | der Anteil aller richtigen Vorhersagen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Testmenge zeigt, was ein Modell wirklich kann
Ein Modell, das seine Lernzeilen auswendig kennt, wirkt dort fehlerfrei und versagt an neuen Zeilen. Deshalb hält man vor dem Lernen einen Teil der Daten zurück, die Testmenge.
Das Modell lernt nur an den übrigen Zeilen. Seine Güte misst man allein an der Testmenge, denn nur sie ahmt neue Bücher nach.
Eine Konfusionsmatrix zählt vier Arten von Ergebnissen
Wir nennen „verspätet“ das Positive. Ein Buch kann richtig als verspätet erkannt sein, zu Unrecht so genannt werden, übersehen werden oder richtig als pünktlich gelten.
Die Konfusionsmatrix zählt alle vier Fälle. Daraus ergeben sich Genauigkeit, Precision und Recall.
Beispiel: zwölf Bücher der Testmenge
| Als verspätet gemeldet | Als pünktlich gemeldet | Summe | |
|---|---|---|---|
| Wirklich verspätet | 3 (richtig positiv) | 2 (falsch negativ) | 5 |
| Wirklich pünktlich | 1 (falsch positiv) | 6 (richtig negativ) | 7 |
| Summe | 4 | 8 | 12 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die richtigen Treffer zählen
docker exec jupyter python3 -c "print(sum(1 for w, g in zip([1,1,1,1,1,0,0,0,0,0,0,0],[1,1,1,0,0,1,0,0,0,0,0,0]) if w == 1 and g == 1))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Precision und Recall fragen Verschiedenes
Die Precision fragt: Von den Büchern, die das Modell als verspätet meldet, wie viele sind es wirklich? Hier 3 von 4, also 0,75.
Der Recall fragt: Von den wirklich verspäteten Büchern, wie viele findet das Modell? Hier 3 von 5, also 0,6. Wer Mahnungen nie zu Unrecht verschicken will, achtet auf die Precision, wer keine vergessen will, auf den Recall.
Die vier Zahlen in Python zählen
# 1 heißt: Das Buch kommt verspätet zurück. Zwölf Bücher der Testmenge.
wahr = [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]
geschaetzt = [1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0]
richtig_positiv = 0
falsch_positiv = 0
falsch_negativ = 0
richtig_negativ = 0
for i in range(len(wahr)):
if wahr[i] == 1 and geschaetzt[i] == 1:
richtig_positiv = richtig_positiv + 1
elif wahr[i] == 0 and geschaetzt[i] == 1:
falsch_positiv = falsch_positiv + 1
elif wahr[i] == 1 and geschaetzt[i] == 0:
falsch_negativ = falsch_negativ + 1
else:
richtig_negativ = richtig_negativ + 1
print(richtig_positiv, falsch_positiv, falsch_negativ, richtig_negativ)
print("Präzision:", richtig_positiv / (richtig_positiv + falsch_positiv))
print("Trefferquote:", richtig_positiv / (richtig_positiv + falsch_negativ))
# Ändern Sie geschaetzt so, dass das Modell nie "verspätet" sagt. Was geschieht mit der Präzision?
Ein häufiger Fehler
Warnung
Viele halten ein Modell mit hoher Genauigkeit für gut. Sind nur 5 von 100 Büchern verspätet, erreicht ein Modell, das nie „verspätet“ sagt, schon 95 Prozent und findet doch kein einziges. Prüfen Sie deshalb den Recall und die Precision der seltenen Klasse.