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

Fairness eines Modells messen

Nach dieser Lektion: Ich kann messen, ob ein Modell zwei Gruppen gleich behandelt.

Lektion, 55 Min.1 BefehlJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Fairness lässt sich zählen

Fairness messen heißt, die Entscheidungen eines Modells für jede Gruppe getrennt zu zählen und die Raten zu vergleichen. Erst dann sieht man, ob eine Gruppe öfter abgelehnt wird als eine andere.

Ein Modell sortiert Kreditanträge vor. Gruppe A bekommt öfter ein Ja als Gruppe B. Ist das unfair? Die Frage hat mehr als eine Antwort, und diese Lektion zeigt zwei davon.

Am Ende dieser Lektion

Notiz

Ich kann messen, ob ein Modell zwei Gruppen gleich behandelt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
GruppeMenschen mit einem gemeinsamen MerkmalA und B
Positive Entscheidungdie Entscheidung, die etwas gewährtgenehmigt
Auswahlrateder Anteil einer Gruppe mit positiver Entscheidung
Trefferquoteder Anteil der wirklich Geeigneten, die das Modell erkennt
Fairnessmaßeine Zahl, die zwei Gruppen vergleicht

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

Die Auswahlrate zählt die Ja-Entscheidungen je Gruppe

Die Auswahlrate einer Gruppe ist der Anteil ihrer Zeilen mit einer positiven Entscheidung, hier einer Genehmigung. Sie rechnen: Genehmigte der Gruppe geteilt durch alle Anträge der Gruppe.

Sind die Raten verschieden, behandelt das Modell die Gruppen nicht gleich. Ein Unterschied ist noch kein Beweis für Unrecht, aber ein Grund, genauer hinzusehen.

Beispiel: Auswahlrate zweier Gruppen

GruppeAnträgeGenehmigtAuswahlrate
A100600,60
B100400,40
Unterschied0,20

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

Die Auswahlrate von Hand berechnen

Code: python
# Jede Zeile: Gruppe, wirklich zahlungsfähig (1 oder 0), genehmigt (1 oder 0)
antraege = [["A", 1, 1], ["A", 1, 1], ["A", 0, 1], ["A", 0, 0],
            ["B", 1, 1], ["B", 1, 0], ["B", 0, 1], ["B", 0, 0]]
for gruppe in ["A", "B"]:
    anzahl = 0
    genehmigt = 0
    for zeile in antraege:
        if zeile[0] == gruppe:
            anzahl = anzahl + 1
            genehmigt = genehmigt + zeile[2]
    print(gruppe, "Auswahlrate:", genehmigt / anzahl)
# Setzen Sie bei der zweiten Zeile von B die Entscheidung auf 1. Wie ändert sich die Rate von B?

Die Trefferquote fragt nach den Geeigneten

Die Trefferquote fragt: Wie viele der Personen, die wirklich zahlungsfähig sind, bekommen ein Ja? Sie ist der Anteil der Geeigneten, die das Modell erkennt.

Ein zweites Modell hat für beide Gruppen dieselbe Auswahlrate von 0,60. Trotzdem bekommen in Gruppe A neun von zehn Geeigneten ein Ja und in Gruppe B nur drei von vier.

Beispiel: gleiche Auswahlrate, andere Trefferquote

GruppeAnträgeZahlungsfähigGenehmigtDavon zahlungsfähigAuswahlrateTrefferquote
A1005060450,600,90
B1004060300,600,75

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

Auch eine einfache Regel hat Raten

Eine Regel ist ein winziges Modell. Die Regel „zweite Aushilfe rufen ab 15 Grad“ soll volle Tage erkennen, also Tage ab 300 Ausleihen.

Der Befehl unten rechnet für jede Wetterart die Auswahlrate und die Trefferquote. Die Wetterarten sind hier die Gruppen. Es geht um Tage, nicht um Menschen, aber das Zählen ist dasselbe.

Raten je Wetterart berechnen

Befehl
docker exec jupyter python3 -c "import csv; z = list(csv.DictReader(open('hires.csv'))); [print(w, 'Auswahlrate', round(sum(1 for x in z if x['weather'] == w and float(x['temp_c']) >= 15) / sum(1 for x in z if x['weather'] == w), 2), 'Trefferquote', round(sum(1 for x in z if x['weather'] == w and int(x['hires']) >= 300 and float(x['temp_c']) >= 15) / sum(1 for x in z if x['weather'] == w and int(x['hires']) >= 300), 2)) for w in ['sunny', 'cloudy', 'rainy']]"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zwei Definitionen von fair können sich widersprechen

Gleiche Auswahlrate und gleiche Trefferquote sind zwei Ziele, und beide klingen fair. Unterscheiden sich die Gruppen in der Wirklichkeit, etwa im Anteil der Zahlungsfähigen, lassen sie sich bei einem unvollkommenen Modell nicht zugleich erreichen.

Fairness ist deshalb keine Zahl, die man abliest. Menschen müssen entscheiden, welcher Fehler schwerer wiegt, und es aufschreiben.

Ein häufiger Fehler

Warnung

Viele denken, ein Modell sei fair, wenn seine Genauigkeit insgesamt hoch ist. Die große Gruppe bestimmt das Ergebnis, und ein Unterschied zur kleinen Gruppe geht darin unter. Messen Sie deshalb immer getrennt je Gruppe.

Weiterführend: Raten nach Wochentag

Wiederholen Sie die Rechnung im Notebook mit den Gruppen „Wochenende“ und „Werktag“ statt der Wetterarten. Verwenden Sie dieselbe Regel ab 15 Grad.

Schreiben Sie zwei Sätze: Welche Gruppe wird von der Regel öfter gewählt, und bei welcher werden die vollen Tage besser erkannt?

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