Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Precision und Recall: eine Suche bewerten

Nach dieser Lektion: Ich kann eine Suche mit Precision und Recall bewerten.

Lektion, 50 Min.2 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

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

BegriffWas er bedeutet
relevantein Dokument, das zur Anfrage wirklich passt
abgerufenein Dokument, das die Suche als Treffer liefert
Precisionder Anteil der abgerufenen Dokumente, die relevant sind
Recallder Anteil der relevanten Dokumente, die abgerufen wurden
Precision bei kdie 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

MengeDokumentnummernAnzahl
abgerufen (die Suche liefert)3, 7, 1, 9, 45
relevant (so entschieden)1, 3, 5, 84
richtige Treffer (beides)1, 32

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

Code: python
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

Befehl
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 liefertRichtige TrefferPrecisionRecall
1 Dokument11,00,1
10 Dokumente70,70,7
100 Dokumente (alle)100,11,0

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Precision bei k: nur die ersten Treffer zählen

Code: python
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

Befehl
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.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.