Scénario de test & Cas d'usage
Generación de 50,000 transacciones bancarias simuladas con variables de monto, ubicación y hora, incluyendo una marca de fraude poco frecuente.
| 1 | |
| 2 | DATA casuser.bank_fraud; |
| 3 | call streaminit(456); |
| 4 | DO i=1 to 50000; |
| 5 | amount = rand('Exponential', 100); |
| 6 | location_score = rand('Integer', 1, 5); |
| 7 | hour = rand('Integer', 0, 23); |
| 8 | IF rand('Uniform') < 0.02 THEN is_fraud = 1; |
| 9 | ELSE is_fraud = 0; |
| 10 | OUTPUT; |
| 11 | END; |
| 12 | |
| 13 | RUN; |
| 14 |
| 1 | PROC CAS; |
| 2 | SESSION.sessionStatus; |
| 3 | RUN; |
| 1 | PROC 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 | }; |
| 15 | RUN; QUIT; |
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.