bayesianNetClassifier

bnet

Description

L'action `bnet` du jeu d'actions `bayesianNetClassifier` permet d'utiliser des modèles de réseau bayésien pour classifier une variable cible. Elle apprend la structure d'un réseau bayésien à partir des données et l'utilise ensuite pour faire des prédictions. Cette action est particulièrement utile pour modéliser les dépendances probabilistes entre un ensemble de variables et pour effectuer une classification lorsque les relations entre les variables sont complexes et incertaines.

bayesianNetClassifier.bnet / table={name='nom_table', caslib='caslib'}, target='variable_cible', inputs={{name='variable1'}, {name='variable2'}}, nominals={{name='variable_nominale'}}, structures={'NAIVE' | 'TAN' | 'PC' | 'MB' | 'GENERAL'}, maxParents=entier, alpha={valeur1, valeur2, ...}, preScreening='ONE' | 'ZERO', varSelect='ZERO' | 'ONE' | 'TWO' | 'THREE', bestModel=TRUE | FALSE, partByFrac={test=fraction, validate=fraction, seed=graine}, saveState={name='table_etat', replace=true};
Paramètres
ParamètreDescription
alphaSpécifie le niveau de significativité pour les tests d'indépendance utilisant les statistiques du chi-carré ou du G-carré. Vous pouvez spécifier jusqu'à cinq valeurs pour sélectionner le meilleur modèle.
attributesModifie les attributs des variables utilisées dans cette action.
bestModelLorsque défini sur True, sélectionne le meilleur modèle parmi les différentes configurations testées.
codeGénère le code de scoring SAS DATA step pour le modèle entraîné.
codeGroupSpécifie un identifiant de groupe pour le code généré.
displaySpécifie une liste de tables de résultats à afficher.
freqSpécifie la variable de fréquence.
idSpécifie les variables à copier de la table d'entrée vers la table de sortie.
indepTestSpécifie la méthode pour les tests d'indépendance (par exemple, 'CHISQUARE', 'GSQUARE').
inNetworkSpécifie une table d'entrée contenant une structure de réseau prédéfinie.
inputsSpécifie les variables d'entrée à utiliser pour l'analyse.
maxParentsSpécifie le nombre maximum de parents pour chaque nœud dans le réseau.
miAlphaSpécifie le niveau de significativité pour les tests d'indépendance basés sur l'information mutuelle.
missingIntSpécifie comment gérer les valeurs manquantes pour les variables d'intervalle ('IGNORE', 'IMPUTE').
missingNomSpécifie comment gérer les valeurs manquantes pour les variables nominales ('IGNORE', 'IMPUTE', 'LEVEL').
nominalsSpécifie les variables nominales à utiliser dans l'analyse.
numBinSpécifie le nombre de bins pour la discrétisation des variables d'intervalle.
outNetworkSpécifie la table de sortie pour la structure du réseau et les distributions de probabilités.
outputSpécifie la table de sortie pour stocker les prédictions.
outputTablesListe les noms des tables de résultats à sauvegarder en tant que tables CAS.
parentingSpécifie la méthode d'apprentissage de la structure pour les parents de chaque nœud ('BESTONE', 'BESTSET').
partByFracPartitionne les données en ensembles d'entraînement, de validation et de test en utilisant des fractions.
partByVarPartitionne les données en utilisant une variable spécifiée qui contient le rôle de chaque observation.
preScreeningSpécifie le niveau de présélection des variables d'entrée ('ZERO' pour aucune, 'ONE' pour une sélection basée sur la dépendance à la cible).
printtargetLorsque défini sur True, génère des noms pour la variable cible prédite et les variables de probabilité.
residentSpécifie si la table de modèle doit être résidente en mémoire.
saveStateSpécifie une table CAS pour sauvegarder l'état du modèle entraîné, permettant un scoring ultérieur.
structuresSpécifie le type de structure de réseau à apprendre (par exemple, 'NAIVE', 'TAN', 'PC').
tableSpécifie la table d'entrée CAS à utiliser pour l'entraînement.
targetSpécifie la variable cible (nominale) à prédire.
varSelectSpécifie la méthode de sélection des variables au-delà de la présélection ('ZERO', 'ONE', 'TWO', 'THREE').
Préparation des Données Voir la fiche de ce code dataprep
Création des Données d'Exemple

Ce code SAS charge la table `sashelp.cars` dans une table CAS nommée `cars_bnet` au sein de la caslib `casuser`. Cette table sera utilisée pour entraîner et évaluer les modèles de classifieur de réseau bayésien.

Copié !
1DATA casuser.cars_bnet; SET sashelp.cars; RUN;

Exemples

Cet exemple illustre l'utilisation la plus simple de l'action `bnet` pour entraîner un classifieur bayésien naïf. Le modèle prédit l'origine ('Origin') des voitures en utilisant la consommation en ville ('MPG_City') et le type ('Type') comme prédicteurs. La structure 'NAIVE' est explicitement demandée, ce qui suppose que tous les prédicteurs sont indépendants conditionnellement à la cible.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2ACTION bayesianNetClassifier.bnet /
3 TABLE={name='cars_bnet'},
4 target='Origin',
5 inputs={{name='MPG_City'}, {name='Type'}},
6 nominals={{name='Type'}},
7 structures={'NAIVE'};
8RUN;
9QUIT;
Résultat :
L'action exécute l'entraînement et affiche les tables de résultats dans le journal SAS, y compris les informations sur le modèle, les probabilités conditionnelles et les statistiques d'ajustement. Aucune table de sortie n'est créée car les paramètres `output` ou `saveState` ne sont pas spécifiés.

Cet exemple complexe démontre comment utiliser l'action `bnet` pour trouver le meilleur modèle en testant plusieurs configurations. Il compare les structures 'TAN' (Tree-Augmented Naive Bayes) et 'PC' (Parent-Child), essaie différents nombres maximum de parents (1 et 2), et teste deux niveaux de significativité (alpha). L'option `bestModel=true` assure que seul le modèle le plus performant (basé sur le taux de mauvaise classification sur les données de test) est retenu. Les données sont partitionnées avec 30% pour le test. Enfin, le modèle optimal est sauvegardé dans une table CAS nommée 'bnet_model_state' pour une utilisation future.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2ACTION bayesianNetClassifier.bnet /
3 TABLE={name='cars_bnet', caslib='casuser'},
4 target='Origin',
5 inputs={{name='MPG_City'}, {name='MPG_Highway'}, {name='Weight'}, {name='Length'}, {name='Type'}},
6 nominals={{name='Type'}},
7 structures={'TAN', 'PC'},
8 maxParents=2,
9 alpha={0.05, 0.1},
10 bestModel=true,
11 partByFrac={test=0.3, seed=1234},
12 saveState={name='bnet_model_state', replace=true};
13RUN;
14QUIT;
Résultat :
L'action effectue un processus d'auto-ajustement, évaluant toutes les combinaisons de paramètres spécifiés. Les résultats affichent l'historique de l'ajustement, montrant les performances de chaque modèle. Finalement, les détails du meilleur modèle sont présentés, et une table CAS nommée `bnet_model_state` est créée dans la caslib `casuser`, contenant l'état du modèle pour le scoring.

Cet exemple montre comment entraîner un classifieur bayésien en utilisant une structure de réseau définie par l'utilisateur. D'abord, une table `my_network` est créée pour spécifier les liens du réseau (par exemple, 'Type' est un parent de 'Origin'). Ensuite, l'action `bnet` est appelée avec le paramètre `inNetwork` pour forcer l'utilisation de cette structure, et la structure 'GENERAL' est spécifiée pour permettre des relations plus complexes que les structures de classifieur standard.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1DATA casuser.my_network;
2 LENGTH parent 8 child 8;
3 INFILE DATALINES;
4 INPUT parent$ child$;
5 DATALINES;
6Type Origin
7MPG_City Weight
8;
9RUN;
10 
11PROC CAS;
12ACTION bayesianNetClassifier.bnet /
13 TABLE={name='cars_bnet'},
14 target='Origin',
15 inputs={{name='MPG_City'}, {name='Weight'}, {name='Type'}},
16 nominals={{name='Type'}},
17 inNetwork={name='my_network'},
18 structures={'GENERAL'},
19 OUTPUT={casout={name='bnet_scored', replace=true}, copyVars={'Origin', 'Type', 'MPG_City', 'Weight'}},
20 outNetwork={name='bnet_outnet', replace=true};
21RUN;
22QUIT;
Résultat :
Le modèle est entraîné en respectant la structure fournie dans la table `my_network`. Une table de sortie `bnet_scored` est créée avec les prédictions, et une table `bnet_outnet` est générée, décrivant la structure du réseau et les probabilités conditionnelles apprises. Cela permet un contrôle total sur la topologie du modèle.

FAQ

À quoi sert l'action `bnet` dans SAS Viya ?
Quels types de structures de réseau l'action `bnet` peut-elle apprendre ?
Comment gérer les valeurs manquantes pour les variables nominales avec l'action `bnet` ?
Quel est le rôle du paramètre `parenting` dans l'apprentissage de la structure du réseau ?
Comment l'action `bnet` peut-elle sauvegarder le modèle entraîné pour un scoring futur ?
Qu'est-ce que l'action `bnet` dans SAS Viya ?
Quelles structures de réseau peuvent être apprises avec l'action `bnet` ?
Comment l'action `bnet` gère-t-elle les valeurs manquantes ?
Quelle est la différence entre les méthodes de `parenting` `BESTONE` et `BESTSET` ?
Comment puis-je sauvegarder un modèle entraîné par l'action `bnet` ?

Scénarios associés

Cas d'usage
Scénario Standard : Prédiction de l'Adhésion à une Offre Marketing

Une banque souhaite optimiser sa prochaine campagne marketing. L'objectif est de prédire quels clients sont les plus susceptibles de souscrire à un nouveau produit d'investissem...

Cas d'usage
Scénario Cas Limite : Analyse de Pannes avec Données Manquantes

Une entreprise industrielle cherche à prédire les pannes de ses machines à partir de données de capteurs. Cependant, les capteurs sont parfois défaillants, générant des valeurs ...

Cas d'usage
Scénario Performance : Détection de Fraude avec Sélection de Variables et Auto-ajustement

Une société de crédit souhaite développer un modèle de détection de transactions frauduleuses. Le jeu de données contient un très grand nombre de variables potentiellement expli...