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
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.
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.

¡Copiado!
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 Código en espera de validación por la comunidad
¡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 Código en espera de validación por la comunidad
¡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 Código en espera de validación por la comunidad
¡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'?

Escenarios asociados

Caso de uso
Segmentación de Clientes para Campaña de Marketing Dirigido

Un equipo de marketing necesita segmentar su base de clientes para una nueva campaña. El objetivo es agrupar a los clientes en perfiles basados en su 'edad' y 'gasto_anual' para...

Caso de uso
Análisis de Riesgo Crediticio con Datos Incompletos

Una entidad financiera necesita categorizar a sus solicitantes de crédito en niveles de riesgo predefinidos. Los datos de entrada contienen valores faltantes en la variable clav...

Caso de uso
Monitorización de Sensores IoT y Generación de Código de Puntuación

En una planta de fabricación, se monitorizan miles de sensores en tiempo real. Para simplificar el sistema de alertas, las lecturas continuas de 'temperatura' y 'presion' deben ...