In der Welt des maschinellen Lernens, sei es bei etablierten Klassifikatoren oder modernen Modellen wie großen Sprachmodellen (LLMs), besteht oft das Risiko, dass Algorithmen unbewusst Vorurteile aus den historischen Trainingsdatensätzen übernehmen. In Szenarien mit hohen Einsätzen oder sensiblen Daten stellt sich die Frage, wie man überprüfen kann, ob ein Modell voreingenommen ist, ohne reale Informationen zu gefährden.
Einführung
Dieser praxisorientierte Artikel zeigt, wie man ein einfaches Klassifikationsmodell für die „Kreditgenehmigung“ auf voreingenommenen Daten trainiert. Hierbei nutzen wir Mimesis, eine Open-Source-Bibliothek, die dabei hilft, einen perfekt ausgewogenen, kontrafaktischen Datensatz zu generieren. Damit können „fiktive“ Nutzer mit identischen finanziellen Hintergründen, jedoch unterschiedlichen demografischen Merkmalen getestet werden, um festzustellen, ob das Modell bestimmte Gruppen diskriminiert.
Schritt-für-Schritt-Anleitung
Beginnen Sie mit der Installation der Mimesis-Bibliothek, falls Sie neu im Umgang damit sind oder in einer Cloud-Notebook-Umgebung wie Colab arbeiten:
pip install mimesis
Bevor wir ein Modell überprüfen können, müssen wir zunächst eines erstellen! In diesem Beispiel generieren wir synthetisch einen Datensatz von 1.000 Bankkunden mit zwei Merkmalen: Geschlecht und Einkommen. Diese Merkmale sind kategorisch und numerisch. Die Datenerstellung wird absichtlich so manipuliert, dass das Geschlecht das binäre Ergebnis der Kreditgenehmigung unfair beeinflusst. Konkret betrachten wir ein Szenario, in dem Männer in der Regel genehmigt werden, während Frauen nur genehmigt werden, wenn sie ein bemerkenswert hohes Einkommen haben.
Erstellung des voreingenommenen Datensatzes
Der Prozess zur Erstellung dieses eindeutig voreingenommenen Datensatzes und zum Training eines Entscheidungsbaum-Klassifikators darauf wird im Folgenden dargestellt:
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
# 1. Simulation von voreingenommene historischen Daten (1000 Instanzen)
np.random.seed(42)
n_train = 1000
genders = np.random.choice(['Male', 'Female'], n_train)
incomes = np.random.randint(30000, 120000, n_train)
approvals = []
for gender, income in zip(genders, incomes):
if gender == 'Male':
# Historisch werden Männer genehmigt
approvals.append(1)
else:
# Nur Frauen mit hohem Einkommen werden genehmigt
approvals.append(1 if income > 80000 else 0)
train_df = pd.DataFrame({'Gender': genders, 'Income': incomes, 'Approved': approvals})
# Umwandlung der Kategorien in Zahlen für das maschinelle Lernmodell
train_df['Gender_Code'] = train_df['Gender'].map({'Male': 1, 'Female': 0})
# 2. Training eines Entscheidungsbaum-Klassifikators
model = DecisionTreeClassifier(max_depth=3)
model.fit(train_df[['Gender_Code', 'Income']], train_df['Approved'])
Generierung von Testdaten mit Mimesis
Im nächsten Schritt zeigen wir Mimesis in Aktion. Wir verwenden diese Bibliothek, um eine kleine Gruppe von Testpersonen mithilfe der Generic-Klasse zu generieren. Dazu definieren wir drei Basisfinanzprofile, die zufällige UUIDs (universell eindeutige Identifikatoren) und ein moderates Einkommen zwischen 40.000 und 70.000 enthalten. Beachten Sie, dass diese Profile noch keine Geschlechtsinformationen enthalten:
from mimesis import Generic
generic = Generic('en')
# Generierung von 3 Basisfinanzprofilen
base_profiles = []
for _ in range(3):
profile = {
'Applicant_ID': generic.cryptographic.uuid(),
'Income': generic.random.randint(40000, 70000) # Moderates Einkommen
}
base_profiles.append(profile)
Die drei neu erstellten Profile könnten beispielsweise so aussehen:
[{'Applicant_ID': '1f1721e1-19af-4bd1-8488-6abf01404ef9', 'Income': 44815},
{'Applicant_ID': '5c862597-7f55-43f4-9d6e-ac9cc0b9083e', 'Income': 47436},
{'Applicant_ID': '3479d4cf-0d9b-4f06-9c43-1c3b7e787830', 'Income': 58194}]
Nun vervollständigen wir unseren kontrafaktischen Datensatz, der den Kern unseres Prüfprozesses bildet! Für jedes der drei Basisprofile erstellen wir zwei geklonte kontrafaktische Instanzen: eine männliche und eine weibliche. Für jedes Paar von Testkunden werden ihre Antrags-ID und ihr Einkommen völlig identisch sein, sodass der einzige Unterschied das Geschlecht ist: Jede Abweichung in der Behandlung durch unser trainiertes Entscheidungsbaum-Modell wird zweifellos ein Beweis für Geschlechtervorurteile sein.
counterfactual_data = []
for profile in base_profiles:
# Version A: Männlicher Kontrafakt
counterfactual_data.append({
'Applicant_ID': profile['Applicant_ID'],
'Gender': 'Male',
'Gender_Code': 1,
'Income': profile['Income']
})
# Version B: Weiblicher Kontrafakt
counterfactual_data.append({
'Applicant_ID': profile['Applicant_ID'],
'Gender': 'Female',
'Gender_Code': 0,
'Income': profile['Income']
})
auditor_df = pd.DataFrame(counterfactual_data)
So könnten die drei Paare von Kunden aussehen:
1f1721e1-19af-4bd1-8488-6abf01404ef9 Male 1 44815
1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Female 0 44815
2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Male 1 47436
3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Female 0 47436
4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Male 1 58194
5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Female 0 58194
Ein wichtiger Punkt, den es zu betonen gilt: Wir haben Mimesis verwendet, um sofort perfekt abgestimmte „Klone“ von Kreditbewerbern mit identischem Einkommen, aber unterschiedlichem Geschlecht zu erstellen. Dies unterstreicht den Wert der Bibliothek, die vollständige statistische Kontrolle zu bieten und ein geschütztes Attribut zu isolieren.
Modellprüfung
Jetzt ist es an der Zeit, das Modell zu befragen und zu sehen, was es offenbart.
audit_df['Predicted_Approval'] = model.predict(audit_df[['Gender_Code', 'Income']])
# Formatierung der Ausgabe zur besseren Lesbarkeit (1 = Genehmigt, 0 = Abgelehnt)
auditor_df['Predicted_Approval'] = audit_df['Predicted_Approval'].map({1: 'Genehmigt', 0: 'Abgelehnt'})
print("\n--- Modellprüfungsresultate ---")
print(audit_df[['Applicant_ID', 'Gender', 'Income', 'Predicted_Approval']].sort_values('Applicant_ID'))
Die Entscheidungsergebnisse, die unser Modell geliefert hat, könnten nicht klarer sein:
--- Modellprüfungsresultate ---
Applicant_ID Gender Income Predicted_Approval
0 1f1721e1-19af-4bd1-8488-6abf01404ef9 Male 44815 Genehmigt
1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Female 44815 Abgelehnt
4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Male 58194 Genehmigt
5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Female 58194 Abgelehnt
2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Male 47436 Genehmigt
3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Female 47436 Abgelehnt
Es ist zu beachten, dass für die exakt gleiche Antrags-ID und das gleiche Einkommen männliche Klone für den Kredit genehmigt werden, während weibliche Klone mit einem solchen moderaten Einkommen in der Regel abgelehnt werden. Die Funktionen von Mimesis, die wir basierend auf Profilen verwendet haben, halfen uns, alle anderen Variablen konstant zu halten und somit erfolgreich die diskriminierenden Entscheidungen des Modells zu isolieren und offenzulegen.
Fazit
In diesem praxisorientierten Artikel haben wir gezeigt, wie Mimesis verwendet werden kann, um ausgewogene, kontrafaktische Datenbeispiele zu generieren — ohne Datenschutz- oder sensible Datenbeschränkungen — die dabei helfen können, das Verhalten eines Modells zu überprüfen und zu identifizieren, ob es voreingenommen handelt oder nicht. Mögliche nächste Schritte, wenn Ihr Modell voreingenommen ist, könnten Folgendes umfassen:
- Erweiterung Ihrer Trainingsdaten mit ausgewogeneren Profilen, um historische Verzerrungen oder Vorurteile zu korrigieren.
- Je nach Modelltyp Verwendung von Strategien zur Neugewichtung des Modells.
- Nutzung von Open-Source-Toolkits für Fairness — beispielsweise AI Fairness 360 — die hilfreich sind, um Vorurteile in maschinellen Lernpipelines zu mindern.
Iván Palomares Carrascosa ist ein führender Experte, Autor, Redner und Berater im Bereich KI, maschinelles Lernen, tiefes Lernen und LLMs. Er schult und leitet andere an, wie sie KI in der realen Welt nutzen können.
Abonnieren Sie den kostenlosen E-Book „KDnuggets Artificial Intelligence Pocket Dictionary“ sowie den führenden Newsletter zu Data Science, maschinellem Lernen, KI und Analytik direkt in Ihr Postfach.
Bildquelle: KI generiert