bart

bartProbit

L'essentiel
L'essentiel
La classification binaire précise est un enjeu majeur pour les modèles de risque ou de ciblage marketing. L'action bartProbit permet aux Data Scientists d'appliquer la puissance des arbres de régression additifs bayésiens à des variables réponses dichotomiques (0 ou 1). En utilisant une fonction de lien Probit, cette méthode excelle à modéliser des probabilités d'événements complexes sans subir les contraintes de linéarité classiques. Pour vous accompagner dans l'ajustement de ces modèles et l'interprétation des chaînes MCMC, nous avons rassemblé ici les questions techniques et méthodologiques les plus pertinentes.

Description

Ajuste des modèles d'arbres de régression additifs bayésiens (BART) probit à des données de réponse distribuées de manière binaire.

bart.bartProbit <result=results> <status=rc> / alpha=double, applyRowOrder=TRUE | FALSE, attributes={{casinvardesc-1} <, {casinvardesc-2}, ...>}, class={{classStatement-1} <, {classStatement-2}, ...>}, differences={{bartScoreMargin_scoreDiff-1} <, {bartScoreMargin_scoreDiff-2}, ...>}, display={displayTables}, distributeChains=integer, freq="variable-name", inputs={{casinvardesc-1} <, {casinvardesc-2}, ...>}, leafSigmaK=double, margins={{bartScoreMargin_evaluate-1} <, {bartScoreMargin_evaluate-2}, ...>}, maxTrainTime=double, minLeafSize=integer, missing="MACBIG" | "MACSMALL" | "NONE" | "SEPARATE", model={bartProbitModel}, nBI=integer, nBins=integer, nClassLevelsPrint=integer, nMC=integer, nominals={{casinvardesc-1} <, {casinvardesc-2}, ...>}, nThin=integer, nTree=integer, obsLeafMapInMem=TRUE | FALSE, offset="variable-name", orderSplit=integer, output={bartBinOutputStatement}, outputMargins={casouttable}, outputTables={outputTables}, partByFrac={partByFracStatement}, partByVar={partByVarStatement}, quantileBin=TRUE | FALSE, sampleSummary={bartProbit_sampleSummary}, seed=64-bit-integer, store={casouttablebasic}, table={castable}, target="variable-name", trainInMem=TRUE | FALSE, treePrior={bart_treePrior} ;
Paramètres
ParamètreDescription
alpha Spécifie le niveau de significativité à utiliser pour construire les limites de crédibilité à queues égales pour les marges prédictives.
applyRowOrder Indique si l'ordre des lignes doit être appliqué.
attributes Modifie les attributs des variables utilisées dans l'action.
class Nomme les variables de classification à utiliser comme variables explicatives dans l'analyse.
differences Spécifie les différences des marges prédictives.
display Spécifie une liste de tables de résultats à envoyer au client pour affichage.
distributeChains Spécifie un mode distribué qui divise l'échantillonnage MCMC dans un environnement de grille.
freq Nomme la variable numérique qui contient la fréquence d'occurrence pour chaque observation.
inputs Spécifie les variables d'entrée à utiliser dans l'analyse.
leafSigmaK Spécifie la valeur utilisée pour déterminer la variance a priori pour le paramètre de feuille.
margins Spécifie une marge prédictive.
maxTrainTime Spécifie une limite supérieure (en secondes) sur le temps pour l'échantillonnage MCMC.
minLeafSize Spécifie le nombre minimum d'observations que chaque enfant d'une division doit contenir dans les données d'entraînement pour que la division soit considérée.
missing Spécifie comment gérer les valeurs manquantes dans les variables prédictives.
model Nomme la variable dépendante et les effets explicatifs.
nBI Spécifie le nombre d'itérations de burn-in à effectuer avant que l'action ne commence à sauvegarder les échantillons pour la prédiction.
nBins Spécifie le nombre de classes à utiliser pour la discrétisation des variables d'entrée continues.
nClassLevelsPrint Limite l'affichage des niveaux de classe. La valeur 0 supprime tous les niveaux.
nMC Spécifie le nombre d'itérations MCMC, à l'exclusion des itérations de burn-in.
nominals Spécifie les variables d'entrée nominales à utiliser dans l'analyse.
nThin Spécifie le taux d'amincissement (thinning) de la simulation.
nTree Spécifie le nombre d'arbres dans un échantillon de l'ensemble de somme d'arbres.
obsLeafMapInMem Lorsque défini sur True, stocke en mémoire une correspondance de chaque observation aux nœuds terminaux lorsque le modèle est entraîné.
offset Spécifie une variable d'offset numérique.
orderSplit Spécifie la cardinalité minimale pour laquelle une entrée catégorielle utilise des règles de division selon l'ordre des niveaux.
output Crée une table sur le serveur qui contient des statistiques par observation, calculées après l'ajustement du modèle.
outputMargins Spécifie la table de sortie pour les marges prédictives.
outputTables Liste les noms des tables de résultats à sauvegarder comme tables CAS sur le serveur.
partByFrac Spécifie la fraction des données à utiliser pour les tests.
partByVar Nomme la variable et ses valeurs utilisées pour partitionner les données en rôles d'entraînement et de test.
quantileBin Lorsque défini sur True, spécifie que les limites des classes sont définies aux quantiles des entrées numériques au lieu de classes de largeur égale.
sampleSummary Crée une table sur le serveur qui contient un résumé des échantillons de l'ensemble de somme d'arbres.
seed Spécifie une graine pour démarrer le générateur de nombres pseudo-aléatoires.
store Stocke le modèle dans un objet de table binaire que vous pouvez utiliser pour le scoring.
table Spécifie la table de données d'entrée.
target Spécifie la variable cible.
trainInMem Lorsque défini sur True, stocke les données en mémoire lorsque le modèle est entraîné.
treePrior Spécifie le prieur de régularisation pour l'ensemble de somme d'arbres.
Préparation des Données Voir la fiche de ce code dataprep
Création de Données pour le Modèle Probit

Ce bloc de code SAS crée une table CAS nommée 'CreditData_fr'. Il génère des données simulées sur le crédit client, incluant une variable cible binaire 'Default' (0 pour non-défaut, 1 pour défaut) et plusieurs variables prédictives comme l'âge, le revenu, le montant du prêt et la catégorie de client. Ces données sont idéales pour illustrer l'utilisation d'un modèle probit pour prédire la probabilité de défaut de paiement.

Copié !
1DATA casuser.CreditData_fr;
2 call streaminit(123);
3 DO i = 1 to 1000;
4 Age = 20 + floor(rand('Uniform') * 50);
5 Income = 30000 + floor(rand('Uniform') * 70000);
6 LoanAmount = 5000 + floor(rand('Uniform') * 45000);
7 IF rand('Uniform') < 0.6 THEN CustomerCategory = 'A';
8 ELSE IF rand('Uniform') < 0.85 THEN CustomerCategory = 'B';
9 ELSE CustomerCategory = 'C';
10
11 z = -2.5 + (Age / 20) - (Income / 50000) + (LoanAmount / 20000);
12 IF CustomerCategory = 'B' THEN z = z + 0.5;
13 IF CustomerCategory = 'C' THEN z = z + 1.0;
14
15 prob = cdf('Normal', z);
16 IF rand('Uniform') < prob THEN Default = 1;
17 ELSE Default = 0;
18
19 OUTPUT;
20 END;
21RUN;

Exemples

Cet exemple montre comment ajuster un modèle BART probit simple. Il utilise la table 'CreditData_fr', avec 'Default' comme variable cible et 'Age', 'Income' et 'LoanAmount' comme prédicteurs continus.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 bart.bartProbit TABLE={name='CreditData_fr'},
3 target='Default',
4 inputs={'Age', 'Income', 'LoanAmount'};
5RUN;
Résultat :
Le résultat affichera les informations sur le modèle, le résumé du traitement des observations, les hyperparamètres du modèle BART et les statistiques d'ajustement. Ces tables fournissent un aperçu complet du modèle ajusté et de sa performance initiale.

Cet exemple plus complexe ajuste un modèle BART probit en incluant une variable catégorielle ('CustomerCategory'). Il spécifie également des paramètres de modèle tels que le nombre d'arbres (nTree=100) et le nombre d'itérations de burn-in (nBI=500). De plus, il partitionne les données en utilisant 70% pour l'entraînement et 30% pour le test, et stocke le modèle ajusté dans une table CAS nommée 'bart_model_store' pour une utilisation ultérieure.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 bart.bartProbit TABLE={name='CreditData_fr'},
3 target='Default',
4 inputs={'Age', 'Income', 'LoanAmount', 'CustomerCategory'},
5 class={'CustomerCategory'},
6 nTree=100,
7 nBI=500,
8 seed=12345,
9 partByFrac={test=0.3, seed=54321},
10 store={name='bart_model_store', replace=true};
11RUN;
Résultat :
Les résultats incluront des informations détaillées sur le modèle, y compris les hyperparamètres spécifiés, les informations sur les niveaux des variables de classe, et les statistiques d'ajustement pour les ensembles de données d'entraînement et de test. Une table de résultats confirmera également que le modèle a été sauvegardé avec succès dans la table CAS 'bart_model_store'.

FAQ

À quoi sert l'action `bartProbit` ?
Quel type de données l'action `bartProbit` traite-t-elle ?
Que contrôle le paramètre `nTree` ?
Comment l'action `bartProbit` gère-t-elle les valeurs manquantes dans les prédicteurs ?
Quelle est l'utilité du paramètre `store` ?

Scénarios associés

Cas d'usage
Scénario Standard : Prédiction de la Réponse à une Campagne Marketing

Une entreprise de vente au détail souhaite optimiser ses campagnes marketing. L'objectif est de prédire la probabilité qu'un client réponde à une offre promotionnelle (achat ou ...

Cas d'usage
Scénario Performance : Analyse de Risque de Crédit sur un Grand Volume de Données

Une institution financière doit évaluer le risque de défaut de paiement pour un portefeuille de 200 000 prêts. Le temps de calcul est un facteur critique. Ce test vise à évaluer...

Cas d'usage
Scénario Cas Limite : Prédiction de Réadmission Hospitalière avec Données Manquantes

Un hôpital cherche à prédire la probabilité de réadmission d'un patient dans les 30 jours suivant sa sortie. Les dossiers des patients sont souvent incomplets, avec des valeurs ...