bart

Action CAS bartScore : Scoring par Arbres Bayésiens (BART)

bartScore

L'essentiel
L'essentiel
L'industrialisation des modèles prédictifs repose sur une phase d'inférence robuste, capable de transformer des apprentissages passés en prévisions concrètes. L'action bartScore assure cette transition critique en appliquant des modèles d'arbres de régression additifs bayésiens (BART) existants à de nouveaux flux de données. Au-delà d'une simple estimation, cet outil est indispensable pour les Data Engineers souhaitant récupérer des métriques détaillées, incluant les résidus et les intervalles de crédibilité, essentiels pour évaluer la fiabilité des scores en production. Cette page regroupe les réponses aux questions techniques les plus courantes pour vous aider à paramétrer efficacement vos tables de sortie et interpréter les statistiques générées.

Description

L'action `bartScore` est utilisée pour appliquer un modèle d'arbres de régression additifs bayésiens (BART) préalablement entraîné à un nouveau jeu de données afin de générer des prédictions (scoring). Elle charge un modèle sauvegardé et calcule les statistiques de sortie pour chaque observation dans la table de scoring, telles que les valeurs prédites, les résidus, et les intervalles de crédibilité.

bart.bartScore { alpha=double, avgOnly=TRUE | FALSE, casOut={...}, copyVars={...}, into="string", intoCutpt=double, lcl="string", pred="string", resid="string", restore={...}, seed=64-bit-integer, table={...}, ucl="string" };
Paramètres
ParamètreDescription
alpha Spécifie le niveau de significativité pour la construction des intervalles de crédibilité. La valeur par défaut est 0.05.
avgOnly Si défini sur FALSE, les prédictions de chaque échantillon MCMC sont incluses dans la table de sortie, en plus de la moyenne des prédictions. Par défaut, il est défini sur TRUE, ce qui ne sort que la moyenne.
casOut Spécifie la table de sortie CAS pour stocker les résultats du scoring. Ce paramètre est obligatoire.
copyVars Spécifie une liste de variables à copier de la table d'entrée vers la table de sortie `casOut`.
into Spécifie le nom de la variable qui contiendra la décision de classification binaire, basée sur le seuil `intoCutpt`.
intoCutpt Spécifie le seuil de probabilité pour la classification. La valeur par défaut est 0.5.
lcl Spécifie le nom de la variable pour la limite de crédibilité inférieure de la prédiction.
pred Spécifie le nom de la variable pour la valeur prédite moyenne. Par défaut, le nom est '_SAMP_MEAN_'.
resid Spécifie le nom de la variable pour le résidu (différence entre la valeur réelle et la valeur prédite).
restore Spécifie la table CAS contenant le modèle BART entraîné à utiliser pour le scoring. Ce paramètre est obligatoire.
seed Spécifie la graine (seed) pour le générateur de nombres pseudo-aléatoires, assurant la reproductibilité des résultats. La valeur par défaut est 0, ce qui génère une graine aléatoire.
table Spécifie la table de données d'entrée à scorer. Ce paramètre est obligatoire.
ucl Spécifie le nom de la variable pour la limite de crédibilité supérieure de la prédiction.
Préparation des Données Voir la fiche de ce code dataprep
Création des jeux de données d'entraînement et de scoring

Ce code crée deux tables CAS. `mycas.cars_train` est utilisée pour entraîner un modèle BART, et `mycas.cars_score` est utilisée pour appliquer ce modèle et générer des prédictions. Le modèle sera sauvegardé dans `mycas.bart_model`.

Copié !
1DATA mycas.cars_train; SET sashelp.cars; keep Make Model Type Origin DriveTrain MSRP Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway Weight Wheelbase LENGTH; RUN;
2DATA mycas.cars_score; SET sashelp.cars; IF mod(_n_, 5) = 0; keep Make Model Type Origin DriveTrain MSRP Invoice EngineSize Cylinders Horsepower MPG_City MPG_Highway Weight Wheelbase LENGTH; RUN;
3PROC CAS;
4 bart.bartGauss TABLE={name='cars_train'},
5 model={depVars={{name='MSRP'}}, effects={{vars={'Type', 'Origin', 'DriveTrain', 'EngineSize', 'Cylinders', 'Horsepower', 'MPG_City', 'Weight'}}}},
6 store={name='bart_model', replace=true};
7RUN;
8QUIT;

Exemples

Cet exemple utilise le modèle BART (`bart_model`) précédemment entraîné pour scorer les données de la table `cars_score`. La table de sortie `cars_scored_simple` contiendra les prédictions moyennes.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3bart.bartScore TABLE={name='cars_score'}, restore={name='bart_model'}, casOut={name='cars_scored_simple', replace=true};
4 
5RUN;
6 
7QUIT;
8 
Résultat :
Une table CAS nommée `cars_scored_simple` est créée. Elle contient les observations de `cars_score` avec une nouvelle colonne `_SAMP_MEAN_` représentant la prédiction du MSRP pour chaque véhicule.

Cet exemple plus complet effectue un scoring et génère des statistiques supplémentaires : les limites de crédibilité inférieure (LCL) et supérieure (UCL) à 90% (alpha=0.1), la valeur prédite, et le résidu. Il copie également les variables `Make`, `Model` et `MSRP` de la table d'entrée vers la table de sortie pour faciliter la comparaison.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1 
2PROC CAS;
3bart.bartScore TABLE={name='cars_score'}, restore={name='bart_model'}, alpha=0.1, copyVars={'Make', 'Model', 'MSRP'}, pred='Predicted_MSRP', lcl='LCL_MSRP', ucl='UCL_MSRP', resid='Residual', casOut={name='cars_scored_detailed', replace=true};
4 
5RUN;
6 
7QUIT;
8 
Résultat :
Une table CAS nommée `cars_scored_detailed` est créée. Elle contient les colonnes `Make`, `Model`, `MSRP` (de la table originale), ainsi que les nouvelles colonnes `Predicted_MSRP`, `LCL_MSRP`, `UCL_MSRP`, et `Residual`.

Après avoir entraîné un modèle de classification avec `bartProbit`, cet exemple montre comment scorer de nouvelles données. Il génère la probabilité prédite et une variable de classification `Into_HighMSRP` basée sur un seuil de 0.4.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 /* Étape 1: Entraîner un modèle de classification binaire */
3 bart.bartProbit TABLE={name='cars_train', where='MSRP is not null'},
4 model={depVars={{name='MSRP', event='1'}}, effects={{vars={'Type', 'Origin', 'DriveTrain', 'EngineSize', 'Horsepower'}}}},
5 class={'Type', 'Origin', 'DriveTrain'},
6 event='1', /* L'événement est 'MSRP élevé' */
7 responseLevelOrder='ASC',
8 store={name='bart_probit_model', replace=true};
9 /* Étape 2: Scorer avec le modèle de classification */
10 bart.bartScore TABLE={name='cars_score'},
11 restore={name='bart_probit_model'},
12 pred='Prob_HighMSRP',
13 into='Into_HighMSRP',
14 intoCutpt=0.4,
15 copyVars={'Make', 'Model', 'MSRP'},
16 casOut={name='cars_scored_probit', replace=true};
17RUN;
18QUIT;
Résultat :
Une table CAS `cars_scored_probit` est créée. Elle inclut les colonnes originales copiées, la probabilité prédite d'avoir un MSRP élevé (`Prob_HighMSRP`), et une colonne de décision (`Into_HighMSRP`) qui vaut 1 si la probabilité est supérieure à 0.4, et 0 sinon.

FAQ

Quel est l'objectif de l'action bartScore ?
Quels sont les paramètres obligatoires pour l'action bartScore ?
Comment puis-je enregistrer les valeurs prédites et les résidus ?
Est-il possible d'obtenir les limites de crédibilité pour les prédictions ?
Comment inclure des variables de la table d'entrée dans la table de sortie ?

Scénarios associés

Cas d'usage
Scoring de l'appétence client pour une offre marketing (Classification)

Une banque souhaite lancer une nouvelle campagne pour un produit d'investissement. Elle a entraîné un modèle BART (bartProbit) sur des données de campagnes précédentes pour préd...

Cas d'usage
Scoring de masse de capteurs IoT pour la maintenance prédictive (Volumétrie)

Un industriel a déployé des milliers de capteurs sur sa chaîne de production. Un modèle BART a été entraîné pour prédire la durée de vie restante (en heures) d'un composant. Ce ...

Cas d'usage
Gestion des données manquantes lors du scoring de risque de crédit (Cas Limite)

Un organisme de crédit évalue le score de risque d'un demandeur de prêt. Les données d'entrée sont souvent incomplètes (revenu non déclaré, etc.). Ce scénario teste la robustess...