Unter bestimmten Bedingungen können Sie Fairness-Evaluierungen so konfigurieren, dass sowohl indirekte als auch direkte Verzerrungen für einen Modelleinsatz berücksichtigt werden.
Indirekte Verzerrung tritt auf, wenn eine Funktion in einem Dataset verwendet werden kann, um für eine andere zu stehen. Beispiel: In einem Dataset, in dem "race" kein bekanntes Feature ist, kann ein Feature wie "post-code" häufig eng an "race" angelehnt sein. Die Auswertung der Postleitzahlenfunktion für Verzerrungen ist eine Möglichkeit, indirekte Verzerrungen zu erkennen. In einem anderen Beispiel könnte das Einkaufsprotokoll des Kunden genau dem Geschlecht entsprechen. Daher kann selbst ein Vorhersagemodell, das keine typischen geschützten Attribute wie Rasse, Alter oder Geschlecht enthält, auf verzerrte Ergebnisse hinweisen.
Indirekte Verzerrungen werden analysiert, wenn die folgenden Bedingungen erfüllt sind:
- Zur Ermittlung von Korrelationen müssen die Daten ausreichend umfassend sein (mehr als 4000 Datensätze).
- Die Trainingsdaten müssen die Metafelder einschließen. Sie müssen das Modell mit einer Teilmenge der Datenfelder trainieren. Diese zusätzlichen Felder (Metafelder) dienen zur Bestimmung der indirekten Verzerrung. (Schließen Sie die Metafelder ein, verwenden Sie sie jedoch beim Modelltraining nicht.)
- Die Nutzdatenprotokollierung muss Metafelder enthalten und ausgeführt werden, bevor die Fairnessüberwachung konfiguriert wird. Sie müssen diese Methode verwenden, um die Metafelder hochzuladen. Die Nutzdatenprotokollierung für indirekte Verzerrung erfordert zwei Typen von Eingaben: 1) Trainingsmerkmale mit Werten und 2) Metafelder mit Werten.
- Wenn Sie die Fairnessüberwachung konfigurieren, wählen Sie die zusätzlichen Felder für die Überwachung aus.
Typischer Ablauf für indirekte Verzerrung
Sie können jedoch indirekte Verzerrung für Vorproduktions-und Produktionsmodelle bestimmen, für die die Modelle unterschiedliche Spalten benötigen. Die Testdaten, die zur Auswertung von Vorproduktionsmodellen verwendet werden, und die Rückmeldedaten, die zur Auswertung von Vorproduktions- oder Produktionsmodellen verwendet werden, unterscheiden sich in der Verwendung von Metaspalten. Metaspalten sind für die Testdaten in der Vorproduktion erforderlich und können nicht in die Rückmeldedaten eingeschlossen werden, die für die Vorproduktions- und Produktionsmodelle verwendet werden. Ein typischer Ablauf könnte die folgenden Schritte enthalten:
- Erstellen Sie Trainingsdaten, die sowohl Merkmalspalten als auch Metaspalten enthalten. Die Metaspalten enthalten Daten, die nicht für das Training des Modells verwendet werden.
- Konfigurieren Sie den Fairness-Monitor mit den Meta-Spalten.
- Laden Sie während der Vorproduktion die Testdaten hoch, die sowohl Merkmalspalten als auch Metaspalten enthalten. Diese Testdaten müssen mithilfe der CSV-Option Testdaten importieren hochgeladen werden.
- Während der Vorproduktion können Sie verschiedene Versionen des Modells verwenden, während Sie die indirekten Verzerrungsmaße verwenden, um sicherzustellen, dass Ihr finales Modell frei von Verzerrungen ist.
- Nachdem Sie das Modell in die Produktionsumgebung gesendet haben, sollten die Rückmeldedaten keine der Metaspalten enthalten, sondern nur Merkmalspalten, die zum Trainieren des Modells verwendet wurden.
Beispiel für eine JSON-Nutzdatendatei mit Metadatenfeldern
Die folgende Beispieldatei zeigt JSON-Nutzdaten mit den Feldern und Werten, die zum Trainieren des Modells verwendet werden. Die Metafelder und Werte, die für die Analyse der indirekten Verzerrung verwendet werden, werden ebenfalls eingeschlossen. Die Metafelder werden nicht zum Trainieren des Modells verwendet. Vielmehr werden sie für verschiedene Arten von Analysen reserviert, die versuchen, sie mit der Verzerrung im Modell zu korrelieren. Obwohl die Metafelder einen beliebigen Datentyp haben können, handelt es sich bei ihnen in der Regel um geschützte Attribute wie Geschlecht ('sex'), Rasse ('race') oder Alter ('age').
[request_data = {
"fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K"],
"values": [[28, "F", "LOW", "HIGH", 0.61, 0.026]]
}
response_data = {
"fields": ["AGE", "SEX", "BP", "CHOLESTEROL", "NA", "K", "probability", "prediction", "DRUG"],
"values": [[28, "F", "LOW", "HIGH", 0.61, 0.026, [0.82, 0.07, 0.0, 0.05, 0.03], 0.0, "drugY"]]
}
request_data = <put your data here>
response_data = <put your data here>
records = [PayloadRecord(request=request_data, response=response_data, response_time=18),
PayloadRecord(request=request_data, response=response_data, response_time=12)]
subscription.payload_logging.store(records=records)
Metawerte müssen im Format eines Arrays von Arrays vorliegen:
"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}
Weitere Informationen
- Verzerrungsbereinigungsoptionen
- Für ein Notizbuch für indirekte Verzerrungen, Indirect Bias detection
Übergeordnetes Thema: Modellevaluierungen konfigurieren