?> annScore - WeAreCAS
neuralNet

annScore

Description

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.

neuralNet.annScore { assess=VRAI | FAUX, assessOneRow=VRAI | FAUX, casOut={caslib='string', compress=VRAI | FAUX, indexVars={'variable-name-1' <, 'variable-name-2', ...>}, label='string', lifetime=entier-64-bits, maxMemSize=entier-64-bits, memoryFormat='DVR' | 'INHERIT' | 'STANDARD', name='table-name', promote=VRAI | FAUX, replace=VRAI | FAUX, replication=entier, tableRedistUpPolicy='DEFER' | 'NOREDIST' | 'REBALANCE', threadBlockSize=entier-64-bits, timeStamp='string', where={'string-1' <, 'string-2', ...>}}, copyVars={'variable-name-1' <, 'variable-name-2', ...>}, impute=VRAI | FAUX, includeMissing=VRAI | FAUX, listNode='ALL' | 'HIDDEN' | 'INPUT' | 'OUTPUT', modelId='string', modelTable={caslib='string', computedOnDemand=VRAI | FAUX, computedVars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, computedVarsProgram='string', dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, importOptions={fileType='ANY' | 'AUDIO' | 'AUTO' | 'BASESAS' | 'CSV' | 'DELIMITED' | 'DOCUMENT' | 'DTA' | 'ESP' | 'EXCEL' | 'FMT' | 'HDAT' | 'IMAGE' | 'JMP' | 'LASR' | 'PARQUET' | 'SOUND' | 'SPSS' | 'VIDEO' | 'XLS', fileType-specific-parameters}, name='table-name', singlePass=VRAI | FAUX, vars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, where='where-expression', whereTable={casLib='string', dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | hadoop-parameters | hana-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType='ANY' | 'AUDIO' | 'AUTO' | 'BASESAS' | 'CSV' | 'DELIMITED' | 'DOCUMENT' | 'DTA' | 'ESP' | 'EXCEL' | 'FMT' | 'HDAT' | 'IMAGE' | 'JMP' | 'LASR' | 'PARQUET' | 'SOUND' | 'SPSS' | 'VIDEO' | 'XLS', fileType-specific-parameters}, name='table-name', vars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, where='where-expression'}}, table={caslib='string', computedOnDemand=VRAI | FAUX, computedVars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, computedVarsProgram='string', dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, importOptions={fileType='ANY' | 'AUDIO' | 'AUTO' | 'BASESAS' | 'CSV' | 'DELIMITED' | 'DOCUMENT' | 'DTA' | 'ESP' | 'EXCEL' | 'FMT' | 'HDAT' | 'IMAGE' | 'JMP' | 'LASR' | 'PARQUET' | 'SOUND' | 'SPSS' | 'VIDEO' | 'XLS', fileType-specific-parameters}, name='table-name', singlePass=VRAI | FAUX, vars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, where='where-expression', whereTable={casLib='string', dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | hadoop-parameters | hana-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType='ANY' | 'AUDIO' | 'AUTO' | 'BASESAS' | 'CSV' | 'DELIMITED' | 'DOCUMENT' | 'DTA' | 'ESP' | 'EXCEL' | 'FMT' | 'HDAT' | 'IMAGE' | 'JMP' | 'LASR' | 'PARQUET' | 'SOUND' | 'SPSS' | 'VIDEO' | 'XLS', fileType-specific-parameters}, name='table-name', vars={{format='string', formattedLength=entier, label='string', name='variable-name', nfd=entier, nfl=entier}, {...}}, where='where-expression'}}, target='variable-name' };
Paramètres
ParamètreDescription
assessLorsque 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`.
assessOneRowLorsque 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`.
casOutSpécifie la table de sortie pour stocker les résultats du scoring.
copyVarsSpécifie les variables à transférer de la table d'entrée vers la table de sortie.
imputeLorsque 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.
includeMissingPar 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.
listNodeSpé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.
modelIdSpé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.
modelTableSpécifie la table qui contient le modèle de réseau de neurones artificiels à utiliser pour le scoring.
tableSpécifie la table d'entrée à scorer.
targetSpé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.
Préparation des Données
Création des Données et Entraînement d'un Modèle

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`.

1PROC 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};
28QUIT;

Exemples

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`.

Code SAS® / CAS
Copié !
1PROC 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;
12QUIT;
Résultat :
Une table de résultats contenant les prédictions du modèle pour chaque observation de la table `valid_data`. La colonne de prédiction par défaut sera nommée `_NN_PredName_`.

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.

Code SAS® / CAS
Copié !
1PROC 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;
14QUIT;
Résultat :
La table de sortie `scored_results_detailed` contiendra les variables originales `Species`, `SepalLength`, `PetalLength`, la prédiction `_NN_PredName_`, ainsi que des colonnes supplémentaires pour les probabilités de chaque classe (par exemple, `_NN_P_Setosa`, `_NN_P_Versicolor`, `_NN_P_Virginica`).

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.

Code SAS® / CAS
Copié !
1PROC 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;
15QUIT;
Résultat :
Une table `autoencoded_features` contenant les activations des 50 neurones de la première couche cachée et des 20 neurones de la seconde, pour chaque observation. Ces colonnes peuvent être utilisées comme un nouvel ensemble de données de dimension réduite.

FAQ

À quoi sert l'action annScore ?
Que fait le paramètre `assess` ?
Quel est le but du paramètre `assessOneRow` ?
Comment spécifier la table de sortie avec `casOut` ?
À quoi sert le paramètre `copyVars` ?
Que fait le paramètre `impute` ?
Comment le paramètre `includeMissing` affecte-t-il les données ?
À quoi sert le paramètre `listNode` ?
Que spécifie le paramètre `modelId` ?
Quel est le rôle du paramètre `modelTable` ?
Que spécifie le paramètre `table` ?
Quand utiliser le paramètre `target` ?