conditionalRandomFields crfTrain

Análisis de Logs de Ciberseguridad a Gran Escala

Scénario de test & Cas d'usage

Contexto empresarial

Un centro de operaciones de seguridad (SOC) recibe millones de líneas de logs por hora. Necesitan entrenar un modelo robusto para detectar patrones de ataque en secuencias de comandos. El volumen de datos es alto y el modelo debe evitar el sobreajuste (overfitting) debido al ruido en los logs.
Preparación de datos

Generación sintética de un gran volumen de logs tokenizados (100,000 filas) para pruebas de estrés.

¡Copiado!
1DATA 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;
9RUN;

Étapes de réalisation

1
Configuración del entrenamiento con optimización avanzada L-BFGS y regularización L1/L2 para gestionar la dispersión y prevenir el sobreajuste en un conjunto de datos grande.
¡Copiado!
1PROC 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 };
16RUN;

Resultado esperado


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.