Publié le :
Statistique CREATION_INTERNE

Binning par regroupement et calcul du poids de l'évidence

Ce code est également disponible en : Deutsch English Español
En attente de validation
La procédure BINNING est utilisée pour discrétiser des variables, créant des groupes de valeurs appelés 'bins'. Le binning par regroupement ('Bucket Binning') divise les données en un nombre égal d'observations par bin. Pour chaque bin, le Poids de l'Évidence (WOE) est calculé, mesurant la force de la relation entre un prédicteur et la variable cible. Une valeur de WOE positive indique que la probabilité de l'événement cible est plus élevée dans ce bin, tandis qu'une valeur négative indique une probabilité plus faible. La Valeur d'Information (IV) est une somme pondérée des WOE pour toutes les catégories d'une variable, et sert à évaluer l'utilité d'une variable pour la prédiction de la cible. Cette méthode est cruciale pour gérer les valeurs aberrantes, la colinéarité et améliorer la performance des modèles. Les variables traitées doivent être chargées en mémoire CAS pour que la procédure fonctionne.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées (datalines) pour assurer leur autonomie.

1 Bloc de code
PROC BINNING Data
Explication :
Cet exemple illustre l'utilisation la plus simple de la procédure BINNING pour effectuer un binning par regroupement (bucket binning) sur la variable `x1` avec 5 bins, et calculer le Poids de l'Évidence (WOE) par rapport à la variable cible `y` (où 'y' est l'événement). Les données sont créées directement avec des `datalines` et chargées en mémoire CAS via la bibliothèque `mylib`.
Copié !
1cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2LIBNAME mylib cas;
3 
4DATA mylib.data_basique;
5 INPUT x0 x1 x2 y $;
6 DATALINES;
72 10 7 n
82 12 6 y
93 11 1 n
102 13 7 y
112 10 4 n
123 16 7 n
131 14 4 y
142 15 6 y
151 16 4 n
162 13 2 n
17;
18RUN;
19 
20PROC BINNING DATA=mylib.data_basique numbin=5 woe;
21 INPUT x1;
22 target y / event="y";
23 OUTPUT out=mylib.output_basique;
24RUN;
2 Bloc de code
PROC BINNING Data
Explication :
Cet exemple étend le cas basique en appliquant le binning par regroupement à plusieurs variables (`x0` et `x1`) en spécifiant explicitement `binmethod=bucket`. Il calcule également le WOE. Deux tables de sortie sont générées : `out` pour les détails du binning et `outwoe` pour les mappings des WOE. Cela est utile pour inspecter les transformations et potentiellement appliquer ces mappings à de nouvelles données.
Copié !
1cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2LIBNAME mylib cas;
3 
4DATA mylib.data_intermediaire;
5 INPUT x0 x1 x2 y $ freq;
6 DATALINES;
72 10 7 n 2
82 12 6 y 3
93 11 1 o 0
102 13 7 y 5
112 . 4 n -5
123 16 7 n 3
131 14 4 y 4
142 15 6 y 3
151 16 4 o 1
162 13 2 n 3
17;
18RUN;
19 
20PROC BINNING DATA=mylib.data_intermediaire numbin=4 woe;
21 INPUT x0 x1 / binmethod=bucket;
22 target y / event="y";
23 OUTPUT out=mylib.output_intermediaire_bins outwoe=mylib.output_intermediaire_woe;
24RUN;
3 Bloc de code
PROC BINNING Data
Explication :
Cet exemple avancé montre comment gérer les valeurs manquantes avec l'option `missing=special`, qui crée un bin séparé pour elles. Il utilise également une variable `freq` pour pondérer les observations dans le calcul du WOE. De plus, il combine différentes méthodes de binning, `bucket` pour `x0` et `x1`, et `quantile` pour `x2`, afin de montrer la flexibilité de la procédure. Cela est particulièrement pertinent pour des jeux de données réels où les valeurs manquantes et les pondérations sont courantes.
Copié !
1cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2LIBNAME mylib cas;
3 
4DATA mylib.data_avancee;
5 INPUT x0 x1 x2 y $ freq;
6 DATALINES;
72 10 7 n 2
82 12 6 y 3
93 0 1 o 0
102 13 7 y 5
112 . 4 n -5
123 16 7 n 3
131 14 4 y 4
142 15 6 y 3
151 16 4 o 1
162 13 2 n 3
17;
18RUN;
19 
20PROC BINNING DATA=mylib.data_avancee numbin=3 woe;
21 INPUT x0 x1 / binmethod=bucket missing=special;
22 INPUT x2 / binmethod=quantile;
23 target y / event="y";
24 weight freq;
25 OUTPUT out=mylib.output_avancee;
26RUN;
4 Bloc de code
PROC BINNING Data
Explication :
Cet exemple met en évidence les capacités de SAS Viya et de l'environnement CAS. Il montre comment la procédure BINNING peut non seulement générer les bins et les WOE, mais aussi sauvegarder ce 'modèle' de binning dans une table CAS (`mylib.woe_mapping`) à l'aide de l'instruction `SAVE WOE=`. Cette table de mapping peut ensuite être utilisée pour appliquer les mêmes transformations WOE à de nouvelles données (`APPLYWOE=`), garantissant la cohérence entre les ensembles de données d'entraînement et de validation/test, ce qui est une pratique courante en modélisation prédictive.
Copié !
1cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2LIBNAME mylib cas;
3 
4DATA mylib.data_cas;
5 INPUT id x0 x1 x2 y $;
6 DATALINES;
71 2 10 7 n
82 2 12 6 y
93 3 11 1 n
104 2 13 7 y
115 2 . 4 n
126 3 16 7 n
137 1 14 4 y
148 2 15 6 y
159 1 16 4 n
1610 2 13 2 n
17;
18RUN;
19 
20PROC BINNING DATA=mylib.data_cas numbin=4 woe;
21 INPUT x0 x1 x2;
22 target y / event="y";
23 save woe=mylib.woe_mapping / replace;
24 OUTPUT out=mylib.output_cas;
25RUN;
26 
27/* Appliquer le mapping WOE à de nouvelles données (exemple) */
28DATA mylib.new_data;
29 INPUT id x0 x1 x2 y $;
30 DATALINES;
3111 2 11 5 y
3212 3 14 6 n
3313 1 10 3 y
34;
35RUN;
36 
37PROC BINNING DATA=mylib.new_data applywoe=mylib.woe_mapping;
38 INPUT x0 x1 x2;
39 target y / event="y";
40 OUTPUT out=mylib.applied_woe_data;
41RUN;
42 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved