mts

mtsScore

##set_mts

Description

L'action `mtsScore` permet d'appliquer le Système Mahalanobis-TaguchiGemini said

Méthode de diagnostic multicritère utilisant une distance statistique pour identifier des anomalies et sélectionner les variables clés afin de distinguer les groupes normaux des anormaux.
(MTS) sur de nouvelles données pour les scorerAction d'appliquer un modèle statistique à de nouvelles données pour calculer une probabilité ou une valeur prédite. C’est l’étape de déploiement transformant les entrées en prédictions actionnables., surveiller votre processus et détecter des anomalies. C'est l'outil parfait pour voir ce qui sort de la norme (avec une petite pincée de distance de Mahalanobis pour pimenter l'analyse) !

Syntaxe Officielle
proc cas;
mts.mtsScore /
cov={name="nom_table_covariance"}
data={name="table_a_scorer"}
mean={name="nom_table_moyennes"}
model={name="nom_table_modele"}
outData={name="table_sortie", replace=true}
scoreInfo={name="nom_table_infos_score"}
stat={name="table_statistiques", replace=true}
threshold=0.0;
run;
quit;

Paramètres Clés

Nom du paramètre Description
data Spécifie la table de données d'entrée à scorer avec le modèle MTS. (Paramètre requis)
cov Table contenant la matrice de covariance issue de la phase d'entraînement préalable (`mtsTrain`).
mean Table contenant les moyennes des variables calculées lors de l'entraînement MTS.
model Table contenant le modèle analytique (Astore) généré lors de l'entraînement MTS.
scoreInfo Table contenant les informations de scoring produites par l'entraînement MTS.
outData Table CAS de sortie dans laquelle seront stockées les distances de Mahalanobis (classique et normalisée) ainsi que le drapeau (flag) d'anomalie.
stat Table de sortie optionnelle permettant de stocker les statistiques globales du scoring.
threshold Seuil de distance de Mahalanobis utilisé pour déterminer et flaguer les valeurs aberrantes (outliers) lors du monitoring. Valeur par défaut : 0.
display Permet de spécifier et filtrer les tables de résultats à envoyer au client pour l'affichage ODS.
outputTables Permet d'enregistrer directement les tables de résultats ODS sous forme de tables CAS en mémoire. Alias: displayOut.

Préparation des données

Préparation des données et du modèle MTS

L'action `mtsScore` ayant impérativement besoin d'objets créés par l'action `mtsTrain`, ce code initialise une table en mémoire à partir du fameux jeu de données SASHELP.CARS, puis lance un entraînement rapide pour générer les matrices requises (modèle, moyennes, covariance).

1PROC CASUTIL;
2 load DATA=sashelp.cars casout="cars" outcaslib="casuser" replace;
3RUN;
4PROC CAS;
5 /* Entraînement préalable pour générer les tables requises par l'action mtsScore */
6 mts.mtsTrain /
7 DATA={name="cars", caslib="casuser"}
8 inputs={"EngineSize", "Cylinders", "Horsepower", "MPG_City"}
9 outCov={name="cars_cov", replace=true}
10 outMean={name="cars_mean", replace=true}
11 outModel={name="cars_model", replace=true}
12 outScoreInfo={name="cars_scoreinfo", replace=true}
13 outStat={name="cars_train_stat", replace=true};
14RUN;
15QUIT;

Exemples d'utilisation

Scoring de base avec un seuil d'anomalie

On évalue nos véhicules pour détecter les comportements atypiques en fixant un seuil (`threshold`) de distance à 3.0. Faisons la chasse aux extravagances moteur !

1PROC CAS;
2 mts.mtsScore /
3 DATA={name="cars", caslib="casuser"}
4 cov={name="cars_cov"}
5 mean={name="cars_mean"}
6 model={name="cars_model"}
7 scoreInfo={name="cars_scoreinfo"}
8 outData={name="cars_scored", replace=true}
9 threshold=3.0;
10RUN;
11QUIT;
Résultat Attendu :
L'action génère en mémoire une table `cars_scored` contenant les distances de Mahalanobis calculées et une colonne binaire ciblant (flag = 1) chaque véhicule qui dépasse le seuil fixé à 3.0.
Scoring complet avec statistiques et extraction dynamique de tables

Dans ce scénario plus avancé, on score avec un seuil affiné à 2.5, on sauvegarde les statistiques globales dans une table dédiée (`cars_score_stats`), et on utilise `outputTables` pour extraire automatiquement les objets affichés (comme ScoreSummary) en tant que véritables tables CAS manipulables.

1PROC CAS;
2 mts.mtsScore /
3 DATA={name="cars", caslib="casuser"}
4 cov={name="cars_cov"}
5 mean={name="cars_mean"}
6 model={name="cars_model"}
7 scoreInfo={name="cars_scoreinfo"}
8 outData={name="cars_scored_detailed", replace=true}
9 stat={name="cars_score_stats", replace=true}
10 threshold=2.5
11 outputTables={names={"ScoreSummary", "ScoreInfo"}};
12RUN;
13QUIT;
Résultat Attendu :
En plus de la table scorée `cars_scored_detailed`, cette exécution génère la table de statistiques `cars_score_stats`. De plus, elle convertit les affichages virtuels 'ScoreSummary' et 'ScoreInfo' en tables physiques en mémoire CAS.