In determinate condizioni, è possibile configurare le valutazioni di equità in modo da considerare i pregiudizi indiretti e quelli diretti per l'implementazione di un modello.
La distorsione indiretta si verifica quando una funzione in un dataset può essere utilizzata per indicare un'altra funzione. Ad esempio, in un set di dati in cui la razza non è una funzione nota, una funzione come il codice postale può spesso seguire da vicino la gara. La valutazione della funzione codice postale per la distorsione è un modo per rilevare la distorsione indiretta. In un altro esempio, la cronologia degli acquisti dei clienti potrebbe corrispondere strettamente con il sesso. Pertanto, anche un modello predittivo che non contiene nessuno dei tipici attributi protetti come razza, età o sesso potrebbe indicare risultati distorti.
Il pregiudizio indiretto viene analizzato quando sono soddisfatte le seguenti condizioni:
- Per trovare le correlazioni, il dataset deve essere sufficientemente grande (più di 4000 record).
- I dati di addestramento devono includere i campi meta. È necessario addestrare il modello su un sottoinsieme di campi di dati. Questi campi aggiuntivi, i meta - campi, servono a determinare la distorsione indiretta. (Includere i meta - campi, ma non utilizzarli nell'addestramento del modello.)
- La registrazione del payload deve contenere meta campi ed essere eseguita prima della configurazione del monitoraggio della correttezza. È necessario utilizzare questo metodo per caricare i campi meta. La registrazione del payload per la distorsione indiretta richiede due tipi di input: 1) funzioni di training con valori e 2) campi meta con valori.
- Quando si configura il monitor di correttezza, selezionare i campi aggiuntivi da monitorare.
Flusso di lavoro tipico per la distorsione indiretta
Tuttavia, è possibile determinare la distorsione indiretta per i modelli di preproduzione e di produzione per cui i modelli richiedono colonne differenti. I dati di test utilizzati per valutare i modelli di preproduzione e i dati di feedback utilizzati per valutare i modelli di preproduzione o di produzione differiscono sull'utilizzo delle meta colonne. Le meta - colonne sono richieste per i dati di test per la pre - produzione e non possono essere incluse nei dati di feedback utilizzati per i modelli di pre - produzione o di produzione. Un flusso di lavoro tipico potrebbe includere le seguenti operazioni:
- Creare i dati di formazione che contengono sia colonne di funzioni che meta - colonne. Le meta colonne contengono dati che non vengono utilizzati per addestrare il modello.
- Configurare il fairness monitor con le metacolonne.
- Durante la preproduzione, caricare i dati di test che contengono sia le colonne funzione che le colonne meta. Questi dati di test devono essere caricati utilizzando l'opzione CSV Importa dati di test .
- Durante la pre - produzione, è possibile interagire con diverse versioni del modello mentre si utilizzano le misure di distorsione indiretta per garantire che il modello finale sia privo di distorsione.
- Dopo aver inviato il modello alla produzione, i dati di feedback non devono avere alcuna delle meta - colonne, ma solo le colonne di funzioni che sono state utilizzate per addestrare il modello.
File di payload JSON di esempio con meta campi
Il seguente file di esempio mostra un payload JSON con i campi e valori utilizzati per addestrare il modello. Vengono inclusi anche i meta campi e i valori utilizzati per l'analisi della distorsione indiretta. I campi meta non vengono utilizzati per addestrare il modello, ma sono riservati per un tipo diverso di analisi che tenta di correlarli alla distorsione nel modello. Sebbene i meta - campi possano essere qualsiasi tipo di dati, di solito sono attributi protetti, come sesso, razza o età.
[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)
I meta valori devono essere nel formato di un array di array:
"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}
Ulteriori informazioni
- Opzioni di annullamento distorsione
- Per un taccuino per i bias indiretti, rilevamento dei bias indiretti
Argomento principale Configurazione delle valutazioni del modello