mitigateBiasGradientBoostTree
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 .
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.
| 1 | DATA 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; |
| 12 | RUN; |
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'.
| 1 | PROC 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 | }; |
| 16 | RUN; |
| 17 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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 | }; |
| 27 | RUN; |
| 28 | QUIT; |