?>
L'action `annScore` est utilisée pour évaluer (scorer) une table de données en utilisant un modèle de réseau de neurones artificiels préalablement entraîné. Elle applique le modèle stocké dans une table de modèle sur une nouvelle table de données pour générer des prédictions. Cette action est une étape cruciale dans le cycle de vie du machine learning, permettant de déployer un modèle pour faire des inférences sur de nouvelles données.
| Paramètre | Description |
|---|---|
| assess | Lorsque défini sur Vrai, les probabilités prédites pour les niveaux d'événement sont ajoutées à la table de résultats. Ces probabilités peuvent être utilisées avec l'action `assess`. |
| assessOneRow | Lorsque défini sur Vrai, les probabilités prédites pour les niveaux d'événement sont ajoutées à la table de résultats. Toutes les probabilités d'événement sont incluses en tant que colonnes séparées et sont nommées avec le préfixe _NN_P_. Ces probabilités peuvent être utilisées avec l'action `assess`. |
| casOut | Spécifie la table de sortie pour stocker les résultats du scoring. |
| copyVars | Spécifie les variables à transférer de la table d'entrée vers la table de sortie. |
| impute | Lorsque défini sur Vrai, les observations avec une valeur non manquante pour la variable cible sont utilisées comme valeurs prédites. Seules les observations avec des valeurs manquantes pour la variable cible sont scorées. |
| includeMissing | Par défaut, les observations avec des valeurs manquantes sont incluses. Lorsque défini sur Faux, toute observation avec des valeurs manquantes pour les variables utilisées dans le modèle n'est pas incluse. |
| listNode | Spécifie les nœuds à inclure dans la table de sortie scorée. Utile pour l'auto-encodage afin de réduire la dimensionnalité des entrées. |
| modelId | Spécifie le nom de la variable d'ID du modèle à utiliser lors de la génération de la table scorée. Par défaut, le nom de la variable est _NN_PredName_ pour les classifications et _NN_Pred_ pour les régressions. |
| modelTable | Spécifie la table qui contient le modèle de réseau de neurones artificiels à utiliser pour le scoring. |
| table | Spécifie la table d'entrée à scorer. |
| target | Spécifie la variable cible lors du scoring d'un jeu de données. Non requis si le nom de la variable cible dans le modèle est le même que dans la table à scorer. |
Avant de pouvoir utiliser `annScore`, nous devons d'abord entraîner un modèle de réseau de neurones. Ce code charge les données `iris`, les partitionne, puis entraîne un modèle simple avec l'action `annTrain`. Le modèle entraîné est stocké dans la table `my_ann_model`.
1 PROC CAS; 2 loadactionset 'dataStep'; 3 loadactionset 'sampling'; 4 loadactionset 'neuralNet'; 5 6 /* 1. Charger les données */ 7 load DATA=sashelp.iris out=iris; 8 9 /* 2. Partitionner les données */ 10 ACTION sampling.srs RESULT=p_iris / 11 TABLE={name='iris'}, 12 samppct=70, 13 partind=TRUE, 14 seed=1234; 15 16 /* 3. Créer les tables d'entraînement et de validation */ 17 ACTION dataStep.runCode / 18 code='data train_data; set p_iris.srs; if _partind_ = 1; run; data valid_data; set p_iris.srs; if _partind_ = 0; run;'; 19 20 /* 4. Entraîner le modèle de réseau de neurones */ 21 ACTION neuralNet.annTrain / 22 TABLE={name='train_data'}, 23 validTable={name='valid_data'}, 24 target='Species', 25 inputs={'SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth'}, 26 hiddens={50, 20}, 27 modelTable={name='my_ann_model', replace=true}; 28 QUIT;
Cet exemple utilise le modèle `my_ann_model` (créé précédemment) pour scorer la table de validation `valid_data`. Les prédictions sont stockées dans une nouvelle table CAS nommée `scored_results`.
| 1 | PROC CAS; |
| 2 | loadactionset 'neuralNet'; |
| 3 | ACTION neuralNet.annScore / |
| 4 | TABLE={name='valid_data'}, |
| 5 | modelTable={name='my_ann_model'}, |
| 6 | casOut={name='scored_results', replace=true}; |
| 7 | |
| 8 | /* Afficher les 5 premières lignes des résultats */ |
| 9 | ACTION TABLE.fetch / |
| 10 | TABLE={name='scored_results'}, |
| 11 | to=5; |
| 12 | QUIT; |
Cet exemple plus détaillé montre comment scorer les données tout en conservant les variables d'origine (`copyVars`) et en générant les probabilités de prédiction pour chaque classe (`assessOneRow`). Cela est utile pour une analyse plus approfondie et pour évaluer la performance du modèle.
| 1 | PROC CAS; |
| 2 | loadactionset 'neuralNet'; |
| 3 | ACTION neuralNet.annScore / |
| 4 | TABLE={name='valid_data'}, |
| 5 | modelTable={name='my_ann_model'}, |
| 6 | copyVars={'Species', 'SepalLength', 'PetalLength'}, |
| 7 | assessOneRow=true, |
| 8 | casOut={name='scored_results_detailed', replace=true}; |
| 9 | |
| 10 | /* Afficher les 5 premières lignes des résultats détaillés */ |
| 11 | ACTION TABLE.fetch / |
| 12 | TABLE={name='scored_results_detailed'}, |
| 13 | to=5; |
| 14 | QUIT; |
L'auto-encodage est une technique où un réseau de neurones est utilisé pour apprendre une représentation compressée des données. En utilisant `listNode='HIDDEN'`, nous pouvons extraire les valeurs des neurones de la couche cachée. Ces valeurs peuvent ensuite être utilisées comme de nouvelles caractéristiques (features) de dimension réduite pour d'autres modèles.
| 1 | PROC CAS; |
| 2 | loadactionset 'neuralNet'; |
| 3 | /* Note: Un modèle d'auto-encodeur aurait été entraîné au préalable */ |
| 4 | /* Pour cet exemple, nous utilisons le même modèle mais illustrons le concept */ |
| 5 | ACTION neuralNet.annScore / |
| 6 | TABLE={name='valid_data'}, |
| 7 | modelTable={name='my_ann_model'}, |
| 8 | listNode='HIDDEN', |
| 9 | casOut={name='autoencoded_features', replace=true}; |
| 10 | |
| 11 | /* Afficher les 5 premières lignes des caractéristiques encodées */ |
| 12 | ACTION TABLE.fetch / |
| 13 | TABLE={name='autoencoded_features'}, |
| 14 | to=5; |
| 15 | QUIT; |