Wie gut ist eine Suche?
Precision und Recall sind zwei Maße, die sagen, wie gut eine Suche arbeitet. Die Precision (Genauigkeit) fragt, wie viele der gefundenen Dokumente passen. Der Recall (Trefferquote) fragt, wie viele der passenden Dokumente gefunden wurden.
Ohne solche Zahlen bleibt „die neue Suche ist besser“ eine Meinung. Mit ihnen können Sie zwei Suchen fair vergleichen.
Am Ende dieser Lektion
Notiz
Ich kann eine Suche mit Precision und Recall bewerten.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| relevant | ein Dokument, das zur Anfrage wirklich passt |
| abgerufen | ein Dokument, das die Suche als Treffer liefert |
| Precision | der Anteil der abgerufenen Dokumente, die relevant sind |
| Recall | der Anteil der relevanten Dokumente, die abgerufen wurden |
| Precision bei k | die Precision der ersten k Treffer |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Relevant und abgerufen sind zwei verschiedene Mengen
Ein Mensch entscheidet, welche Dokumente zu einer Anfrage passen. Sie heißen relevant. Die Suche liefert ihrerseits eine Trefferliste. Diese Dokumente heißen abgerufen.
Im besten Fall sind beide Mengen gleich. In der Wirklichkeit überlappen sie nur. Die Dokumente, die in beiden Mengen stehen, nennt man richtige Treffer.
Beispiel: eine Trefferliste und die relevanten Dokumente
| Menge | Dokumentnummern | Anzahl |
|---|---|---|
| abgerufen (die Suche liefert) | 3, 7, 1, 9, 4 | 5 |
| relevant (so entschieden) | 1, 3, 5, 8 | 4 |
| richtige Treffer (beides) | 1, 3 | 2 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Precision und Recall teilen durch verschiedene Mengen
Die Precision ist die Zahl der richtigen Treffer geteilt durch die Zahl der abgerufenen Dokumente. Im Beispiel sind das 2 durch 5, also 0,4. Von fünf Treffern passen zwei.
Der Recall ist die Zahl der richtigen Treffer geteilt durch die Zahl der relevanten Dokumente. Hier sind das 2 durch 4, also 0,5. Die Suche fand die Hälfte der passenden Dokumente.
Precision und Recall ausrechnen
ergebnis = [3, 7, 1, 9, 4]
relevant = [1, 3, 5, 8]
richtig = 0
for nummer in ergebnis:
if nummer in relevant:
richtig = richtig + 1
precision = richtig / len(ergebnis)
recall = richtig / len(relevant)
print("richtig gefunden:", richtig)
print("Precision:", precision)
print("Recall:", recall)
# Entfernen Sie 9 und 4 aus dem Ergebnis. Was passiert mit beiden Werten?
Beide Werte im Terminal
docker exec jupyter python3 -c "r=[3,7,1,9,4]; rel=[1,3,5,8]; hits=len([x for x in r if x in rel]); print(hits / len(r), hits / len(rel))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Alles liefern: voller Recall, kaum Precision
Beide Werte ziehen in verschiedene Richtungen. Eine Suche, die nur ein sicheres Dokument liefert, hat hohe Precision, aber findet fast nichts. Eine Suche, die alle Dokumente liefert, hat vollen Recall, aber fast alles davon ist unbrauchbar.
Eine gute Suche sucht den Mittelweg. Der F-Wert fasst beide zusammen: zwei mal Precision mal Recall, geteilt durch ihre Summe.
Beispiel: 100 Dokumente, 10 davon relevant
| Die Suche liefert | Richtige Treffer | Precision | Recall |
|---|---|---|---|
| 1 Dokument | 1 | 1,0 | 0,1 |
| 10 Dokumente | 7 | 0,7 | 0,7 |
| 100 Dokumente (alle) | 10 | 0,1 | 1,0 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Precision bei k: nur die ersten Treffer zählen
ergebnis = [3, 7, 1, 9, 4]
relevant = [1, 3, 5, 8]
for k in [1, 3, 5]:
richtig = 0
for nummer in ergebnis[:k]:
if nummer in relevant:
richtig = richtig + 1
print("Precision bei", k, ":", round(richtig / k, 3))
# Tauschen Sie die erste und die dritte Nummer. Wie ändert sich Precision bei 1?
Ein häufiger Fehler
Warnung
Viele halten eine hohe Precision allein für eine gute Suche. Eine Suche mit einem einzigen richtigen Treffer hat Precision 1 und übersieht fast alles. Bewerten Sie immer beide Werte zusammen.
Der F-Wert im Terminal
docker exec jupyter python3 -c "p=0.4; r=0.5; print(round(2 * p * r / (p + r), 3))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.