bayesianNetClassifier

bnet

##set_bayesiannetclassifier

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.).

Syntaxe Officielle
bayesianNetClassifier.bnet /
alpha={valeurs_alpha}
attributes={{var_desc}}
bestModel=true|false
code={aircodegen}
display={displayTables}
freq="variable_frequence"
id={"variable_1", "variable_2"}
indepTest="ALL"|"CHIGSQUARE"|"CHISQUARE"|"GSQUARE"|"MI"
inNetwork={castable}
inputs={"variable_1", "variable_2"}
maxParents=entier
miAlpha=valeur_double
missingInt="IGNORE"|"IMPUTE"
missingNom="IGNORE"|"IMPUTE"|"LEVEL"
nominals={"variable_nominale_1"}
numBin=entier
outNetwork={casouttable}
output={BnetOutputStatement}
outputTables={outputTables}
parenting={"BESTONE", "BESTSET"}
partByFrac={partByFracStatement}
partByVar={partByVarStatement}
preScreening={"ONE", "ZERO"}
saveState={casouttable}
structures={"GENERAL", "GN", "MB", "NAIVE", "PC", "TAN"}
table={castable}
target="variable_cible"
varSelect={"ONE", "THREE", "TWO", "ZERO"}

Paramètres Clés

Nom du paramètre Description
alpha Spécifie le seuil de signification pour les tests d'indépendance basés sur les statistiques chi-carré ou G-carré . On peut en tester plusieurs avec bestModel.
bestModel Si positionné à True, l'action compare différentes configurations pour trouver le modèle optimal.
indepTest Définit la méthode de test d'indépendance (ex: MI pour Information Mutuelle, CHISQUARE pour le test du chi-deux).
maxParents Nombre maximal de parents autorisés pour chaque nœud dans le réseau. Plus il y a de parents, plus le réseau est complexe (et plus le café est nécessaire pour comprendre le résultat).
numBin Nombre de segments (bins) pour la discrétisation des variables d'intervalle.
structures Types de structures de réseau à apprendre (NAIVE, TAN, PC, MB, etc.) .
table Table CAS d'entrée contenant les données d'apprentissage.
target Nom de la variable cible nominale à prédire.

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.

1DATA 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;
11RUN;

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.

1PROC 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"};
8RUN;
Résultat Attendu :
Un rapport contenant les informations sur la structure du réseau, les statistiques de performance du modèle et les probabilités conditionnelles.
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).

1PROC 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"}};
16RUN;
Résultat Attendu :
Le meilleur modèle parmi les combinaisons de structures et d'alphas est sélectionné. Une table de prédictions est générée, le modèle est stocké sous forme d'analytic store (saveState) et les statistiques d'ajustement sont enregistrées.