neuralNet annCode

Cas limite : Gestion des données manquantes lors de la génération de code pour un modèle marketing

Scénario de test & Cas d'usage

Contexte Métier

Une équipe marketing a construit un modèle pour prédire l'appétence d'un client à une offre. Les données clients sont souvent incomplètes (revenu non renseigné, etc.). Ce test vise à s'assurer que le code de scoring généré par `annCode` se comporte correctement et applique la logique d'imputation par défaut du modèle (la moyenne) pour les valeurs manquantes.
À 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 `PROSPECTS_MARKETING` avec des données de prospects. Certaines valeurs clés comme `REVENU` et `NB_ACHATS_AN_PASSE` sont volontairement mises à manquant (`.`) pour un sous-ensemble des données.

Copié !
1DATA casuser.PROSPECTS_MARKETING(promote=yes);
2 call streaminit(789);
3 DO i = 1 to 2000;
4 AGE = 20 + rand('integer', 50);
5 REVENU = 40000 + rand('integer', 80000);
6 NB_ACHATS_AN_PASSE = rand('integer', 15);
7 APPETENCE_OFFRE = (REVENU/100000 + NB_ACHATS_AN_PASSE/20) > rand('uniform')*1.1;
8 IF rand('uniform') < 0.2 THEN call missing(REVENU);
9 IF rand('uniform') < 0.15 THEN call missing(NB_ACHATS_AN_PASSE);
10 OUTPUT;
11 END;
12 drop i;
13RUN;

Étapes de réalisation

1
Entraînement d'un modèle `annTrain` sur la table `PROSPECTS_MARKETING`. La procédure va automatiquement imputer les valeurs manquantes par la moyenne des variables respectives et stocker cette information dans le modèle.
Copié !
1PROC CAS;
2 neuralNet.annTrain /
3 TABLE={name='PROSPECTS_MARKETING'},
4 inputs={'AGE', 'REVENU', 'NB_ACHATS_AN_PASSE'},
5 target='APPETENCE_OFFRE',
6 modelTable={name='MODELE_MARKETING', replace=true};
7QUIT;
2
Génération du code de scoring à partir du modèle entraîné.
Copié !
1PROC CAS;
2 neuralNet.annCode /
3 modelTable={name='MODELE_MARKETING'},
4 code={casOut={name='CODE_SCORING_MARKETING', replace=true}};
5QUIT;
3
Validation : Exécution du code généré sur la table originale (contenant les manquants) pour vérifier qu'il s'exécute sans erreur et produit un score pour chaque ligne.
Copié !
1PROC CAS;
2 datastep.runCode /
3 codeTable={name='CODE_SCORING_MARKETING'}
4 casout={name='PROSPECTS_SCORES', replace=true};
5QUIT;

Résultat Attendu


Le code de scoring généré s'exécute sans erreur sur des données contenant des valeurs manquantes. La table `PROSPECTS_SCORES` est créée et contient un score de prédiction valide pour toutes les 2000 observations initiales, prouvant que la logique d'imputation (moyenne de la variable) a été correctement intégrée et appliquée par le code DATA step.