bnet
Description
L'action bnet du jeu d'actions bayesianNetClassifierModèle prédictif basé sur le théorème de Bayes. Il utilise un graphe orienté acyclique (DAG) modélisant les dépendances conditionnelles entre variables pour classer une cible catégorielle. est conçue pour entraîner des modèles de réseaux bayésiens afin de prédire une variable cible nominale. Contrairement à certains modèles 'boîte noire', le réseau bayésienModèle graphique probabiliste représentant, via un graphe orienté acyclique, les variables d'un système et leurs dépendances conditionnelles pour calculer des probabilités de résultats. offre une structure graphique intuitive montrant comment les variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. interagissent. C'est un peu comme cartographier les ragots dans un bureau : on finit par savoir qui influence qui, mais avec beaucoup plus de rigueur mathématique ! Elle supporte diverses structures comme Naive BayesAlgorithme de classification probabiliste supposant l'indépendance totale entre les prédicteurs. Simple et rapide, il calcule la probabilité d'appartenance à une classe via le théorème de Bayes., Tree-Augmented Naive BayesRéseau bayésien étendant Naive Bayes. Chaque prédicteur dépend de la cible et d'au plus un autre prédicteur, formant un arbre pour modéliser les interactions entre les variables. (TANLe TAN (Tree-Augmented Naive Bayes) est un classifieur bayésien qui améliore le modèle Naive Bayes en autorisant des dépendances entre variables prédictives via une structure d'arbre.) ou encore la recherche de la couverture de MarkovEnsemble minimal de variables comprenant les parents, les enfants et les parents des enfants d'un nœud. Elle contient toute l'information nécessaire pour prédire le comportement de ce nœud. (Markov BlanketEnsemble minimal de nœuds (parents, enfants, co-parents) isolant une variable du reste du réseau. Elle contient toute l'information nécessaire pour prédire cette variable de manière optimale.).
Paramètres Clés
Préparation des données
Création de données pour la classification de crédit
On génère une table factice simulant des clients avec des revenus, des niveaux d'éducation et une cible de défaut de paiement.
| 1 | DATA casuser.credit_data; |
| 2 | drop i; |
| 3 | DO i=1 to 1000; |
| 4 | income = round(ranuni(1)*100000); |
| 5 | edu_level = floor(ranuni(1)*4); |
| 6 | age = floor(ranuni(1)*50 + 18); |
| 7 | IF income > 50000 or (edu_level > 2 and age > 30) THEN bad_loan = 'No '; |
| 8 | ELSE bad_loan = 'Yes'; |
| 9 | OUTPUT; |
| 10 | END; |
| 11 | RUN; |
Exemples d'utilisation
Entraînement d'un réseau bayésien basique
Exemple simple utilisant une structure parente-enfant (PC) pour prédire le défaut de paiement.
| 1 | PROC CAS; |
| 2 | bayesianNetClassifier.bnet / |
| 3 | TABLE={name="credit_data", caslib="casuser"}, |
| 4 | target="bad_loan", |
| 5 | inputs={"income", "edu_level", "age"}, |
| 6 | nominals={"bad_loan", "edu_level"}, |
| 7 | structures={"PC"}; |
| 8 | RUN; |
Résultat Attendu :
Sélection automatique du meilleur modèle et sauvegarde
Cet exemple pousse l'action dans ses retranchements en lui demandant de tester plusieurs structures et plusieurs niveaux de signification alpha, tout en sauvegardant le modèle pour une utilisation future (scoring).
| 1 | PROC CAS; |
| 2 | bayesianNetClassifier.bnet / |
| 3 | TABLE={name="credit_data", caslib="casuser"}, |
| 4 | target="bad_loan", |
| 5 | inputs={"income", "edu_level", "age"}, |
| 6 | nominals={"bad_loan", "edu_level"}, |
| 7 | alpha={0.01, 0.05, 0.1}, |
| 8 | structures={"NAIVE", "TAN", "PC"}, |
| 9 | bestModel=true, |
| 10 | maxParents=3, |
| 11 | numBin=10, |
| 12 | missingNom="IMPUTE", |
| 13 | saveState={name="bnet_model_final", replace=true}, |
| 14 | OUTPUT={casOut={name="credit_predictions", replace=true}, copyVars="ALL"}, |
| 15 | outputTables={names={FitStatistics="model_fit"}}; |
| 16 | RUN; |