Prüfung der Modellverzerrung mit ausgewogenen Datensätzen mit Mimesis

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

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert