neuralNet annTrain

Scénario Standard : Prédiction de l'Appétence Client pour une Offre Marketing

Scénario de test & Cas d'usage

Contexte Métier

Une entreprise de télécommunications souhaite optimiser sa nouvelle campagne marketing. L'objectif est de prédire quels clients sont les plus susceptibles de souscrire à une nouvelle offre 'Fibre Max' en se basant sur leurs données démographiques et leur historique d'utilisation. Cela permettra de cibler les efforts marketing et de maximiser le retour sur investissement.
À propos du Set : neuralNet

Entraînement de réseaux de neurones artificiels classiques.

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

Création d'une table de clients avec des informations sur leur ancienneté, leur forfait actuel, leur consommation de données et s'ils ont souscrit à l'offre (cible). La table est ensuite partitionnée pour l'entraînement et la validation.

Copié !
1DATA clients_data;
2 call streaminit(42);
3 DO client_id = 1 to 5000;
4 anciennete_mois = floor(rand('UNIFORM') * 60) + 6;
5 consommation_go = 5 + rand('NORMAL', anciennete_mois / 2, 10);
6 IF consommation_go < 0 THEN consommation_go = 5;
7 revenu_annuel_k = 25 + rand('NORMAL', 40, 15);
8 IF revenu_annuel_k < 15 THEN revenu_annuel_k = 15;
9 score_satisfaction = rand('UNIFORM') * 5;
10 /* La probabilité de souscrire augmente avec la consommation et la satisfaction */
11 IF (consommation_go > 40 and score_satisfaction > 3.5 and rand('UNIFORM') > 0.4) THEN a_souscrit = 1;
12 ELSE a_souscrit = 0;
13 OUTPUT;
14 END;
15RUN;
16 
17PROC CASUTIL;
18 load DATA=clients_data outcaslib=casuser casout='CLIENTS_MARKETING' replace;
19QUIT;

Étapes de réalisation

1
Partitionnement des données en un jeu d'entraînement (75%) et un jeu de validation (25%) pour éviter le surajustement.
Copié !
1PROC CAS;
2 partition.partition TABLE={name='CLIENTS_MARKETING'}
3 partition={fraction={train=0.75, valid=0.25}, seed=123}
4 casout={name='CLIENTS_PARTITIONED', replace=true};
5QUIT;
2
Entraînement d'un réseau de neurones MLP avec deux couches cachées (20 et 10 neurones) en utilisant le jeu de validation pour un arrêt précoce. Le modèle et son état sont sauvegardés.
Copié !
1PROC CAS;
2 ACTION neuralNet.annTrain /
3 TABLE={name='CLIENTS_PARTITIONED', where='_PartInd_=1'},
4 validTable={name='CLIENTS_PARTITIONED', where='_PartInd_=2'},
5 inputs={{name='anciennete_mois'}, {name='consommation_go'}, {name='revenu_annuel_k'}, {name='score_satisfaction'}},
6 target='a_souscrit',
7 nominals={{name='a_souscrit'}},
8 hiddens={20, 10},
9 arch='MLP',
10 std='STD',
11 errorFunc='ENTROPY',
12 nloOpts={
13 algorithm='LBFGS',
14 validate={stagnation=4}
15 },
16 casOut={name='marketing_model_weights', replace=true},
17 saveState={name='marketing_model_state', replace=true};
18QUIT;

Résultat Attendu


L'action s'exécute avec succès et produit un modèle de classification. Les tables de poids ('marketing_model_weights') et d'état ('marketing_model_state') sont créées dans CAS. Le journal des itérations montre que l'entraînement s'est arrêté en raison de la stagnation de l'erreur sur le jeu de validation, prouvant que le mécanisme d'arrêt précoce a fonctionné comme prévu.