mlTools crossValidate

Validación de Modelo de Fugas (Churn) en Telecomunicaciones

Scénario de test & Cas d'usage

Contexto empresarial

Una empresa de telecomunicaciones quiere predecir qué clientes están en riesgo de cancelar sus contratos. El equipo de Data Science ha seleccionado un modelo de Gradient Boosting, pero necesita asegurar que el modelo sea generalizable y no esté sobreajustado (overfitting) antes de desplegarlo en producción. Se requiere una validación cruzada estándar de 5 pliegues para obtener métricas de error fiables.
Preparación de datos

Simulación de una cartera de 1,000 clientes con variables de uso (minutos, datos), tipo de contrato y la variable objetivo 'CHURN' (0=No, 1=Sí).

¡Copiado!
1 
2DATA casuser.telco_churn;
3call streaminit(123);
4DO i=1 to 1000;
5minutes = rand('Normal', 300, 50);
6data_usage = rand('Uniform', 1, 10);
7IF rand('Uniform') < 0.3 THEN contract = 'Month';
8ELSE contract = 'Year';
9IF rand('Uniform') < 0.15 + (minutes<200)*0.2 THEN churn = 1;
10ELSE churn = 0;
11OUTPUT;
12END;
13 
14RUN;
15 

Étapes de réalisation

1
Carga de datos y verificación preliminar
¡Copiado!
1 
2PROC CAS;
3 
4TABLE.tableInfo / TABLE='telco_churn';
5 
6RUN;
7 
2
Ejecución de Cross-Validation con Gradient Boosting (5 folds)
¡Copiado!
1PROC CAS;
2 mlTools.crossValidate /
3 modelType='GRADBOOST',
4 kFolds=5,
5 seed=999,
6 trainOptions={
7 TABLE={name='telco_churn'},
8 target='churn',
9 inputs={'minutes', 'data_usage', 'contract'},
10 nominals={'contract', 'churn'}
11 };
12RUN; QUIT;

Resultado esperado


La acción debe ejecutarse sin errores, dividiendo los datos en 5 particiones. Se espera recibir una tabla de resumen con el error medio de clasificación (Misclassification Error) para cada uno de los 5 pliegues, demostrando la estabilidad del modelo Gradient Boosting.