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
arguments Especifica la lista de argumentos a utilizar. Alias: args.
casOut Puntúa la tabla de entrada y guarda los resultados de la puntuación como una tabla en CAS.
casOutBinDetails Especifica la configuración para una tabla de salida que incluye información sobre los resultados de la agrupación (binning).
casOutLevelBinMap Especifica la configuración para una tabla de salida que contiene la información de mapeo de niveles nominales a bins.
code Especifica la configuración para generar código de puntuación SAS DATA step.
copyAllVars Cuando se establece en True, todas las variables de la tabla de entrada se copian a la tabla de salida puntuada. Por defecto es False.
copyVars Especifica 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.
distinctCountLimit Especifica el límite de conteo de valores distintos para las variables categóricas.
evaluationStats Cuando 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.
events Especifica 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'.
freq Especifica la variable de frecuencia. Alias: frequency.
fuzzyCompare Especifica el umbral de comparación difusa que se utiliza para determinar la distinción de valores numéricos. Rango: 0–1E-05.
includeInputVars Cuando 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.
includeMissingGroup Cuando se establece en True, los valores perdidos se permiten como claves de agrupación (group-by). Por defecto es False.
inputs Especifica las variables a utilizar para el análisis. Puede especificar un subconjunto de las variables de la tabla de entrada. Alias: vars.
inputsInheritFormats Especifica que las variables de entrada heredan los formatos de la tabla subyacente. Por defecto es False.
method Especifica la técnica de agrupación a utilizar. Los valores posibles son 'DTREE', 'GROUPRARE', 'ONEHOT', 'RTREE', 'WOE'. El valor predeterminado es 'GROUPRARE'.
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. El valor predeterminado es 'cat'.
outVarsNameSuffix Especifica un sufijo para aplicar a los nombres de las variables de salida.
sasVarNameLength Cuando 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.
table Parámetro requerido. Especifica la tabla de entrada para el análisis.
targets Especifica una lista de variables objetivo. Este parámetro es requerido para las técnicas de agrupación supervisada. Alias: evalVars.
targetsInheritFormats Especifica que las variables objetivo heredan los formatos de la tabla subyacente. Por defecto es False.
weight Especifica 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...