?> assessBias - WeAreCAS
fairAITools

assessBias

Descripción

La acción `assessBias` del conjunto de acciones `fairAITools` se utiliza para calcular un conjunto completo de métricas de equidad para modelos predictivos. Permite a los analistas y científicos de datos evaluar si un modelo produce resultados sesgados con respecto a una o más variables sensibles (por ejemplo, género, raza). Esta evaluación es crucial para garantizar que los modelos de aprendizaje automático sean justos y no discriminen a ciertos subgrupos de la población. La acción genera tablas detalladas que resumen las métricas de sesgo, como la paridad demográfica, la paridad de oportunidades y el impacto dispar, facilitando la identificación y cuantificación de posibles sesgos.

fairAITools.assessBias / table={...}, sensitiveVariable={name='...'}, response={name='...'}, predictedVariables={{name='...'}, ...}, event='...', referenceLevel='...', cutoff=0.5, modelTable={name='...'}, modelTableType='ASTORE' | 'DATASTEP' | 'NONE', scoredTable={name='...', replace=true};
Parámetros
ParámetroDescripción
tableEspecifica la tabla de datos de entrada que se utilizará para la evaluación del sesgo.
sensitiveVariableEspecifica la variable sensible (por ejemplo, raza, género) para la cual se evaluará el sesgo del modelo.
responseEspecifica la variable de respuesta (objetivo) real en los datos.
predictedVariablesEspecifica la lista de variables que contienen las predicciones del modelo.
eventEspecifica el valor del evento de interés en la variable de respuesta.
referenceLevelEspecifica el nivel de referencia dentro de la variable sensible para las comparaciones de sesgo.
cutoffEspecifica el umbral de clasificación para convertir las probabilidades predichas en una decisión binaria.
nBinsEspecifica el número de contenedores a utilizar en los cálculos de la curva de elevación (lift).
rocStepEspecifica el tamaño del paso a utilizar para los cálculos de la curva ROC.
modelTableEspecifica la tabla que contiene el modelo a evaluar, que puede ser un astore o código DATA step.
modelTableTypeIndica el tipo de modelo proporcionado en `modelTable` (ASTORE, DATASTEP, o NONE si las predicciones ya están en la tabla de entrada).
scoredTableEspecifica la tabla de salida para almacenar los resultados puntuados si se utiliza un modelo astore o DATA step.
frequencyEspecifica la variable que contiene los valores de frecuencia de las observaciones.
weightEspecifica la variable que contiene los valores de ponderación de las observaciones.
Preparación de datos
Creación de Datos de Préstamos Hipotecarios

Este código crea una tabla CAS llamada `HMEQ_BIAS` que contiene datos sobre préstamos hipotecarios. Incluye información demográfica como el género y la raza, junto con variables financieras. La variable objetivo `BAD` indica si un cliente incumplió con el pago de su préstamo. Esta tabla se utilizará para entrenar un modelo y luego evaluar su equidad.

1DATA casuser.HMEQ_BIAS;
2 SET sampsio.hmeq;
3 IF race = '' THEN race = 'Unknown';
4 IF job = '' THEN job = 'Unknown';
5RUN;

Ejemplos

Este ejemplo realiza una evaluación de sesgo simple en la tabla `HMEQ_PRED`, que ya contiene las predicciones del modelo (`P_BAD1`). Se evalúa el sesgo con respecto a la variable `RACE` (raza), utilizando `BAD` como la respuesta real. Este es el caso de uso más directo donde las predicciones ya están calculadas.

Código SAS® / CAS
¡Copiado!
1PROC CAS;
2 fairAITools.assessBias
3 TABLE={name='HMEQ_PRED'},
4 sensitiveVariable={name='RACE'},
5 response={name='BAD'},
6 predictedVariables={{name='P_BAD1'}},
7 event='1';
8RUN;

Aquí, la evaluación de sesgo se realiza especificando 'White' como el grupo de referencia para la variable sensible `RACE`. Todas las métricas de sesgo relativo se calcularán en comparación con este grupo, lo que permite un análisis más enfocado.

Código SAS® / CAS
¡Copiado!
1PROC CAS;
2 fairAITools.assessBias
3 TABLE={name='HMEQ_PRED'},
4 sensitiveVariable={name='RACE'},
5 response={name='BAD'},
6 predictedVariables={{name='P_BAD1'}},
7 event='1',
8 referenceLevel='White';
9RUN;

Este ejemplo completo primero entrena un modelo de árbol de gradiente boosting y lo guarda como un astore. Luego, la acción `assessBias` utiliza este astore (`modelTable`) para puntuar la tabla de entrada `HMEQ_BIAS` y evaluar el sesgo simultáneamente. Se personalizan varios parámetros como `cutoff`, `nBins` y `rocStep` para un análisis más detallado. Los resultados de la evaluación de sesgo se almacenan en la tabla `ASSESS_RESULTS`.

Código SAS® / CAS
¡Copiado!
1PROC CAS;
2 /* Entrenar un modelo y guardar el astore */
3 decisionTree.gbtreeTrain
4 TABLE={name='HMEQ_BIAS'},
5 target='BAD',
6 inputs={'LOAN', 'MORTDUE', 'VALUE', 'YOJ', 'DEROG', 'DELINQ', 'CLAGE', 'NINQ', 'CLNO', 'DEBTINC'},
7 nominals={'BAD', 'REASON', 'JOB'},
8 savestate={name='HMEQ_ASTORE', replace=true};
9 
10 /* Evaluar el sesgo del modelo usando el astore */
11 fairAITools.assessBias
12 TABLE={name='HMEQ_BIAS'},
13 modelTable={name='HMEQ_ASTORE'},
14 modelTableType='ASTORE',
15 response={name='BAD'},
16 sensitiveVariable={name='RACE'},
17 predictedVariables={{name='P_BAD1'}},
18 event='1',
19 referenceLevel='White',
20 cutoff=0.4,
21 nBins=50,
22 rocStep=0.01,
23 scoredTable={name='ASSESS_RESULTS', replace=true};
24RUN;

Este ejemplo muestra cómo evaluar un modelo que está definido por código DATA Step en lugar de un astore. El código de puntuación se pasa directamente como una cadena en el parámetro `code`. La acción `assessBias` ejecuta este código sobre la tabla `HMEQ_BIAS` para generar predicciones y luego calcula las métricas de sesgo con respecto a la variable `JOB`.

Código SAS® / CAS
¡Copiado!
1PROC CAS;
2 fairAITools.assessBias
3 TABLE={name='HMEQ_BIAS'},
4 modelTableType='DATASTEP',
5 code='P_BAD1 = 1 / (1 + exp(-( -2.1 + (0.05 * DEBTINC) )));',
6 response={name='BAD'},
7 sensitiveVariable={name='JOB'},
8 predictedVariables={{name='P_BAD1'}},
9 event='1',
10 referenceLevel='Other';
11RUN;

FAQ

¿Cuál es el propósito de la acción 'assessBias' del conjunto de acciones 'Fair AI Tools'?
¿Qué especifica el parámetro 'table' en la acción 'assessBias'?
¿Cuál es la función del parámetro 'sensitiveVariable'?
¿Qué información debe contener el parámetro 'predictedVariables'?
¿Qué se debe especificar en el parámetro 'modelTable'?
¿Cómo se define el evento de interés en la variable de respuesta?