Scénario de test & Cas d'usage
Détection et atténuation des biais dans les modèles IA.
Découvrir toutes les actions de fairAIToolsCréation d'une table volumineuse (200 000 clients) avec une variable sensible (tranche d'âge) et les prédictions de deux modèles distincts.
| 1 | DATA casuser.CUSTOMER_CAMPAIGN_LARGE; |
| 2 | call streaminit(101); |
| 3 | DO i = 1 to 200000; |
| 4 | rand_age = rand('UNIFORM'); |
| 5 | IF rand_age < 0.3 THEN AGE_GROUP = '18-30'; |
| 6 | ELSE IF rand_age < 0.75 THEN AGE_GROUP = '31-50'; |
| 7 | ELSE AGE_GROUP = '51+'; |
| 8 | |
| 9 | P_RESP_MODEL_A = rand('UNIFORM'); |
| 10 | P_RESP_MODEL_B = rand('UNIFORM') * 0.9 + 0.05; /* Modèle B légèrement différent */ |
| 11 | |
| 12 | IF rand('UNIFORM') < 0.15 THEN HAS_RESPONDED = 1; ELSE HAS_RESPONDED = 0; |
| 13 | OUTPUT; |
| 14 | END; |
| 15 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=casuser.CUSTOMER_CAMPAIGN_LARGE outcaslib='casuser' replace; |
| 5 | QUIT; |
| 6 |
| 1 | PROC CAS; |
| 2 | fairAITools.assessBias |
| 3 | TABLE={name='CUSTOMER_CAMPAIGN_LARGE', caslib='casuser'}, |
| 4 | response={name='HAS_RESPONDED'}, |
| 5 | sensitiveVariable={name='AGE_GROUP'}, |
| 6 | predictedVariables={{name='P_RESP_MODEL_A'}, {name='P_RESP_MODEL_B'}}, |
| 7 | event='1', |
| 8 | cutoff=0.25; |
| 9 | RUN; |
| 10 | QUIT; |
L'action doit générer des rapports de biais distincts pour chaque modèle spécifié (`P_RESP_MODEL_A` et `P_RESP_MODEL_B`). Les résultats permettront une comparaison directe de l'équité des deux modèles sur les différentes tranches d'âge. Le temps d'exécution sur ce volume de données est également un indicateur de la performance de l'action.