Scénario de test & Cas d'usage
Modèles d'arbres de régression additive bayésienne.
Découvrir toutes les actions de bartCréation d'une table d'entraînement `clients_train` avec des données clients et leur réponse (0/1) à une offre. Entraînement d'un modèle de classification `bartProbit` pour prédire la variable `souscription`. Création d'une table `clients_a_scorer` pour les nouveaux clients à évaluer.
| 1 | DATA clients_train; |
| 2 | call streaminit(123); |
| 3 | DO id_client = 1 to 2000; |
| 4 | age = 20 + rand('integer', 50); |
| 5 | revenu_annuel = 30000 + rand('integer', 70000); |
| 6 | nb_produits_detenus = 1 + rand('integer', 5); |
| 7 | anciennete_client = rand('integer', 20); |
| 8 | IF (revenu_annuel > 60000 and anciennete_client > 10) THEN souscription = 1; |
| 9 | ELSE IF (age < 30 and nb_produits_detenus < 2) THEN souscription = 1; |
| 10 | ELSE souscription = 0; |
| 11 | IF rand('uniform') < 0.2 THEN souscription = 1 - souscription; |
| 12 | OUTPUT; |
| 13 | END; |
| 14 | RUN; |
| 15 | DATA clients_a_scorer; |
| 16 | call streaminit(456); |
| 17 | DO id_client = 2001 to 2500; |
| 18 | segment = byte(mod(id_client, 3) + 65); |
| 19 | age = 20 + rand('integer', 50); |
| 20 | revenu_annuel = 30000 + rand('integer', 70000); |
| 21 | nb_produits_detenus = 1 + rand('integer', 5); |
| 22 | anciennete_client = rand('integer', 20); |
| 23 | OUTPUT; |
| 24 | END; |
| 25 | RUN; |
| 26 | PROC CAS; |
| 27 | load DATA=CASUSER.clients_train outcaslib="casuser" casout="clients_train" replace; |
| 28 | load DATA=CASUSER.clients_a_scorer outcaslib="casuser" casout="clients_a_scorer" replace; |
| 29 | bart.bartProbit TABLE={name='clients_train'}, |
| 30 | model={depVars={{name='souscription', event='1'}}, effects={{vars={'age', 'revenu_annuel', 'nb_produits_detenus', 'anciennete_client'}}}}, |
| 31 | responseLevelOrder='ASC', |
| 32 | store={name='marketing_probit_model', replace=true}; |
| 33 | RUN; |
| 34 | QUIT; |
| 1 | PROC CAS; |
| 2 | bart.bartScore TABLE={name='clients_a_scorer'}, |
| 3 | restore={name='marketing_probit_model'}, |
| 4 | pred='Prob_Souscription', |
| 5 | into='Ciblage_Campagne', |
| 6 | intoCutpt=0.6, |
| 7 | copyVars={'id_client', 'segment'}, |
| 8 | casOut={name='clients_scores_marketing', replace=true}; |
| 9 | RUN; |
| 10 | QUIT; |
La table de sortie `clients_scores_marketing` contient l'identifiant de chaque client, son segment, la probabilité prédite de souscription (`Prob_Souscription`), et une variable de décision (`Ciblage_Campagne`). Les clients avec une probabilité supérieure à 0.6 sont marqués avec la valeur 1 ('cibler'), les autres avec 0.