mlTools crossValidate

Validation haute performance avec parallélisation massive

Scénario de test & Cas d'usage

Contexte Métier

Une usine manufacturière analyse des milliers de logs de capteurs pour la maintenance prédictive. Compte tenu du volume et de la nécessité d'une validation rigoureuse (10 plis), l'exécution doit être parallélisée au maximum sur les nœuds de travail pour optimiser le temps de traitement.
Préparation des Données

Génération d'un jeu de données de capteurs plus volumineux pour tester la charge.

Copié !
1 
2DATA work.sensors;
3call streaminit(999);
4DO i=1 to 5000;
5temp = rand('normal', 90, 10);
6vibr = rand('normal', 0.5, 0.1);
7pressure = rand('uniform', 10, 50);
8IF temp > 110 or vibr > 0.8 THEN STATUS='Fail';
9ELSE STATUS='OK';
10OUTPUT;
11END;
12 
13RUN;
14 

Étapes de réalisation

1
Chargement des données capteurs dans CAS.
Copié !
1 
2PROC CAS;
3upload path="%sysfunc(pathname(work))/sensors.sas7bdat" casout={name="sensors", replace=true};
4 
5QUIT;
6 
2
Validation croisée sur 10 plis avec parallélisation explicite et graine fixée.
Copié !
1 
2PROC CAS;
3mlTools.crossValidate / kFolds=10 modelType="DECISIONTREE" parallelFolds=TRUE seed=42 trainOptions={TABLE={name="sensors"}, target="status", inputs={"temp", "vibr", "pressure"}, nominals={"status"}};
4 
5QUIT;
6 

Résultat Attendu


L'exécution doit se terminer sans erreur, en utilisant les threads parallèles pour traiter les 10 plis simultanément. Les logs doivent indiquer l'initialisation et la fin des plis (grâce au logLevel par défaut).