mlTools crossValidate

Evaluación de Alto Rendimiento para Detección de Fraude Bancario

Scénario de test & Cas d'usage

Contexto empresarial

Un banco internacional necesita reentrenar diariamente sus modelos de detección de fraude utilizando un volumen masivo de transacciones. El tiempo de cómputo es crítico. Se requiere validar un modelo de Random Forest utilizando procesamiento paralelo para minimizar el tiempo de ejecución. El objetivo es probar la eficiencia de la opción 'parallelFolds' bajo una carga simulada alta.
Preparación de datos

Generación de 50,000 transacciones bancarias simuladas con variables de monto, ubicación y hora, incluyendo una marca de fraude poco frecuente.

¡Copiado!
1 
2DATA casuser.bank_fraud;
3call streaminit(456);
4DO i=1 to 50000;
5amount = rand('Exponential', 100);
6location_score = rand('Integer', 1, 5);
7hour = rand('Integer', 0, 23);
8IF rand('Uniform') < 0.02 THEN is_fraud = 1;
9ELSE is_fraud = 0;
10OUTPUT;
11END;
12 
13RUN;
14 

Étapes de réalisation

1
Verificación del entorno multiproceso
¡Copiado!
1PROC CAS;
2 SESSION.sessionStatus;
3RUN;
2
Ejecución de Cross-Validation con Forest en Paralelo (10 folds)
¡Copiado!
1PROC CAS;
2 mlTools.crossValidate /
3 modelType='FOREST',
4 kFolds=10,
5 seed=888,
6 parallelFolds=TRUE,
7 nSubsessionWorkers=2,
8 casOut={name='fraud_scores', replace=true},
9 trainOptions={
10 TABLE={name='bank_fraud'},
11 target='is_fraud',
12 inputs={'amount', 'location_score', 'hour'},
13 nominals={'is_fraud'}
14 };
15RUN; QUIT;

Resultado esperado


La acción debe completar los 10 pliegues significativamente más rápido que en modo serial. Se debe generar la tabla de salida 'fraud_scores' con las puntuaciones de fraude para todas las transacciones, y los logs deben indicar que se iniciaron subs-sesiones o hilos paralelos para el procesamiento.