fairAITools

mitigateBias

Descripción

La acción `mitigateBias` mitiga el sesgo durante el entrenamiento de modelos predictivos utilizando el algoritmo de reducción de gradiente exponenciado. Este enfoque iterativo ajusta los pesos de las observaciones en el conjunto de datos de entrenamiento para entrenar un modelo que satisfaga restricciones de paridad específicas, como la paridad demográfica o la igualdad de oportunidades. La acción requiere un programa de entrenamiento en CASL, que se ejecuta en cada iteración con los pesos actualizados.

fairAITools.mitigateBias / table={name='<table-name>', ...}, response={name='<response-variable>'}, sensitiveVariable={name='<sensitive-variable>'}, trainProgram='<casl-code>', biasMetric='<metric-type>', bound=<value>, tolerance=<value>, maxIters=<value>;
Parámetros
ParámetroDescripción
biasMetricEspecifica el tipo de métrica de sesgo a utilizar. Los valores posibles son 'DEMOGRAPHICPARITY', 'EQUALIZEDODDS', 'EQUALOPPORTUNITY' o 'PREDICTIVEPARITY'.
boundEspecifica el valor del límite para el algoritmo de reducción de gradiente exponenciado.
copyVarsCASLVariableEspecifica el nombre de la variable CASL que contiene la lista `copyVars` para la creación de la tabla de puntuación, que se pasa al programa de entrenamiento.
cutoffEspecifica el punto de corte para la matriz de confusión.
eventEspecifica el valor formateado de la variable de respuesta (objetivo) que representa el evento de interés.
frequencyEspecifica la variable que contiene los valores de frecuencia.
iterationCASLVariableEspecifica el nombre de la variable CASL que se pasa al programa de entrenamiento y que contiene el valor de la iteración actual de reducción de gradiente.
learningRateEspecifica el tamaño del paso a utilizar en la actualización del algoritmo de reducción de gradiente exponenciado.
logLevelEspecifica el nivel de información de registro a imprimir. Niveles más altos muestran más información.
maxItersEspecifica el número máximo de iteraciones para ejecutar el algoritmo de reducción de gradiente exponenciado.
nBinsEspecifica el número de bins a utilizar en los cálculos de lift.
predictedVariablesEspecifica la lista de variables que contienen las predicciones del modelo. El orden debe coincidir con el del parámetro `responseLevels`.
responseEspecifica la variable de respuesta (objetivo) para el aprendizaje supervisado.
sensitiveVariableEspecifica la variable sensible a utilizar en los cálculos de sesgo.
tableEspecifica la tabla de datos de entrada para la mitigación del sesgo.
trainProgramEspecifica el código de entrenamiento en CASL para entrenar un modelo. Este código se utiliza junto con los pesos y tablas generados por la acción.
toleranceEspecifica la tolerancia a la violación de la restricción de paridad. Un valor de 0 entrena durante el número máximo de iteraciones.
Creación de Datos de Ejemplo

Crea una tabla CAS de ejemplo llamada `HMEQ_MITIGATED` a partir de `sampsio.hmeq`. Esta tabla se utilizará para demostrar cómo mitigar el sesgo en un modelo de clasificación.

¡Copiado!
1 
2DATA casuser.hmeq_mitigated;
3SET sampsio.hmeq;
4 
5RUN;
6 

Ejemplos

Este ejemplo muestra cómo usar la acción `mitigateBias` con los parámetros mínimos requeridos. Entrena un modelo de árbol de decisión simple mientras mitiga el sesgo relacionado con la variable `JOB`.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 fairAITools.mitigateBias /
3 TABLE={name='hmeq_mitigated', caslib='casuser'},
4 response={name='BAD'},
5 sensitiveVariable={name='JOB'},
6 trainProgram='
7 decisionTree.dtreeTrain /
8 table=table,
9 target="BAD",
10 inputs={"LOAN", "MORTDUE", "VALUE", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"},
11 nominals={"BAD", "REASON", "JOB"},
12 weight=weight,
13 casOut={name="hmeq_scored", caslib="casuser", replace=true},
14 copyVars=copyVars;
15 ';
16RUN; QUIT;
Resultado :
La acción ejecuta un proceso iterativo que ajusta los pesos en la tabla `hmeq_mitigated` para entrenar una serie de árboles de decisión. El resultado final es un modelo que intenta minimizar el sesgo con respecto a la variable 'JOB', y la tabla de salida contiene los resultados de la puntuación del modelo final.

Este ejemplo demuestra un uso más avanzado de `mitigateBias`, especificando la métrica de paridad predictiva (`PREDICTIVEPARITY`), estableciendo una tolerancia y un número máximo de iteraciones. También guarda la tabla de puntuación final para su posterior análisis.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 fairAITools.mitigateBias /
3 TABLE={name='hmeq_mitigated', caslib='casuser'},
4 response={name='BAD'},
5 event='1',
6 sensitiveVariable={name='JOB'},
7 biasMetric='PREDICTIVEPARITY',
8 tolerance=0.01,
9 maxIters=20,
10 trainProgram='
11 decisionTree.dtreeTrain /
12 table=table,
13 target="BAD",
14 inputs={"LOAN", "MORTDUE", "VALUE", "YOJ", "DEROG", "DELINQ", "CLAGE", "NINQ", "CLNO", "DEBTINC"},
15 nominals={"BAD", "REASON", "JOB"},
16 weight=weight,
17 casOut=casout,
18 copyVars=copyVars;
19 ',
20 tableCASLVariable='table',
21 weightCASLVariable='weight',
22 scoredCASLVariable='casout',
23 copyVarsCASLVariable='copyVars',
24 tableSaveList={{key='casout', casout={name='hmeq_mitigated_scored', caslib='casuser', replace=true}}};
25RUN; QUIT;
Resultado :
La acción ejecutará hasta 20 iteraciones para entrenar un modelo de árbol de decisión que cumpla con la restricción de paridad predictiva dentro de una tolerancia de 0.01. La tabla `hmeq_mitigated_scored` se guardará en la caslib `casuser` con las predicciones del mejor modelo encontrado durante el proceso de mitigación.

FAQ

¿Cuál es el propósito principal de la acción `mitigateBias`?
¿Qué especifica el parámetro `trainProgram` y por qué es obligatorio?
¿Cómo se define la métrica de sesgo a mitigar y cuáles son las opciones?
¿Qué representa el parámetro `sensitiveVariable`?
¿Cómo se controla la finalización del algoritmo de mitigación?
¿Qué papel juega el parámetro `bound` en el algoritmo?