conditionalRandomFields crfTrain

Détection de Patterns dans les Logs Serveur (Haute Volumétrie)

Scénario de test & Cas d'usage

Contexte Métier

Une équipe de cybersécurité analyse des logs serveurs massifs pour identifier des séquences d'attaque (Injection SQL, XSS). Le volume de données étant important, on teste la capacité de l'algorithme SGD (Stochastic Gradient Descent) à converger plus vite que LBFGS sur un grand jeu de données bruité.
Préparation des Données

Génération synthétique de 10 000 lignes de logs avec injection de patterns d'erreur.

Copié !
1 
2DATA mycas.server_logs;
3LENGTH text $300 target $300;
4DO i=1 to 10000;
5IF mod(i, 100) = 0 THEN DO;
6text='GET /admin/login.php?user=admin OR 1=1';
7target='O O O B-ATTACK I-ATTACK I-ATTACK';
8END;
9ELSE DO;
10text='GET /home/index.html HTTP/1.1 200 OK';
11target='O O O O O O';
12END;
13OUTPUT;
14END;
15 
16RUN;
17 

Étapes de réalisation

1
Génération des données volumineuses.
Copié !
1/* Exécution du data step de génération */
2
Entraînement avec l'algorithme SGD et une forte régularisation L2 pour éviter le surajustement au bruit.
Copié !
1 
2PROC CAS;
3conditionalRandomFields.crfTrain / TABLE={name='server_logs', caslib='mycas'}, target='target', template='U:w[0]', model={name='cyber_model', caslib='mycas', replace=true}, nloOpts={algorithm='SGD', optmlOpt={regL2=0.1, maxIters=50}, printOpt={printFreq=10}};
4 
5RUN;
6 
7QUIT;
8 

Résultat Attendu


Le modèle doit s'entraîner en utilisant l'optimiseur SGD (visible dans les logs). La régularisation L2 doit être appliquée. Le temps d'exécution doit rester cohérent malgré le volume (10k lignes). Les tables de modèle 'cyber_model_*' sont créées.