bart bartGauss

Scénario Standard : Prédiction de la Dépense Client Post-Campagne

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise de retail souhaite évaluer l'impact d'une nouvelle campagne marketing. L'objectif est de prédire la dépense totale d'un client dans les 3 mois suivant la campagne, en se basant sur son profil démographique et son historique d'achat. Le modèle permettra d'identifier les profils les plus réceptifs et d'optimiser les futures campagnes.
À propos du Set : bart

Modèles d'arbres de régression additive bayésienne.

Découvrir toutes les actions de bart
Préparation des Données

Création d'une table de clients avec des données démographiques, un historique d'achat, et la dépense post-campagne. La table est partitionnée pour l'entraînement et le test.

Copié !
1DATA mycas.clients_campagne;
2 call streaminit(2024);
3 DO i = 1 to 5000;
4 age = 20 + floor(rand('UNIFORM') * 50);
5 categorie_socio = byte(65 + floor(rand('UNIFORM')*4)); /* A, B, C, D */
6 nb_achats_prec = floor(rand('UNIFORM')*20);
7 depense_moy_prec = 50 + rand('NORMAL', 0, 15);
8 a_repondu_pub = rand('BERNOULLI', 0.4);
9 /* La dépense est une fonction non-linéaire des autres variables + bruit */
10 depense_post_campagne = 100 + (a_repondu_pub * 50) + (age/10 * 5) + (nb_achats_prec * 2) + (depense_moy_prec * 1.5) + rand('NORMAL', 0, 25);
11 IF depense_post_campagne < 0 THEN depense_post_campagne = 0;
12 OUTPUT;
13 END;
14RUN;

Étapes de réalisation

1
Chargement et exploration initiale des données pour vérifier leur distribution.
Copié !
1PROC CAS;
2 TABLE.fetch / TABLE={name='clients_campagne'}, to=5;
3 SIMPLE.summary / TABLE={name='clients_campagne'};
4RUN;
2
Exécution de bartGauss avec partitionnement des données (80/20), définition des priors, et stockage du modèle pour scoring ultérieur.
Copié !
1PROC CAS;
2 bart.bartGauss /
3 TABLE={name='clients_campagne'},
4 model={depVars={{name='depense_post_campagne'}}, effects={{vars={'age', 'categorie_socio', 'nb_achats_prec', 'depense_moy_prec', 'a_repondu_pub'}}}},
5 class={{vars={'categorie_socio'}}},
6 partByFrac={test=0.2, seed=123},
7 nTree=50,
8 nBI=1000,
9 nMC=5000,
10 OUTPUT={casOut={name='predictions_clients', replace=true}, pred='P_depense', resid='R_depense'},
11 store={name='modele_bart_marketing', replace=true};
12RUN;
3
Vérification de la création de la table de prédictions et de l'objet de stockage du modèle.
Copié !
1PROC CAS;
2 TABLE.tableInfo / caslib='casuser';
3 TABLE.fetch / TABLE={name='predictions_clients'}, to=10;
4RUN;

Résultat Attendu


L'action doit s'exécuter sans erreur. Une table 'predictions_clients' doit être créée, contenant les colonnes originales plus 'P_depense' et 'R_depense'. Un itemstore nommé 'modele_bart_marketing' doit exister dans la caslib de l'utilisateur, prêt pour le scoring. Les logs doivent montrer que les données ont été partitionnées et que le modèle a été entraîné sur l'ensemble d'entraînement et évalué sur l'ensemble de test.