bart

bartScoreMargin

L'essentiel
L'essentiel
L'explicabilité des modèles complexes, souvent qualifiés de "boîtes noires", est un enjeu crucial pour la validation réglementaire et l'adoption métier. L'action bartScoreMargin joue un rôle déterminant dans cette démarche en permettant aux Data Scientists de calculer des marges prédictives sur des modèles BART ajustés. En fixant arbitrairement certaines variables tout en conservant la distribution observée des autres covariables, cette fonctionnalité permet d'isoler et de quantifier l'effet marginal moyen d'un prédicteur spécifique. Cette page recense les questions techniques fréquentes pour vous aider à configurer ces analyses de sensibilité et à interpréter correctement les variations de prédictions.

Description

Calcule les marges prédictives en utilisant un modèle ajusté d'arbres de régression additifs bayésiens (BART). Cette action est particulièrement utile pour interpréter les modèles en évaluant l'effet moyen d'une ou plusieurs variables sur la prédiction, tout en maintenant les autres variables à leurs valeurs observées.

bart.bartScoreMargin { alpha=double, casOut={caslib='string', compress=TRUE|FALSE, indexVars={'variable-name-1' <, 'variable-name-2', ...>}, label='string', lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat='DVR'|'INHERIT'|'STANDARD', name='table-name', promote=TRUE|FALSE, replace=TRUE|FALSE, replication=integer, tableRedistUpPolicy='DEFER'|'NOREDIST'|'REBALANCE', threadBlockSize=64-bit-integer, timeStamp='string', where={'string-1' <, 'string-2', ...>}}, differences={{evtMargin='string', label='string', name='string', refMargin='string'}, {...}}, display={caseSensitive=TRUE|FALSE, exclude=TRUE|FALSE, excludeAll=TRUE|FALSE, keyIsPath=TRUE|FALSE, names={'string-1' <, 'string-2', ...>}, pathType='LABEL'|'NAME', traceNames=TRUE|FALSE}, marginInfo=TRUE|FALSE, margins={{at={{value='string'|double, var='string'}, {...}}, label='string', name='string'}, {...}}, model={caslib='string', dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, name='table-name', whereTable={casLib='string', dataSourceOptions={...}, importOptions={...}, name='table-name', vars={{...}}, where='where-expression'}}, outputTables={groupByVarsRaw=TRUE|FALSE, includeAll=TRUE|FALSE, names={'string-1' <, 'string-2', ...>}|{key-1={casouttable-1} <, key-2={casouttable-2}, ...>}, repeated=TRUE|FALSE, replace=TRUE|FALSE}, seed=64-bit-integer, table={caslib='string', computedOnDemand=TRUE|FALSE, computedVars={{...}}, computedVarsProgram='string', dataSourceOptions={...}, groupBy={{...}}, groupByMode='NOSORT'|'REDISTRIBUTE', importOptions={...}, name='table-name', orderBy={{...}}, singlePass=TRUE|FALSE, vars={{...}}, where='where-expression', whereTable={...}} };
Paramètres
ParamètreDescription
alpha Spécifie le niveau de significativité pour la construction de tous les intervalles de crédibilité à queues égales.
casOut Spécifie les paramètres pour une table de sortie.
differences Spécifie les différences de marges prédictives à calculer.
display Spécifie une liste de tables de résultats à envoyer au client pour affichage.
marginInfo Demande une table résumant les variables qui définissent la marge prédictive et les valeurs auxquelles elles sont fixées.
margins Spécifie une ou plusieurs marges prédictives à calculer.
model Spécifie la table de modèle binaire issue d'un ajustement de modèle BART précédent.
outputTables Liste les noms des tables de résultats à sauvegarder en tant que tables CAS sur le serveur.
seed Spécifie la graine pour le générateur de nombres pseudo-aléatoires.
table Spécifie la table de données d'entrée pour le scoring.
Préparation des Données Voir la fiche de ce code dataprep
Création des données de démonstration

Ce bloc de code crée une table CAS nommée `sim_data` qui sera utilisée dans les exemples. La table contient une variable de réponse `y`, deux variables prédictives continues (`x1`, `x2`) et une variable catégorielle `c1`. Ces données simulées permettent d'illustrer comment ajuster un modèle BART et ensuite calculer les marges prédictives.

Copié !
1DATA casuser.sim_data;
2 call streaminit(123);
3 DO i = 1 to 100;
4 x1 = rand('UNIFORM');
5 x2 = rand('UNIFORM');
6 IF rand('UNIFORM') < 0.5 THEN c1 = 'A';
7 ELSE c1 = 'B';
8 y = 10 * sin(3.14 * x1 * x2) + 20 * (x2 - 0.5)**2 + 10 * (c1='A') + rand('NORMAL');
9 OUTPUT;
10 END;
11RUN;

Exemples

Cet exemple montre comment calculer une marge prédictive simple après avoir ajusté un modèle `bartGauss`. Nous calculons la prédiction moyenne lorsque la variable `x1` est fixée à 0.5.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 LOADACTIONSET 'bart';
3 
4 /* Ajuster un modèle BART */
5 bart.bartGauss TABLE='sim_data',
6 model={depvar='y', effects={'x1', 'x2', 'c1'}},
7 store={name='bart_model', replace=true};
8 RUN;
9 
10 /* Calculer la marge prédictive */
11 bart.bartScoreMargin TABLE='sim_data',
12 model='bart_model',
13 margins={{name='margin_x1_05', at={{var='x1', value=0.5}}}};
14 RUN;
15QUIT;
Résultat :
La sortie inclura une table 'PredMargins' contenant la moyenne prédictive, l'écart-type, et les limites de crédibilité pour le scénario où x1 est fixé à 0.5.

Cet exemple plus détaillé illustre comment définir plusieurs scénarios de marge, calculer leurs prédictions, puis calculer la différence entre ces marges. Nous créons deux scénarios : un où `c1` est 'A' et un autre où `c1` est 'B'. Ensuite, nous calculons la différence entre ces deux marges pour évaluer l'effet de la variable `c1`.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 LOADACTIONSET 'bart';
3 
4 /* Ajuster un modèle BART */
5 bart.bartGauss TABLE='sim_data',
6 model={depvar='y', effects={'x1', 'x2', 'c1'}},
7 store={name='bart_model_detailed', replace=true};
8 RUN;
9 
10 /* Calculer plusieurs marges et leurs différences */
11 bart.bartScoreMargin TABLE='sim_data',
12 model='bart_model_detailed',
13 margins={
14 {name='margin_c1_A', label='Catégorie A', at={{var='c1', value='A'}}},
15 {name='margin_c1_B', label='Catégorie B', at={{var='c1', value='B'}}}
16 },
17 differences={
18 {name='diff_A_vs_B', label='Effet de A vs B', evtMargin='margin_c1_A', refMargin='margin_c1_B'}
19 },
20 casOut={name='predictive_margins_output', replace=true},
21 marginInfo=true;
22 RUN;
23QUIT;
Résultat :
Les résultats contiendront plusieurs tables : 'MarginInfo' décrivant les scénarios, 'PredMargins' avec les résultats pour chaque marge, 'Diffs' montrant la différence calculée entre les marges, et une table de sortie 'predictive_margins_output' dans la caslib active contenant les résultats complets.

FAQ

Quel est l'objectif de l'action bart.bartScoreMargin ?
Comment spécifier le modèle BART ajusté à utiliser pour le calcul des marges ?
Quel paramètre est utilisé pour définir les scénarios de marges prédictives à calculer ?
Comment peut-on calculer la différence entre deux marges prédictives ?
À quoi sert le paramètre `alpha` ?
Comment sauvegarder les résultats des marges calculées dans une table CAS ?
Quelle est la fonction principale de l'action bart.bartScoreMargin dans SAS Viya?
Comment spécifier le modèle BART à utiliser pour le calcul des marges prédictives?
À quoi sert le paramètre `margins` et comment est-il structuré?
Peut-on calculer la différence entre deux marges prédictives?
Que contrôle le paramètre `alpha`?
Comment obtenir une table résumant les variables définissant les marges prédictives?
Quel est l'objectif de l'action `bartScoreMargin` ?
Quels sont les paramètres obligatoires pour utiliser `bartScoreMargin` ?
Comment définir un scénario pour calculer une marge prédictive ?
Peut-on comparer différentes marges prédictives ?
Qu'est-ce que le paramètre `alpha` contrôle ?

Scénarios associés

Cas d'usage
Analyse de l'impact d'une campagne publicitaire sur la valeur d'achat client

Une entreprise de e-commerce souhaite mesurer l'efficacité d'une nouvelle campagne publicitaire ciblée. L'objectif est de quantifier l'augmentation (uplift) de la valeur d'achat...

Cas d'usage
Scoring à grande échelle de l'efficacité d'un traitement médical

Une organisation de recherche clinique analyse les données d'un essai à grande échelle (500 000 patients). Elle doit évaluer l'effet de différentes doses d'un nouveau médicament...

Cas d'usage
Robustesse du scoring face à des données de capteurs manquantes en maintenance prédictive

Un fabricant industriel utilise des modèles pour prédire le risque de défaillance de ses équipements à partir de données de capteurs. Cependant, les données réelles sont souvent...