Publicado el :
Estadística CREACIÓN_INTERNA

Binning por agrupamiento y cálculo del peso de la evidencia

Este código también está disponible en: Deutsch English Français
En espera de validación
El procedimiento BINNING se utiliza para discretizar variables, creando grupos de valores llamados 'bins'. El binning por agrupamiento ('Bucket Binning') divide los datos en un número igual de observaciones por bin. Para cada bin, se calcula el Peso de la Evidencia (WOE), midiendo la fuerza de la relación entre un predictor y la variable objetivo. Un valor WOE positivo indica que la probabilidad del evento objetivo es mayor en ese bin, mientras que un valor negativo indica una probabilidad menor. El Valor de Información (IV) es una suma ponderada de los WOE para todas las categorías de una variable, y sirve para evaluar la utilidad de una variable para la predicción del objetivo. Este método es crucial para gestionar valores atípicos, colinealidad y mejorar el rendimiento de los modelos. Las variables procesadas deben cargarse en la memoria CAS para que el procedimiento funcione.
Análisis de datos

Type : CREACIÓN_INTERNA


Los ejemplos utilizan datos generados (datalines) para asegurar su autonomía.

1 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo ilustra el uso más simple del procedimiento BINNING para realizar un binning por agrupamiento (bucket binning) en la variable `x1` con 5 bins, y calcular el Peso de la Evidencia (WOE) en relación con la variable objetivo `y` (donde 'y' es el evento). Los datos se crean directamente con `datalines` y se cargan en la memoria CAS a través de la biblioteca `mylib`.
¡Copiado!
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 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo extiende el caso básico aplicando el binning por agrupamiento a varias variables (`x0` y `x1`) especificando explícitamente `binmethod=bucket`. También calcula el WOE. Se generan dos tablas de salida: `out` para los detalles del binning y `outwoe` para los mapeos de WOE. Esto es útil para inspeccionar las transformaciones y potencialmente aplicar estos mapeos a nuevos datos.
¡Copiado!
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 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo avanzado muestra cómo manejar los valores faltantes con la opción `missing=special`, que crea un bin separado para ellos. También utiliza una variable `freq` para ponderar las observaciones en el cálculo del WOE. Además, combina diferentes métodos de binning, `bucket` para `x0` y `x1`, y `quantile` para `x2`, para mostrar la flexibilidad del procedimiento. Esto es particularmente relevante para conjuntos de datos reales donde los valores faltantes y las ponderaciones son comunes.
¡Copiado!
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 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo destaca las capacidades de SAS Viya y el entorno CAS. Muestra cómo el procedimiento BINNING no solo puede generar los bins y los WOE, sino también guardar este 'modelo' de binning en una tabla CAS (`mylib.woe_mapping`) usando la instrucción `SAVE WOE=`. Esta tabla de mapeo puede usarse posteriormente para aplicar las mismas transformaciones WOE a nuevos datos (`APPLYWOE=`), asegurando la coherencia entre los conjuntos de datos de entrenamiento y validación/prueba, lo cual es una práctica común en el modelado predictivo.
¡Copiado!
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 
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved