mtsScore
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) !
Paramètres Clés
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).
| 1 | PROC CASUTIL; |
| 2 | load DATA=sashelp.cars casout="cars" outcaslib="casuser" replace; |
| 3 | RUN; |
| 4 | PROC 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}; |
| 14 | RUN; |
| 15 | QUIT; |
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 !
| 1 | PROC 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; |
| 10 | RUN; |
| 11 | QUIT; |
Résultat Attendu :
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.
| 1 | PROC 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"}}; |
| 12 | RUN; |
| 13 | QUIT; |