?> binning - WeAreCAS
dataPreprocess

binning

Descripción

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.

dataPreprocess.binning / binEnds={double-1, ...}, binMapping="LEFT"|"RIGHT", binMissing=TRUE|FALSE, binStarts={double-1, ...}, binWidths={double-1, ...}, casOut={...}, casOutBinDetails={...}, code={...}, copyAllVars=TRUE|FALSE, copyVars={"variable-name-1", ...}, cutPoints={double-1, ...}, freq="variable-name", fuzzyCompare=double, includeInputVars=TRUE|FALSE, includeMissingGroup=TRUE|FALSE, inputs={{...}, ...}, method="BUCKET"|"CUTPTS"|"QUANTILE", nBinsArray={integer-1, ...}|integer, noDataLowerUpperBound=TRUE|FALSE, outputTableOptions={...}, outVarsNamePrefix="string", outVarsNameSuffix="string", percentileDefinition=integer, percentileMaxIterations=integer, percentileTolerance=double, sasVarNameLength=TRUE|FALSE, table={...}, weight="variable-name";
Parámetros
ParámetroDescripción
binEndsEspecifica los valores finales de los intervalos. Si se aplica, anulan los valores máximos de los datos.
binMappingControla 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 [), [), ..., [].
binMissingCuando se establece en True, agrupa los valores faltantes en un intervalo separado. El ID para este intervalo es 0.
binStartsEspecifica los valores de inicio de los intervalos. Si se aplica, anulan los valores mínimos de los datos.
binWidthsEspecifica el ancho del intervalo.
casOutPuntúa la tabla de entrada y guarda los resultados de la puntuación como una tabla.
casOutBinDetailsEspecifica la configuración para una tabla de salida que incluye información sobre los resultados del agrupamiento.
codeEspecifica la configuración para generar código de puntuación de paso DATA de SAS.
copyAllVarsCuando se establece en True, todas las variables de la tabla de entrada se copian a la tabla de salida puntuada.
copyVarsEspecifica los nombres de las variables en la tabla de entrada para usar en la identificación de observaciones puntuadas en la tabla de salida.
cutPointsEspecifica los puntos de corte proporcionados por el usuario para la técnica de agrupamiento CUTPTS.
freqEspecifica la variable de frecuencia.
fuzzyCompareEspecifica el umbral de comparación difusa que se utiliza para determinar la distinción de los valores numéricos.
includeInputVarsCuando 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.
includeMissingGroupCuando se establece en True, se permiten valores faltantes como claves de agrupación (group-by).
inputsEspecifica las variables a utilizar para el análisis. Puede especificar un subconjunto de las variables de la tabla de entrada.
methodEspecifica 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.
nBinsArrayEspecifica 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.
noDataLowerUpperBoundCuando 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.
outputTableOptionsEspecifica opciones para las tablas de resultados, como qué tablas devolver y cómo manejar los resultados de group-by.
outVarsNamePrefixEspecifica un prefijo para aplicar a los nombres de las variables de salida.
outVarsNameSuffixEspecifica un sufijo para aplicar a los nombres de las variables de salida.
percentileDefinitionEspecifica la definición de percentil a utilizar (un número del 1 al 6).
percentileMaxIterationsEspecifica el número máximo de iteraciones para el cálculo de percentiles.
percentileToleranceEspecifica la tolerancia para el cálculo de percentiles.
sasVarNameLengthCuando se establece en True, la longitud de los nombres de las variables de salida se limita a 32 caracteres o menos.
tableEspecifica la tabla de entrada para el análisis.
weightEspecifica la variable de ponderación.
Preparación de datos
Creación de Datos de Ejemplo

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.

1DATA 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;
9RUN;

Ejemplos

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.

Código SAS® / CAS
¡Copiado!
1PROC 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'};
9RUN;
10QUIT;
Resultado :
Una nueva tabla CAS llamada 'ventas_binned_simple' es creada. Contiene las columnas originales y una nueva columna llamada 'bin_ingresos' que representa el número de intervalo (de 1 a 5) para cada observación basado en el valor de 'ingresos'.

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.

Código SAS® / CAS
¡Copiado!
1PROC 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};
12RUN;
13QUIT;
Resultado :
Se crean dos tablas. La primera, 'ventas_binned_avanzado', contiene todas las columnas originales más 'cuantil_edad' y 'cuantil_ingresos'. La segunda tabla, 'detalles_binning', describe los límites, recuentos y otras estadísticas para cada intervalo generado para 'edad' e 'ingresos'.

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.

Código SAS® / CAS
¡Copiado!
1PROC 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'};
9RUN;
10QUIT;
Resultado :
Se crea la tabla 'ventas_binned_personalizado'. La columna 'bin_ingresos' contendrá valores de 1 a 4, correspondiendo a los intervalos: (-inf, 40000], (40000, 60000], (60000, 80000], y (80000, +inf).

FAQ

¿Para qué se utiliza la acción 'binning' en el conjunto de acciones 'dataPreprocess'?
¿Qué especifica el parámetro 'method' en la acción 'binning'?
¿Cómo se pueden definir puntos de corte personalizados para la discretización?
¿Qué hace el parámetro 'nBinsArray'?
¿Cómo maneja la acción 'binning' los valores perdidos (missing values)?
¿Qué es el parámetro 'binMapping' y qué opciones ofrece?
¿Se puede generar código de puntuación a partir de los resultados del binning?
¿Cuál es la función de la tabla de salida especificada en 'casOut'?