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é !
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
libname mylib cas;
data mylib.data_basique;
input x0 x1 x2 y $;
datalines;
2 10 7 n
2 12 6 y
3 11 1 n
2 13 7 y
2 10 4 n
3 16 7 n
1 14 4 y
2 15 6 y
1 16 4 n
2 13 2 n
;
run;
proc binning data=mylib.data_basique numbin=5 woe;
input x1;
target y / event="y";
output out=mylib.output_basique;
run;
1
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2
LIBNAME mylib cas;
3
4
DATA mylib.data_basique;
5
INPUT x0 x1 x2 y $;
6
DATALINES;
7
2107 n
8
2126 y
9
3111 n
10
2137 y
11
2104 n
12
3167 n
13
1144 y
14
2156 y
15
1164 n
16
2132 n
17
;
18
RUN;
19
20
PROC BINNINGDATA=mylib.data_basique numbin=5 woe;
21
INPUT x1;
22
target y / event="y";
23
OUTPUT out=mylib.output_basique;
24
RUN;
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é !
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
libname mylib cas;
data mylib.data_intermediaire;
input x0 x1 x2 y $ freq;
datalines;
2 10 7 n 2
2 12 6 y 3
3 11 1 o 0
2 13 7 y 5
2 . 4 n -5
3 16 7 n 3
1 14 4 y 4
2 15 6 y 3
1 16 4 o 1
2 13 2 n 3
;
run;
proc binning data=mylib.data_intermediaire numbin=4 woe;
input x0 x1 / binmethod=bucket;
target y / event="y";
output out=mylib.output_intermediaire_bins outwoe=mylib.output_intermediaire_woe;
run;
1
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
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é !
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
libname mylib cas;
data mylib.data_avancee;
input x0 x1 x2 y $ freq;
datalines;
2 10 7 n 2
2 12 6 y 3
3 0 1 o 0
2 13 7 y 5
2 . 4 n -5
3 16 7 n 3
1 14 4 y 4
2 15 6 y 3
1 16 4 o 1
2 13 2 n 3
;
run;
proc binning data=mylib.data_avancee numbin=3 woe;
input x0 x1 / binmethod=bucket missing=special;
input x2 / binmethod=quantile;
target y / event="y";
weight freq;
output out=mylib.output_avancee;
run;
1
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2
LIBNAME mylib cas;
3
4
DATA mylib.data_avancee;
5
INPUT x0 x1 x2 y $ freq;
6
DATALINES;
7
2107 n 2
8
2126 y 3
9
3 0 1 o 0
10
2137 y 5
11
2 . 4 n -5
12
3167 n 3
13
1144 y 4
14
2156 y 3
15
1164 o 1
16
2132 n 3
17
;
18
RUN;
19
20
PROC BINNINGDATA=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;
26
RUN;
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é !
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
libname mylib cas;
data mylib.data_cas;
input id x0 x1 x2 y $;
datalines;
1 2 10 7 n
2 2 12 6 y
3 3 11 1 n
4 2 13 7 y
5 2 . 4 n
6 3 16 7 n
7 1 14 4 y
8 2 15 6 y
9 1 16 4 n
10 2 13 2 n
;
run;
proc binning data=mylib.data_cas numbin=4 woe;
input x0 x1 x2;
target y / event="y";
save woe=mylib.woe_mapping / replace;
output out=mylib.output_cas;
run;
/* Appliquer le mapping WOE à de nouvelles données (exemple) */
data mylib.new_data;
input id x0 x1 x2 y $;
datalines;
11 2 11 5 y
12 3 14 6 n
13 1 10 3 y
;
run;
proc binning data=mylib.new_data applywoe=mylib.woe_mapping;
input x0 x1 x2;
target y / event="y";
output out=mylib.applied_woe_data;
run;
1
cas mylib; /* S'assurer que la bibliothèque 'mylib' est définie pour CAS */
2
LIBNAME mylib cas;
3
4
DATA mylib.data_cas;
5
INPUT id x0 x1 x2 y $;
6
DATALINES;
7
12107 n
8
22126 y
9
33111 n
10
42137 y
11
52 . 4 n
12
63167 n
13
71144 y
14
82156 y
15
91164 n
16
102132 n
17
;
18
RUN;
19
20
PROC BINNINGDATA=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;
25
RUN;
26
27
/* Appliquer le mapping WOE à de nouvelles données (exemple) */
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.