Scénario de test & Cas d'usage
Classification utilisant des réseaux bayésiens.
Découvrir toutes les actions de bayesianNetClassifierCréation d'une table de transactions large avec plus de 50 variables (la plupart étant du bruit) pour simuler un problème de haute dimensionnalité.
| 1 | DATA casuser.transactions_fraude; |
| 2 | call streaminit(987); |
| 3 | array bruits{50} bruit1-bruit50; |
| 4 | DO id_transaction = 1 to 10000; |
| 5 | montant = rand('lognormal', 4, 1); |
| 6 | heure = rand('integer', 23); |
| 7 | pays_origine = byte(65+rand('integer', 4)); /* A, B, C, D, E */ |
| 8 | DO i=1 to 50; bruits{i} = rand('normal'); END; |
| 9 | /* Cible */ |
| 10 | is_fraude = 0; |
| 11 | IF (montant > 200 and heure < 6 and pays_origine='E') or (montant > 500) THEN DO; |
| 12 | IF rand('uniform') < 0.8 THEN is_fraude = 1; |
| 13 | END; |
| 14 | ELSE IF rand('uniform') < 0.01 THEN is_fraude = 1; |
| 15 | OUTPUT; |
| 16 | END; |
| 17 | keep id_transaction montant heure pays_origine is_fraude bruit1-bruit50; |
| 18 | RUN; |
| 1 | PROC CASUTIL; |
| 2 | load DATA=casuser.transactions_fraude outcaslib='casuser' casout='transactions_fraude' replace; |
| 3 | RUN; |
| 4 | QUIT; |
| 1 | PROC CAS; |
| 2 | ACTION bayesianNetClassifier.bnet / |
| 3 | TABLE={name='transactions_fraude'}, |
| 4 | target='is_fraude', |
| 5 | inputs={{name='montant'}, {name='heure'}, {name='pays_origine'}}, /* Le reste est ajouté par l'option 'allother' implicite */ |
| 6 | nominals={{name='is_fraude'}, {name='pays_origine'}}, |
| 7 | partByFrac={test=0.3, seed=111}, |
| 8 | preScreening='ONE', /* Active la présélection */ |
| 9 | varSelect='THREE', /* Sélectionne le Markov Blanket de la cible */ |
| 10 | structures={'NAIVE', 'TAN', 'PC'}, /* Teste plusieurs structures */ |
| 11 | alpha={0.01, 0.05, 0.2}, /* Teste plusieurs seuils */ |
| 12 | bestModel=true, /* Garde uniquement le meilleur modèle */ |
| 13 | display={'TunerHistory', 'BestModelInfo', 'SelectedInputs'}; |
| 14 | RUN; |
| 15 | QUIT; |
L'action exécute un processus de sélection de variables et d'auto-ajustement. La table 'SelectedInputs' montre que seules quelques variables (proches de 'montant', 'heure', 'pays_origine') ont été retenues parmi les 50+ variables initiales. La table 'TunerHistory' liste les performances de chaque combinaison de paramètres testée. La table 'BestModelInfo' décrit la configuration du modèle final retenu, qui est celui ayant le meilleur taux de classification sur les données de test. Le processus a réussi à ignorer le bruit et à construire un modèle performant de manière automatisée.