fairAITools

mitigateBiasGradientBoostTree

##set_fairaitools

Description

L'action `mitigateBiasGradientBoostTree` est votre chevalier blanc algorithmique ! Elle permet d'atténuer les biais dans les modèles prédictifsAlgorithmes entraînés sur SAS Viya pour analyser des données historiques et estimer la probabilité de résultats futurs, facilitant ainsi la prise de décision proactive et automatisée. d'arbres d'amplification de gradient (Gradient BoostingMéthode d'apprentissage itérative créant une suite d'arbres de décision. Chaque nouvel arbre corrige les erreurs de prédiction des précédents pour minimiser globalement la fonction de perte. Trees). Concrètement, elle force le modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). à ne pas reproduire les mauvaises manières ou discriminations présentes dans vos données historiques. L'algorithme repose sur une méthode de réduction de gradient exponentiel documentée ici .

Syntaxe Officielle
proc cas;
fairAITools.mitigateBiasGradientBoostTree /
mitigateOptions={
biasMetric="DEMOGRAPHICPARITY" | "EQUALIZEDODDS" | "EQUALOPPORTUNITY" | "PREDICTIVEPARITY",
bound=double,
event="string",
learningRate=double,
logLevel=integer,
maxIters=integer,
predictedVariables={{name="string"}, ...},
responseLevels={"string-1", ...},
seed=double,
sensitiveVariable={name="string"},
tolerance=double,
tuneBound=TRUE | FALSE
},
scoreOptions={key-1=value-1, ...},
trainOptions={key-1=value-1, ...};
run;
quit;

Paramètres Clés

Nom du paramètre Description
mitigateOptions Liste des paramètres permettant de contrôler et d'ajuster finement l'algorithme d'atténuation des biais.
biasMetric Type de métrique d'équité à utiliser (ex: DEMOGRAPHICPARITY, EQUALIZEDODDS). Par défaut, il s'agit de PREDICTIVEPARITY.
bound Valeur limite pour l'algorithme de réduction du gradient exponentiel. La valeur par défaut est 100.
event La valeur de la variable cible qui représente l'événement d'intérêt (ex: 'Fraude', 'Achat').
learningRate Taux d'apprentissage (ou la taille du pas) pour la mise à jour de l'algorithme. Défaut: 0.01.
maxIters Nombre maximum d'itérations autorisées. Plus on itère, plus c'est long, mais meilleur est l'ajustement. Défaut: 10.
predictedVariables Liste des variables générées qui contiendront les prédictions du modèle (ex: les probabilités).
responseLevels Liste des valeurs formatées possibles pour la variable de réponse (cible).
sensitiveVariable La variable sensible sur laquelle on veut éviter la discrimination (ex: le genre, l'ethnie, l'âge).
tolerance Tolérance maximale acceptable pour la violation de la contrainte de parité. Défaut: 0.005.
tuneBound Indique s'il faut ajuster automatiquement la valeur limite (bound) de l'algorithme (true ou false).
scoreOptions Paramètres de scoring qui seront passés directement à l'action `astore.score`.
trainOptions Paramètres d'entraînement du modèle, envoyés à l'action `decisionTree.gbtreeTrain`.

Préparation des données

Génération de données de crédit fictives

Nous créons un jeu de données simulant des profils pour l'octroi de crédit, où la variable 'Genre' sera notre variable sensible à protéger des biais.

1DATA mycas.credit_data;
2 call streaminit(12345);
3 DO i = 1 to 1000;
4 Genre = ifc(rand('uniform') < 0.5, 'Homme', 'Femme');
5 Revenu = rand('normal', 40000, 15000);
6 Age = int(rand('uniform') * 50 + 18);
7 IF Genre = 'Homme' THEN Proba = 0.5 + (Revenu/100000);
8 ELSE Proba = 0.3 + (Revenu/100000);
9 IF rand('uniform') < Proba THEN Defaut = 'Non'; ELSE Defaut = 'Oui';
10 OUTPUT;
11 END;
12RUN;

Exemples d'utilisation

Atténuation de biais simple (Parité Démographique)

Ce code entraîne un modèle de Gradient Boosting en appliquant une contrainte d'équité pour que les prédictions soient indépendantes de la variable 'Genre'.

1PROC CAS;
2 fairAITools.mitigateBiasGradientBoostTree /
3 trainOptions={
4 TABLE={name='credit_data'},
5 target='Defaut',
6 inputs={'Revenu', 'Age', 'Genre'},
7 nominals={'Defaut', 'Genre'}
8 },
9 mitigateOptions={
10 sensitiveVariable={name='Genre'},
11 responseLevels={'Oui', 'Non'},
12 event='Oui',
13 biasMetric='DEMOGRAPHICPARITY',
14 predictedVariables={{name='P_DefautOui'}, {name='P_DefautNon'}}
15 };
16RUN;
17QUIT;
Résultat Attendu :
Le journal SAS affichera les informations du modèle Gradient Boosting et l'historique des itérations de l'algorithme d'atténuation, fournissant un modèle avec un biais démographique considérablement réduit sur le genre.
Atténuation avancée avec sauvegarde du modèle (Equalized Odds)

Un exemple plus poussé utilisant la métrique EQUALIZEDODDS, en augmentant le nombre d'itérations, modifiant le taux d'apprentissage, et sauvegardant la table scorée.

1PROC CAS;
2 fairAITools.mitigateBiasGradientBoostTree /
3 trainOptions={
4 TABLE={name='credit_data'},
5 target='Defaut',
6 inputs={'Revenu', 'Age', 'Genre'},
7 nominals={'Defaut', 'Genre'},
8 casOut={name='gbt_model', replace=true}
9 },
10 scoreOptions={
11 casOut={name='scored_data', replace=true}
12 },
13 mitigateOptions={
14 sensitiveVariable={name='Genre'},
15 responseLevels={'Oui', 'Non'},
16 event='Oui',
17 biasMetric='EQUALIZEDODDS',
18 bound=50,
19 learningRate=0.05,
20 maxIters=20,
21 tolerance=0.001,
22 tuneBound=true,
23 seed=12345,
24 logLevel=3,
25 predictedVariables={{name='P_DefautOui'}, {name='P_DefautNon'}}
26 };
27RUN;
28QUIT;
Résultat Attendu :
La procédure va exécuter jusqu'à 20 itérations d'atténuation, en ajustant automatiquement la limite (tuneBound=true). Les prédictions lissées et respectant l'égalité des chances seront disponibles dans la table 'scored_data', et le modèle stocké dans 'gbt_model'.