Scénario de test & Cas d'usage
Generación sintética de un gran volumen de logs tokenizados (100,000 filas) para pruebas de estrés.
| 1 | DATA mycas.security_logs; |
| 2 | LENGTH token $50 label $20; |
| 3 | DO i=1 to 100000; |
| 4 | IF mod(i, 5) = 0 THEN DO; token='sudo'; label='B-CMD'; OUTPUT; END; |
| 5 | ELSE IF mod(i, 5) = 1 THEN DO; token='rm'; label='I-CMD'; OUTPUT; END; |
| 6 | ELSE IF mod(i, 5) = 2 THEN DO; token='-rf'; label='I-ARG'; OUTPUT; END; |
| 7 | ELSE DO; token='log_entry'; label='O'; OUTPUT; END; |
| 8 | END; |
| 9 | RUN; |
| 1 | PROC CAS; |
| 2 | conditionalRandomFields.crfTrain / |
| 3 | TABLE={name='security_logs'}, |
| 4 | target='label', |
| 5 | template='U00:%w[0,0]', |
| 6 | model={name='sec_model', replace=true}, |
| 7 | nloOpts={ |
| 8 | algorithm='LBFGS', |
| 9 | optmlOpt={ |
| 10 | regL1=0.2, |
| 11 | regL2=0.1, |
| 12 | maxIters=100 |
| 13 | }, |
| 14 | state={name='train_state', replace=true, checkpointFreq=10} |
| 15 | }; |
| 16 | RUN; |
La acción debe manejar el volumen de 100,000 filas eficientemente. El uso de regularización L1/L2 debe reflejarse en el log de salida. Además, debe crearse la tabla 'train_state' guardando el progreso cada 10 iteraciones, demostrando la capacidad de recuperación ante fallos en procesos largos.