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.
| Parámetro | Descripción |
|---|---|
| biasMetric | Especifica el tipo de métrica de sesgo a utilizar. Los valores posibles son 'DEMOGRAPHICPARITY', 'EQUALIZEDODDS', 'EQUALOPPORTUNITY' o 'PREDICTIVEPARITY'. |
| bound | Especifica el valor del límite para el algoritmo de reducción de gradiente exponenciado. |
| copyVarsCASLVariable | Especifica 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. |
| cutoff | Especifica el punto de corte para la matriz de confusión. |
| event | Especifica el valor formateado de la variable de respuesta (objetivo) que representa el evento de interés. |
| frequency | Especifica la variable que contiene los valores de frecuencia. |
| iterationCASLVariable | Especifica 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. |
| learningRate | Especifica el tamaño del paso a utilizar en la actualización del algoritmo de reducción de gradiente exponenciado. |
| logLevel | Especifica el nivel de información de registro a imprimir. Niveles más altos muestran más información. |
| maxIters | Especifica el número máximo de iteraciones para ejecutar el algoritmo de reducción de gradiente exponenciado. |
| nBins | Especifica el número de bins a utilizar en los cálculos de lift. |
| predictedVariables | Especifica la lista de variables que contienen las predicciones del modelo. El orden debe coincidir con el del parámetro `responseLevels`. |
| response | Especifica la variable de respuesta (objetivo) para el aprendizaje supervisado. |
| sensitiveVariable | Especifica la variable sensible a utilizar en los cálculos de sesgo. |
| table | Especifica la tabla de datos de entrada para la mitigación del sesgo. |
| trainProgram | Especifica 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. |
| tolerance | Especifica 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. |
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.
| 1 | |
| 2 | DATA casuser.hmeq_mitigated; |
| 3 | SET sampsio.hmeq; |
| 4 | |
| 5 | RUN; |
| 6 |
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`.
| 1 | PROC 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 | '; |
| 16 | RUN; QUIT; |
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.
| 1 | PROC 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}}}; |
| 25 | RUN; QUIT; |