Scénario de test & Cas d'usage
Entraînement de réseaux de neurones artificiels classiques.
Découvrir toutes les actions de neuralNetCréation d'une table volumineuse simulant les données de 50 capteurs pour des milliers de cycles de machine. Un modèle d'auto-encodeur est ensuite entraîné.
| 1 | PROC CAS; |
| 2 | LOADACTIONSET 'dataStep'; |
| 3 | LOADACTIONSET 'neuralNet'; |
| 4 | |
| 5 | /* 1. Création des données de capteurs (volumétrie) */ |
| 6 | ACTION dataStep.runCode / code=' |
| 7 | data capteurs_usine (caslib="casuser"); |
| 8 | array capteurs{50} capteur1-capteur50; |
| 9 | call streaminit(2024); |
| 10 | do id_cycle = 1 to 20000; |
| 11 | base_val = rand("Uniform") * 100; |
| 12 | do i = 1 to 50; |
| 13 | capteurs{i} = base_val + rand("Normal", 0, 2); |
| 14 | end; |
| 15 | output; |
| 16 | end; |
| 17 | drop i base_val; |
| 18 | run;'; |
| 19 | |
| 20 | /* 2. Entraînement d''un modèle auto-encodeur (inputs = target) */ |
| 21 | /* On définit une couche cachée 'goulot d''étranglement' de 5 neurones */ |
| 22 | ACTION neuralNet.annTrain / |
| 23 | TABLE={name='capteurs_usine', caslib='casuser'}, |
| 24 | inputs={'capteur1'-'capteur50'}, |
| 25 | target={'capteur1'-'capteur50'}, |
| 26 | hiddens={20, 5, 20}, |
| 27 | modelTable={name='model_autoencoder', caslib='casuser', replace=true}; |
| 28 | QUIT; |
| 1 | PROC CAS; |
| 2 | LOADACTIONSET 'neuralNet'; |
| 3 | ACTION neuralNet.annScore / |
| 4 | TABLE={name='capteurs_usine', caslib='casuser'}, |
| 5 | modelTable={name='model_autoencoder', caslib='casuser'}, |
| 6 | listNode='HIDDEN', |
| 7 | casOut={name='features_compressees', caslib='casuser', replace=true}; |
| 8 | QUIT; |
| 1 | PROC CAS; |
| 2 | ACTION TABLE.columnInfo / TABLE={name='features_compressees', caslib='casuser'}; |
| 3 | ACTION TABLE.fetch / TABLE={name='features_compressees', caslib='casuser'}, to=5; |
| 4 | QUIT; |
La table `features_compressees` ne contiendra pas les 50 colonnes de capteurs prédites. À la place, elle contiendra 25 colonnes (20+5) représentant les activations des neurones des deux premières couches cachées (SAS n'expose pas la dernière couche cachée dans ce cas). Ces 25 nouvelles variables, en particulier les 5 du 'goulot d'étranglement', sont une représentation compressée des 50 capteurs originaux et peuvent être utilisées pour des modèles de détection d'anomalies plus légers.