dataPreprocess binning

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

Scénario de test & Cas d'usage

Contexto empresarial

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 personalizar las ofertas. Se requiere una segmentación por cuantiles para asegurar que los grupos tengan un tamaño similar.
Sobre el conjunto : dataPreprocess

Limpieza, imputación y preprocesamiento de datos.

Descubrir todas las acciones de dataPreprocess
Preparación de datos

Crea una tabla de clientes con datos demográficos y de compras. Incluye una variedad de edades y gastos para simular una base de clientes realista.

¡Copiado!
1DATA casuser.clientes_campana (promote=yes);
2 call streaminit(123);
3 DO id_cliente = 1 to 5000;
4 edad = 18 + floor(rand('UNIFORM') * 62);
5 gasto_anual = 50 + (rand('NORMAL', 500, 250));
6 IF gasto_anual < 0 THEN gasto_anual = 50;
7 region = byte(65 + floor(rand('UNIFORM')*4)); /* A, B, C, D */
8 OUTPUT;
9 END;
10RUN;

Étapes de réalisation

1
Carga de la tabla de clientes a la memoria de CAS.
¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=casuser.clientes_campana casout='clientes_campana' replace;
5QUIT;
6 
2
Ejecución de la acción 'binning' con el método QUANTILE para crear 5 grupos de edad y 10 grupos de gasto. Se generan dos tablas de salida: una con los datos puntuados y otra con los detalles de los intervalos.
¡Copiado!
1PROC CAS;
2 dataPreprocess.binning /
3 TABLE={name='clientes_campana', caslib='casuser'},
4 inputs={{name='edad'}, {name='gasto_anual'}},
5 method='QUANTILE',
6 nBinsArray={5, 10},
7 copyAllVars=true,
8 outVarsNamePrefix='segmento_q',
9 casOut={name='clientes_segmentados', caslib='casuser', replace=true},
10 casOutBinDetails={name='detalles_segmentacion', caslib='casuser', replace=true};
11RUN;
12QUIT;
3
Verificación de los resultados. Se comprueba el contenido de la tabla de detalles para asegurar que los límites de los intervalos han sido calculados correctamente.
¡Copiado!
1PROC CAS;
2 TABLE.fetch / TABLE={name='detalles_segmentacion', caslib='casuser'};
3RUN;
4QUIT;

Resultado esperado


Se crean dos tablas en CAS. 'clientes_segmentados' contiene todos los datos originales más dos nuevas columnas, 'segmento_q_edad' (valores de 1 a 5) y 'segmento_q_gasto_anual' (valores de 1 a 10). La tabla 'detalles_segmentacion' contiene metadatos que describen los límites superior e inferior, el recuento y el porcentaje de observaciones para cada uno de los 15 intervalos creados.