# Einführung
Unabhängig davon, ob es sich um etablierte Klassifikatoren oder hochmoderne Massenmodelle wie große Sprachmodelle (LLMs) handelt, birgt die Entwicklung maschineller Lernlösungen häufig ein Risiko: Algorithmen übernehmen möglicherweise stillschweigend Vorurteile, die dem historischen Trainingsdatensatz innewohnen, auf dem sie trainiert wurden. Aber wie können wir das in einem Szenario mit hohem Risiko oder in einem Szenario, in dem Daten vertraulich sind, tun? Prüfen Sie, ob ein Modell voreingenommen ist ohne die Informationen aus der realen Welt zu beeinträchtigen?
Dieser praktische Artikel führt Sie durch das Coaching eines einfachen Klassifizierungsmodells für die „Kreditgenehmigung“ anhand voreingenommener Daten. Auf dieser Grundlage werden wir verwenden Mimesiseine Open-Supply-Bibliothek, die dabei helfen kann, ein perfekt ausgewogenes, kontrafaktisch Datensatz. Sie können „falsche“ Benutzer mit identischem finanziellen Hintergrund, aber unterschiedlichen demografischen Merkmalen testen und so feststellen, ob das Modell bestimmte Gruppen diskriminiert oder nicht.
# Schritt-für-Schritt-Anleitung
Beginnen Sie mit der Set up der Mimesis-Bibliothek, wenn Sie damit noch nicht vertraut sind oder in einer Cloud-Pocket book-Umgebung wie Colab arbeiten:
Bevor wir ein Modell auditieren, müssen wir uns tatsächlich eines besorgen! In diesem Beispiel werden wir synthetisch einen Datensatz von 1.000 Bankkunden mit nur zwei Merkmalen generieren: Geschlecht und Einkommen. Diese Merkmale sind kategorial bzw. numerisch. Die Datenerstellung wird absichtlich so manipuliert, dass das Geschlechtsattribut das binäre Ergebnis, die Kreditgenehmigung, unfair beeinflusst. Konkret betrachten wir für die Kennzeichnung des Datensatzes ein Szenario, in dem Männer grundsätzlich zugelassen werden, während Frauen nur dann zugelassen werden, wenn sie über ein bemerkenswert hohes Einkommen verfügen.
Der Prozess zum Erstellen dieses eindeutig voreingenommenen Datensatzes und zum Trainieren eines Entscheidungsbaumklassifikators darauf ist unten dargestellt:
import pandas as pd
import numpy as np
from sklearn.tree import DecisionTreeClassifier
# 1. Simulating biased historic knowledge (1000 situations)
np.random.seed(42)
n_train = 1000
genders = np.random.selection(('Male', 'Feminine'), n_train)
incomes = np.random.randint(30000, 120000, n_train)
approvals = ()
for gender, revenue in zip(genders, incomes):
if gender == 'Male':
# Traditionally, males are authorised
approvals.append(1)
else:
# Solely females with excessive revenue are authorised
approvals.append(1 if revenue > 80000 else 0)
train_df = pd.DataFrame({'Gender': genders, 'Revenue': incomes, 'Authorised': approvals})
# Changing classes to numbers for the machine studying mannequin
train_df('Gender_Code') = train_df('Gender').map({'Male': 1, 'Feminine': 0})
# 2. Coaching a Determination Tree classifier
mannequin = DecisionTreeClassifier(max_depth=3)
mannequin.match(train_df(('Gender_Code', 'Revenue')), train_df('Authorised'))
Der nächste Schritt zeigt Mimesis in Aktion. Wir werden diese Bibliothek verwenden, um mithilfe von eine kleine Gruppe von Testpersonen zu generieren Generic Klasse. Dies erfolgt durch die Definition von drei Basisfinanzprofilen, die zufällige UUIDs (universelle eindeutige Kennungen) 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')
# Producing 3 base monetary profiles
base_profiles = ()
for _ in vary(3):
profile = {
'Applicant_ID': generic.cryptographic.uuid(),
'Revenue': generic.random.randint(40000, 70000) # Reasonable revenue
}
base_profiles.append(profile)
Die drei neu erstellten Profile könnten beispielsweise so aussehen:
({'Applicant_ID': '1f1721e1-19af-4bd1-8488-6abf01404ef9', 'Revenue': 44815},
{'Applicant_ID': '5c862597-7f55-43f4-9d6e-ac9cc0b9083e', 'Revenue': 47436},
{'Applicant_ID': '3479d4cf-0d9b-4f06-9c43-1c3b7e787830', 'Revenue': 58194})
Lassen Sie uns den Aufbau unseres kontrafaktischen Beispielsatzes beenden, der den Kern unseres Prüfungsprozesses darstellt! Für jedes der drei Basisprofile erstellen wir zwei geklonte kontrafaktische Instanzen: eine männlich und die andere weiblich. Für jedes Testkundenpaar sind die Antrags-ID und das Einkommen völlig identisch, der einzige Unterschied besteht additionally im Geschlecht: Jeder Unterschied in der Artwork und Weise, wie unser trainiertes Entscheidungsbaummodell sie behandelt, ist zweifellos ein Beweis für eine geschlechtsspezifische Voreingenommenheit.
counterfactual_data = ()
for profile in base_profiles:
# Model A: Male Counterfactual
counterfactual_data.append({
'Applicant_ID': profile('Applicant_ID'),
'Gender': 'Male',
'Gender_Code': 1,
'Revenue': profile('Revenue')
})
# Model B: Feminine Counterfactual
counterfactual_data.append({
'Applicant_ID': profile('Applicant_ID'),
'Gender': 'Feminine',
'Gender_Code': 0,
'Revenue': profile('Revenue')
})
audit_df = pd.DataFrame(counterfactual_data)
So könnten die drei Kundenpaare aussehen:
1f1721e1-19af-4bd1-8488-6abf01404ef9 Male 1 44815
1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Feminine 0 44815
2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Male 1 47436
3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Feminine 0 47436
4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Male 1 58194
5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Feminine 0 58194
Ein wichtiger Punkt, auf den man hier bestehen sollte: Wir haben gerade Mimesis verwendet, um sofort perfekt passende „Klone“ von Kreditantragstellern mit identischem Einkommen, aber unterschiedlichem Geschlecht zu erstellen. Dies unterstreicht den Wert der Bibliothek bei der Bereitstellung vollständiger statistischer Kontrolle und der Isolierung eines geschützten Attributs.
Jetzt ist es an der Zeit, das Modell zu untersuchen und zu sehen, was es preisgibt.
# Asking the mannequin to foretell approval for our counterfactuals
audit_df('Predicted_Approval') = mannequin.predict(audit_df(('Gender_Code', 'Revenue')))
# Formatting the output for readability (1 = Authorised, 0 = Denied)
audit_df('Predicted_Approval') = audit_df('Predicted_Approval').map({1: 'Authorised', 0: 'Denied'})
print("n--- Mannequin Audit Outcomes ---")
print(audit_df(('Applicant_ID', 'Gender', 'Revenue', 'Predicted_Approval')).sort_values('Applicant_ID'))
Die Entscheidungsergebnisse unseres Modells könnten nicht klarer sein:
--- Mannequin Audit Outcomes ---
Applicant_ID Gender Revenue Predicted_Approval
0 1f1721e1-19af-4bd1-8488-6abf01404ef9 Male 44815 Authorised
1 1f1721e1-19af-4bd1-8488-6abf01404ef9 Feminine 44815 Denied
4 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Male 58194 Authorised
5 3479d4cf-0d9b-4f06-9c43-1c3b7e787830 Feminine 58194 Denied
2 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Male 47436 Authorised
3 5c862597-7f55-43f4-9d6e-ac9cc0b9083e Feminine 47436 Denied
Beachten Sie das für genau das Gleiche Applicant_ID Und RevenueFür die Ausleihe werden männliche Klone zugelassen. Mittlerweile werden weibliche Klone mit solch moderatem Einkommen generell abgelehnt. Die auf Profilen basierenden Mimesis-Funktionen haben uns geholfen, alle anderen Variablen konstant zu halten und so die diskriminierende Entscheidungsfindung des Modells erfolgreich zu isolieren und aufzudecken.
# Zusammenfassung
In diesem praktischen Artikel haben wir gezeigt, wie Mimesis verwendet werden kann, um ausgewogene, kontrafaktische Datenbeispiele zu generieren – ohne Datenschutz- oder smart Datenbeschränkungen –, die dabei helfen können, das Verhalten eines Modells zu prüfen und festzustellen, ob sich das Modell voreingenommen verhält oder nicht. Die nächsten Schritte, die Sie unternehmen sollten, wenn Ihr Modell voreingenommen ist, können sein:
- Erweitern Sie Ihre Trainingsdaten mit ausgewogeneren Profilen, um historische Schiefe oder Verzerrungen zu korrigieren.
- Je nach Modelltyp werden Strategien zur Neugewichtung des Modells verwendet.
- Nutzung von Open-Supply-Toolkits für Equity – zum Beispiel KI-Equity 360 – die für die Minderung von Verzerrungen in Pipelines für maschinelles Lernen hilfreich sind.
Iván Palomares Carrascosa ist ein führender Autor, Redner und Berater in den Bereichen KI, maschinelles Lernen, Deep Studying und LLMs. Er schult und leitet andere darin, KI in der realen Welt zu nutzen.
