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:
- Zum Erkennen von Korrelationen muss das Dataset entsprechend groß sein (mehr als 4000 Datensätze).
- In den Trainingsdaten müssen die Metafelder enthalten sein. Trainieren Sie das Modell mit einem Subset der Datenfelder. Diese zusätzlichen Felder ermöglichen das Erkennen der indirekten Verzerrung. (Schließen Sie die Metafelder ein, verwenden Sie sie jedoch beim Modelltraining nicht.)
- Die Nutzdatenprotokollierung muss Metafelder enthalten und vor dem Konfigurieren der Fairnessüberwachung ausgeführt werden. Sie müssen diese Methode verwenden, um die Metafelder hochzuladen. Für die Nutzdatenprotokollierung für indirekte Verzerrung sind zwei Eingabetypen erforderlich: 1.) Trainingsmerkmale mit Werten und 2.) Metafelder mit Werten.
- Wählen Sie beim Konfigurieren der Fairnessüberwachung die zusätzlichen Felder aus, die überwacht werden sollen.
Typischer Workflow 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. Bei den Testdaten zum Auswerten von Vorproduktionsmodellen und bei den Rückmeldedaten zum Auswerten von Vorproduktions- oder Produktionsmodellen bestehen Unterschiede in der Verwendung von Metaspalten. Metaspalten sind für die Testdaten für Vorproduktionsmodelle erforderlich, sie dürfen jedoch nicht in den Rückmeldedaten für Vorproduktions- oder Produktionsmodelle enthalten sein. Ein typischer Workflow kann die folgenden Schritte enthalten:
- Trainingsdaten erstellen, die sowohl Merkmalspalten als auch Metaspalten enthalten. Die in den Metaspalten enthaltenen Daten werden nicht zum Trainieren des Modells verwendet.
- Konfigurieren Sie den Fairness-Monitor mit den Meta-Spalten.
- In der Vorproduktionsphase Testdaten hochladen, die sowohl Merkmal- 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 das Modell an die Produktionsphase übergeben wurde, sollten die Rückmeldedaten keine Metaspalten enthalten, sondern nur die Merkmalspalten, die zum Trainieren des Modells verwendet wurden.
Beispiel für JSON-Nutzdatendatei mit Metafeldern
Die folgende Beispieldatei enthält JSON-Nutzdaten mit den Feldern und Werten, die zum Trainieren des Modells verwendet werden. Die zum Analysieren der indirekten Verzerrung verwendeten Metafelder und Werte sind ebenfalls enthalten. Die Metafelder werden nicht zum Trainieren des Modell verwendet; sie sind für einen anderen Analysetyp bestimmt. Bei diesem Analysetyp wird versucht, sie mit der Verzerrung im Modell zu korrelieren. Für die Metafelder kann zwar jeder beliebige Datentyp verwendet werden, aber sie sind in der Regel geschützte Attribute wie 'sex' (Geschlecht), 'race' (ethnische Zugehörigkeit) oder 'age' (Alter).
[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)
Das Format für die Metawerte muss ein Array mit Arrays sein:
"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