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.
| Paramètre | Description |
|---|---|
| alpha | Spé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. |
| attributes | Modifie les attributs des variables utilisées dans cette action. |
| bestModel | Lorsque défini sur True, sélectionne le meilleur modèle parmi les différentes configurations testées. |
| code | Génère le code de scoring SAS DATA step pour le modèle entraîné. |
| codeGroup | Spécifie un identifiant de groupe pour le code généré. |
| display | Spécifie une liste de tables de résultats à afficher. |
| freq | Spécifie la variable de fréquence. |
| id | Spécifie les variables à copier de la table d'entrée vers la table de sortie. |
| indepTest | Spécifie la méthode pour les tests d'indépendance (par exemple, 'CHISQUARE', 'GSQUARE'). |
| inNetwork | Spécifie une table d'entrée contenant une structure de réseau prédéfinie. |
| inputs | Spécifie les variables d'entrée à utiliser pour l'analyse. |
| maxParents | Spécifie le nombre maximum de parents pour chaque nœud dans le réseau. |
| miAlpha | Spécifie le niveau de significativité pour les tests d'indépendance basés sur l'information mutuelle. |
| missingInt | Spécifie comment gérer les valeurs manquantes pour les variables d'intervalle ('IGNORE', 'IMPUTE'). |
| missingNom | Spécifie comment gérer les valeurs manquantes pour les variables nominales ('IGNORE', 'IMPUTE', 'LEVEL'). |
| nominals | Spécifie les variables nominales à utiliser dans l'analyse. |
| numBin | Spécifie le nombre de bins pour la discrétisation des variables d'intervalle. |
| outNetwork | Spécifie la table de sortie pour la structure du réseau et les distributions de probabilités. |
| output | Spécifie la table de sortie pour stocker les prédictions. |
| outputTables | Liste les noms des tables de résultats à sauvegarder en tant que tables CAS. |
| parenting | Spécifie la méthode d'apprentissage de la structure pour les parents de chaque nœud ('BESTONE', 'BESTSET'). |
| partByFrac | Partitionne les données en ensembles d'entraînement, de validation et de test en utilisant des fractions. |
| partByVar | Partitionne les données en utilisant une variable spécifiée qui contient le rôle de chaque observation. |
| preScreening | Spé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). |
| printtarget | Lorsque défini sur True, génère des noms pour la variable cible prédite et les variables de probabilité. |
| resident | Spécifie si la table de modèle doit être résidente en mémoire. |
| saveState | Spécifie une table CAS pour sauvegarder l'état du modèle entraîné, permettant un scoring ultérieur. |
| structures | Spécifie le type de structure de réseau à apprendre (par exemple, 'NAIVE', 'TAN', 'PC'). |
| table | Spécifie la table d'entrée CAS à utiliser pour l'entraînement. |
| target | Spécifie la variable cible (nominale) à prédire. |
| varSelect | Spécifie la méthode de sélection des variables au-delà de la présélection ('ZERO', 'ONE', 'TWO', 'THREE'). |
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.
| 1 | DATA casuser.cars_bnet; SET sashelp.cars; RUN; |
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.
| 1 | PROC CAS; |
| 2 | ACTION bayesianNetClassifier.bnet / |
| 3 | TABLE={name='cars_bnet'}, |
| 4 | target='Origin', |
| 5 | inputs={{name='MPG_City'}, {name='Type'}}, |
| 6 | nominals={{name='Type'}}, |
| 7 | structures={'NAIVE'}; |
| 8 | RUN; |
| 9 | QUIT; |
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.
| 1 | PROC CAS; |
| 2 | ACTION 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}; |
| 13 | RUN; |
| 14 | QUIT; |
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.
| 1 | DATA casuser.my_network; |
| 2 | LENGTH parent 8 child 8; |
| 3 | INFILE DATALINES; |
| 4 | INPUT parent$ child$; |
| 5 | DATALINES; |
| 6 | Type Origin |
| 7 | MPG_City Weight |
| 8 | ; |
| 9 | RUN; |
| 10 | |
| 11 | PROC CAS; |
| 12 | ACTION 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}; |
| 21 | RUN; |
| 22 | QUIT; |
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...
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 ...
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...