?>
La acción `binning` del conjunto de acciones `dataPreprocess` realiza una discretización no supervisada de variables. Este proceso, también conocido como agrupamiento, consiste en convertir variables continuas en un número finito de intervalos o 'bins'. Es una técnica fundamental en la preparación de datos para mejorar la robustez de los modelos, manejar valores atípicos y adaptar los datos a algoritmos que requieren entradas categóricas.
| Parámetro | Descripción |
|---|---|
| binEnds | Especifica los valores finales de los intervalos. Si se aplica, anulan los valores máximos de los datos. |
| binMapping | Controla cómo se mapean los valores que caen en el límite entre intervalos consecutivos. 'LEFT' permite expresar los intervalos con la notación [], (], ..., (]. 'RIGHT' permite [), [), ..., []. |
| binMissing | Cuando se establece en True, agrupa los valores faltantes en un intervalo separado. El ID para este intervalo es 0. |
| binStarts | Especifica los valores de inicio de los intervalos. Si se aplica, anulan los valores mínimos de los datos. |
| binWidths | Especifica el ancho del intervalo. |
| casOut | Puntúa la tabla de entrada y guarda los resultados de la puntuación como una tabla. |
| casOutBinDetails | Especifica la configuración para una tabla de salida que incluye información sobre los resultados del agrupamiento. |
| code | Especifica la configuración para generar código de puntuación de paso DATA de SAS. |
| copyAllVars | Cuando se establece en True, todas las variables de la tabla de entrada se copian a la tabla de salida puntuada. |
| copyVars | Especifica los nombres de las variables en la tabla de entrada para usar en la identificación de observaciones puntuadas en la tabla de salida. |
| cutPoints | Especifica los puntos de corte proporcionados por el usuario para la técnica de agrupamiento CUTPTS. |
| freq | Especifica la variable de frecuencia. |
| fuzzyCompare | Especifica el umbral de comparación difusa que se utiliza para determinar la distinción de los valores numéricos. |
| includeInputVars | Cuando se establece en True, las variables de análisis de la tabla de entrada que se especifican en el parámetro `vars` se copian a la tabla de salida. |
| includeMissingGroup | Cuando se establece en True, se permiten valores faltantes como claves de agrupación (group-by). |
| inputs | Especifica las variables a utilizar para el análisis. Puede especificar un subconjunto de las variables de la tabla de entrada. |
| method | Especifica la técnica de agrupamiento a utilizar. 'BUCKET' crea intervalos de igual ancho, 'CUTPTS' crea intervalos según puntos de corte especificados por el usuario, y 'QUANTILE' crea intervalos de igual frecuencia. |
| nBinsArray | Especifica una lista del número de intervalos a crear para cada variable. Si hay más variables que intervalos especificados, se utiliza el último valor para las variables restantes. |
| noDataLowerUpperBound | Cuando se establece en True, durante la generación del código de puntuación, los límites inferior y superior globales del conjunto de intervalos son ilimitados en lugar de establecerse en los valores obtenidos de los datos. |
| outputTableOptions | Especifica opciones para las tablas de resultados, como qué tablas devolver y cómo manejar los resultados de group-by. |
| outVarsNamePrefix | Especifica un prefijo para aplicar a los nombres de las variables de salida. |
| outVarsNameSuffix | Especifica un sufijo para aplicar a los nombres de las variables de salida. |
| percentileDefinition | Especifica la definición de percentil a utilizar (un número del 1 al 6). |
| percentileMaxIterations | Especifica el número máximo de iteraciones para el cálculo de percentiles. |
| percentileTolerance | Especifica la tolerancia para el cálculo de percentiles. |
| sasVarNameLength | Cuando se establece en True, la longitud de los nombres de las variables de salida se limita a 32 caracteres o menos. |
| table | Especifica la tabla de entrada para el análisis. |
| weight | Especifica la variable de ponderación. |
Este bloque de código DATA Step crea una tabla en CAS llamada 'ventas_clientes' con datos de ejemplo. Contiene información sobre la edad, los ingresos y el número de compras de diferentes clientes, que se utilizará para demostrar la acción de agrupamiento.
1 DATA casuser.ventas_clientes; 2 DO i = 1 to 100; 3 edad = 18 + floor(rand('UNIFORM')*50); 4 ingresos = 20000 + floor(rand('UNIFORM')*80000); 5 compras = 1 + floor(rand('UNIFORM')*20); 6 IF rand('UNIFORM') < 0.1 THEN call missing(edad); 7 OUTPUT; 8 END; 9 RUN;
Este ejemplo agrupa la variable 'ingresos' de la tabla 'ventas_clientes' en 5 intervalos de igual ancho (método 'BUCKET'). La tabla de salida 'ventas_binned_simple' contendrá las variables originales más la nueva variable de intervalo.
| 1 | PROC CAS; |
| 2 | dataPreprocess.binning / |
| 3 | TABLE={name='ventas_clientes', caslib='casuser'}, |
| 4 | inputs={{name='ingresos'}}, |
| 5 | method='BUCKET', |
| 6 | nBinsArray=5, |
| 7 | casOut={name='ventas_binned_simple', caslib='casuser', replace=true}, |
| 8 | copyVars={'edad', 'ingresos', 'compras'}; |
| 9 | RUN; |
| 10 | QUIT; |
Este ejemplo demuestra un agrupamiento más complejo. Se agrupan las variables 'edad' e 'ingresos' utilizando el método de cuantiles. Se crean 4 intervalos para 'edad' y 10 para 'ingresos'. Los valores faltantes se agrupan en un intervalo separado. Se generan dos tablas de salida: 'ventas_binned_avanzado' con los datos puntuados y 'detalles_binning' con los metadatos de los intervalos.
| 1 | PROC CAS; |
| 2 | dataPreprocess.binning / |
| 3 | TABLE={name='ventas_clientes', caslib='casuser'}, |
| 4 | inputs={{name='edad'}, {name='ingresos'}}, |
| 5 | method='QUANTILE', |
| 6 | nBinsArray={4, 10}, |
| 7 | binMissing=true, |
| 8 | outVarsNamePrefix='cuantil', |
| 9 | copyAllVars=true, |
| 10 | casOut={name='ventas_binned_avanzado', caslib='casuser', replace=true}, |
| 11 | casOutBinDetails={name='detalles_binning', caslib='casuser', replace=true}; |
| 12 | RUN; |
| 13 | QUIT; |
Este ejemplo utiliza el método 'CUTPTS' para agrupar la variable 'ingresos' según puntos de corte definidos por el usuario. Esto permite un control total sobre los límites de cada intervalo, lo cual es útil para aplicar reglas de negocio específicas.
| 1 | PROC CAS; |
| 2 | dataPreprocess.binning / |
| 3 | TABLE={name='ventas_clientes', caslib='casuser'}, |
| 4 | inputs={{name='ingresos'}}, |
| 5 | method='CUTPTS', |
| 6 | cutPoints={40000, 60000, 80000}, |
| 7 | casOut={name='ventas_binned_personalizado', caslib='casuser', replace=true}, |
| 8 | copyVars={'ingresos'}; |
| 9 | RUN; |
| 10 | QUIT; |