dataPreprocess

catTrans

Descripción

Agrupa y codifica variables categóricas utilizando técnicas de agrupación supervisadas y no supervisadas. Esta acción es fundamental en la preparación de datos para el modelado, permitiendo transformar variables nominales en representaciones numéricas significativas, como Weight of Evidence (WOE), o agrupar niveles raros para mejorar la robustez del modelo.

dataPreprocess.catTrans <result=results> <status=rc> / arguments={<catTransArguments>}, casOut={<casouttable>}, casOutBinDetails={<casouttable>}, casOutLevelBinMap={<casouttable>}, code={<codegen>}, copyAllVars=TRUE | FALSE, copyVars={"variable-name-1" <, "variable-name-2", ...>}, distinctCountLimit=integer, evaluationStats=TRUE | FALSE, events={"string-1" <, "string-2", ...>}, freq="variable-name", fuzzyCompare=double, includeInputVars=TRUE | FALSE, includeMissingGroup=TRUE | FALSE, inputs={{<casinvardesc-1>} <, {<casinvardesc-2>}, ...>}, inputsInheritFormats=TRUE | FALSE, method="DTREE" | "GROUPRARE" | "ONEHOT" | "RTREE" | "WOE", outputTableOptions={<outputTableOptions>}, outVarsNamePrefix="string", outVarsNameSuffix="string", sasVarNameLength=TRUE | FALSE, table={<castable>}, targets={{<casinvardesc-1>} <, {<casinvardesc-2>}, ...>}, targetsInheritFormats=TRUE | FALSE, weight="variable-name";
Parámetros
ParámetroDescripción
argumentsEspecifica la lista de argumentos a utilizar. Alias: args.
casOutPuntúa la tabla de entrada y guarda los resultados de la puntuación como una tabla en CAS.
casOutBinDetailsEspecifica la configuración para una tabla de salida que incluye información sobre los resultados de la agrupación (binning).
casOutLevelBinMapEspecifica la configuración para una tabla de salida que contiene la información de mapeo de niveles nominales a bins.
codeEspecifica la configuración para generar código de puntuación SAS DATA step.
copyAllVarsCuando se establece en True, todas las variables de la tabla de entrada se copian a la tabla de salida puntuada. Por defecto es False.
copyVarsEspecifica los nombres de las variables en la tabla de entrada para usar como identificadores en la tabla de salida. Estas variables se copian a la tabla de salida.
distinctCountLimitEspecifica el límite de conteo de valores distintos para las variables categóricas.
evaluationStatsCuando se establece en True, solicita que se calculen el conjunto predeterminado de estadísticas de evaluación para las variables transformadas. Por defecto es False.
eventsEspecifica una lista de eventos que corresponden a la lista de variables objetivo. Estos valores se emparejan uno a uno con las variables objetivo del parámetro 'targets'.
freqEspecifica la variable de frecuencia. Alias: frequency.
fuzzyCompareEspecifica el umbral de comparación difusa que se utiliza para determinar la distinción de valores numéricos. Rango: 0–1E-05.
includeInputVarsCuando se establece en True, las variables de análisis de la tabla de entrada especificadas en el parámetro 'inputs' se copian a la tabla de salida. Por defecto es False.
includeMissingGroupCuando se establece en True, los valores perdidos se permiten como claves de agrupación (group-by). Por defecto es False.
inputsEspecifica las variables a utilizar para el análisis. Puede especificar un subconjunto de las variables de la tabla de entrada. Alias: vars.
inputsInheritFormatsEspecifica que las variables de entrada heredan los formatos de la tabla subyacente. Por defecto es False.
methodEspecifica la técnica de agrupación a utilizar. Los valores posibles son 'DTREE', 'GROUPRARE', 'ONEHOT', 'RTREE', 'WOE'. El valor predeterminado es 'GROUPRARE'.
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. El valor predeterminado es 'cat'.
outVarsNameSuffixEspecifica un sufijo para aplicar a los nombres de las variables de salida.
sasVarNameLengthCuando se establece en True, la longitud de los nombres de las variables de salida se restringe a 32 caracteres o menos. Por defecto es False.
tableParámetro requerido. Especifica la tabla de entrada para el análisis.
targetsEspecifica una lista de variables objetivo. Este parámetro es requerido para las técnicas de agrupación supervisada. Alias: evalVars.
targetsInheritFormatsEspecifica que las variables objetivo heredan los formatos de la tabla subyacente. Por defecto es False.
weightEspecifica la variable de ponderación.
Creación de Datos de Ejemplo

Creamos una tabla de ejemplo 'CARS_CATEGORICAL' en la caslib 'casuser'. Esta tabla contiene información sobre vehículos, incluyendo el tipo (Type), el origen (Origin) y una variable objetivo binaria 'High_MPG' que indica si el consumo es alto (1) o no (0).

¡Copiado!
1DATA casuser.cars_categorical;
2 SET sashelp.cars;
3 IF MPG_City > 25 THEN High_MPG = 1; ELSE High_MPG = 0;
4 keep Type Origin High_MPG;
5RUN;

Ejemplos

Este ejemplo utiliza el método no supervisado 'GROUPRARE' para agrupar los niveles de la variable 'Type' que aparecen con poca frecuencia. Los niveles con una frecuencia inferior al 10% del total de observaciones se agruparán en una única categoría. Esto es útil para simplificar variables con muchas categorías poco comunes.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 dataPreprocess.catTrans /
3 TABLE={name='CARS_CATEGORICAL', caslib='casuser'},
4 inputs={{name='Type'}},
5 method='GROUPRARE',
6 arguments={rareThresholdPercent=10},
7 casOut={name='CARS_PROCESSED_RARE', caslib='casuser', replace=true},
8 copyVars={'Type', 'High_MPG'};
9RUN;
10QUIT;
Resultado :
La tabla de salida 'CARS_PROCESSED_RARE' contendrá una nueva variable llamada 'cat_Type' que representa la variable 'Type' con sus niveles raros agrupados. Las tablas de resultados en SAS Studio mostrarán el mapeo de los niveles originales a los nuevos grupos.

Este ejemplo realiza una transformación supervisada utilizando el método 'WOE' (Weight of Evidence). Agrupa los niveles de la variable 'Origin' basándose en su relación con la variable objetivo binaria 'High_MPG'. Se especifican el evento de interés ('1') y se generan tablas de salida detalladas ('WOE_DETAILS', 'WOE_MAP') que contienen las estadísticas de agrupación, como el WOE y el Information Value (IV) para cada grupo.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 dataPreprocess.catTrans /
3 TABLE={name='CARS_CATEGORICAL', caslib='casuser'},
4 inputs={{name='Origin'}},
5 targets={{name='High_MPG'}},
6 events={'1'},
7 method='WOE',
8 evaluationStats=true,
9 casOut={name='CARS_PROCESSED_WOE', caslib='casuser', replace=true},
10 casOutBinDetails={name='WOE_DETAILS', caslib='casuser', replace=true},
11 casOutLevelBinMap={name='WOE_MAP', caslib='casuser', replace=true},
12 copyVars={'Origin', 'High_MPG'};
13RUN;
14QUIT;
Resultado :
La tabla de salida 'CARS_PROCESSED_WOE' incluirá la variable 'cat_Origin' transformada a su valor de WOE. Además, se crearán las tablas 'WOE_DETAILS' y 'WOE_MAP' en la caslib 'casuser' con estadísticas detalladas de la transformación, permitiendo evaluar el poder predictivo de la variable agrupada a través del Information Value (IV).

Escenarios asociados

Caso de uso
Transformación Supervisada WOE para Modelado de Riesgo Crediticio

Una entidad financiera desea desarrollar un modelo de Scorecard para predecir la probabilidad de impago (default). Las variables categóricas como 'Tipo de Empleo' y 'Estado Civi...

Caso de uso
Codificación One-Hot Masiva para Sistema de Recomendación

Un gigante del e-commerce analiza el comportamiento de navegación de usuarios. Para alimentar una red neuronal profunda, necesitan convertir la variable 'Categoría_Producto' (qu...

Caso de uso
Gestión de Valores Nulos y Niveles Raros en Sensores IoT

En el mantenimiento predictivo de una planta industrial, los sensores envían códigos de estado. Existen muchos códigos de error 'raros' (ruido) y fallos de transmisión que gener...