En determinadas condiciones, puede configurar las evaluaciones de imparcialidad para que tengan en cuenta el sesgo indirecto, así como el sesgo directo para la implantación de un modelo.
El sesgo indirecto se produce cuando una característica de un conjunto de datos se puede utilizar para representar a otra. Por ejemplo, en un conjunto de datos en el que la raza no es una característica conocida, una característica como el código postal a menudo puede realizar un seguimiento cercano a la raza. La evaluación de la característica de código postal para sesgo es una forma de detectar sesgo indirecto. En otro ejemplo, el historial de compras del cliente puede corresponder estrechamente con el sexo. Por lo tanto, incluso un modelo predictivo que no contiene ninguno de los atributos protegidos típicos como raza, edad o sexo podría indicar resultados sesgados.
El sesgo indirecto se analiza cuando se cumplen las siguientes condiciones:
- Para encontrar correlaciones, el conjunto de datos debe ser suficientemente grande (más de 4000 registros).
- Los datos de entrenamiento deben incluir los metacampos. Debe entrenar el modelo en un subconjunto de campos de datos. Estos campos adicionales, los metacampos, son para determinar el sesgo indirecto. (Incluir los metacampos, pero no utilizarlos en el entrenamiento del modelo).
- El registro de carga útil debe contener metacampos y ejecutarse antes de configurar el supervisor de equidad. Debe utilizar este método para cargar los campos meta. El registro de carga útil para sesgo indirecto requiere dos tipos de entrada: 1) características de entrenamiento con valores y 2) metacampos con valores.
- Al configurar el supervisor de equidad, seleccione los campos adicionales que se deben supervisar.
Flujo de trabajo típico para sesgo indirecto
Sin embargo, puede determinar el sesgo indirecto para los modelos de preproducción y producción que los modelos requieren columnas diferentes. Los datos de prueba que se utilizan para evaluar los modelos de preproducción y los datos de comentarios que se utilizan para evaluar los modelos de preproducción o de producción difieren en el uso de las columnas meta. Las columnas meta son necesarias para los datos de prueba para la preproducción y no se pueden incluir en los datos de comentarios que se utilizan para los modelos de preproducción o producción. Un flujo de trabajo típico puede incluir los pasos siguientes:
- Cree datos de entrenamiento que contengan columnas de características y columnas meta. Las columnas meta contienen datos que no se utilizan para entrenar el modelo.
- Configure el monitor de equidad con las meta columnas.
- Durante la preproducción, cargue datos de prueba que contengan tanto las columnas de características como las columnas meta. Estos datos de prueba se deben cargar utilizando la opción CSV Importar datos de prueba.
- Durante la preproducción, puede intercalar en distintas versiones del modelo mientras utiliza las medidas de sesgo indirecto para asegurarse de que el modelo final está libre de sesgo.
- Después de enviar el modelo a producción, los datos de comentarios no deben tener ninguna de las columnas meta, solo las columnas de características que se han utilizado para entrenar el modelo.
Archivo de carga útil JSON de ejemplo con metacampos
El siguiente archivo de ejemplo muestra una carga útil JSON con los campos y valores que se utilizan para entrenar el modelo. También se incluyen los metacampos y los valores que se utilizan para el análisis de sesgo indirecto. Los metacampos no se utilizan para entrenar el modelo, sino que se reservan para un tipo diferente de análisis que intenta correlacionarlos con el sesgo del modelo. Aunque los metacampos pueden ser cualquier tipo de datos, suelen ser atributos protegidos, como sexo, raza o edad.
[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)
Los metavalores deben tener el formato de un conjunto de matrices:
"meta": {
"fields": ["age", "race", "sex"],
"values": [
[32, "Black", "Male"]
]
}
Más información
- Opciones de eliminación del sesgo
- Para un cuaderno de sesgo indirecto, Detección de sesgo indirecto
Tema padre: Configuración de evaluaciones de modelo