?>
L'action `catTrans` du set `dataPreprocess` est un outil fondamental en préparation de données (feature engineering). Elle permet de transformer des variables catégorielles en représentations numériques, ce qui est indispensable pour la plupart des algorithmes de machine learning. Cette action offre plusieurs stratégies, allant du simple regroupement de modalités rares (non supervisé) à des techniques d'encodage supervisées sophistiquées comme le 'Weight of Evidence' (WOE) ou le regroupement par arbre de décision, qui utilisent une variable cible pour créer des groupes optimaux.
| Parameter | Beschreibung |
|---|---|
| table | Spécifie la table CAS d'entrée à analyser. C'est le seul paramètre obligatoire. |
| inputs | Liste des variables catégorielles à transformer. Si non spécifié, toutes les variables de type caractère sont utilisées. |
| method | Spécifie la technique de transformation à utiliser. Les valeurs possibles sont 'GROUPRARE' (par défaut, regroupe les modalités rares), 'ONEHOT' (encodage 1-chaud), 'WOE' (Weight of Evidence, supervisé), 'DTREE' (arbre de décision, supervisé), 'RTREE' (arbre de régression, supervisé). |
| targets | Liste des variables cibles à utiliser pour les méthodes d'encodage supervisées (WOE, DTREE, RTREE). |
| events | Spécifie la valeur de la modalité 'événement' pour chaque variable cible binaire. Doit correspondre à la liste `targets`. |
| arguments | Conteneur pour les options de configuration avancées de l'algorithme de regroupement. |
| arguments.preprocessRare | Si TRUE, les modalités rares sont regroupées en une seule catégorie avant d'appliquer la méthode de regroupement principale. Utile pour nettoyer les données. |
| arguments.rareThresholdPercent | Définit le seuil en pourcentage pour considérer une modalité comme 'rare'. Par défaut à 5% si `preprocessRare` est activé. |
| arguments.treeCrit | Pour la méthode DTREE, spécifie le critère de division de l'arbre ('GINI', 'ENTROPY', 'GAINRATIO'). |
| arguments.maxNBins | Nombre maximum de groupes (bins) à créer pour les méthodes supervisées. |
| arguments.overrides | Conteneur pour les options globales qui peuvent surcharger les comportements par défaut, comme la gestion des valeurs manquantes (`binMissing`) ou l'ajustement du WOE (`woeAdjust`). |
| casOut | Spécifie la table de sortie qui contiendra les données d'entrée avec les nouvelles variables transformées. |
| casOutBinDetails | Spécifie une table de sortie pour stocker les statistiques détaillées de chaque bin créé (ex: WOE, IV, nombre d'événements). |
| casOutLevelBinMap | Spécifie une table de sortie pour stocker le mappage entre les modalités originales et les nouveaux bins. |
| code | Permet de générer le code de scoring SAS DATA step dans une table CAS, pour une réutilisation facile. |
| copyVars | Liste des variables de la table d'entrée à copier dans la table de sortie `casOut`. |
| outVarsNamePrefix | Spécifie un préfixe à ajouter aux noms des nouvelles variables créées. |
Cette table `sales_data` contient des informations sur les ventes. `CustomerID` est un identifiant unique. `Product` est une variable catégorielle avec de nombreuses modalités, dont certaines sont rares. `Region` est une variable catégorielle simple. `Purchased` est une variable cible binaire (1 pour un achat, 0 sinon), utilisée pour les méthodes supervisées. `SaleCount` et `SaleValue` peuvent être utilisées comme variables de fréquence et de poids.
1 DATA casuser.sales_data; 2 INFILE DATALINES dlm=','; 3 INPUT CustomerID $ Product $ Region $ Purchased SaleCount SaleValue; 4 DATALINES; 5 101,Laptop,East,1,1,1200 6 102,Mouse,West,0,2,50 7 103,Keyboard,West,1,1,75 8 104,Laptop,East,0,1,1150 9 105,Monitor,North,1,1,300 10 106,Mouse,South,0,3,75 11 107,Laptop,West,1,1,1300 12 108,Webcam,East,0,5,250 13 109,Monitor,South,1,2,600 14 110,Keyboard,North,0,1,80 15 111,Laptop,East,1,1,1250 16 112,Mouse,West,1,1,25 17 113,Headphones,South,0,4,300 18 114,Laptop,North,1,1,1400 19 115,Monitor,West,0,1,280 20 116,Webcam,East,1,2,100 21 117,Mouse,North,0,1,20 22 118,Keyboard,South,1,1,90 23 119,Laptop,West,0,1,1100 24 120,Docking Station,East,1,1,150 25 ; 26 RUN;
Le 'One-Hot Encoding' est une technique non supervisée qui crée une nouvelle variable binaire (0 ou 1) pour chaque modalité unique de la variable d'entrée. C'est utile pour les algorithmes qui ne gèrent pas les variables catégorielles nativement. Ici, on transforme la variable `Region`.
| 1 | PROC CAS; |
| 2 | dataPreprocess.catTrans |
| 3 | TABLE={name='sales_data'}, |
| 4 | method='ONEHOT', |
| 5 | inputs={{name='Region'}}, |
| 6 | casOut={name='sales_onehot', replace=true}, |
| 7 | copyVars={'CustomerID'}; |
| 8 | RUN; |
| 9 | QUIT; |
Cette méthode non supervisée identifie les modalités d'une variable qui apparaissent rarement et les regroupe dans une seule catégorie '_RARE_'. C'est efficace pour réduire la cardinalité d'une variable avant modélisation. On utilise `rareThresholdPercent=15` pour définir comme 'rare' toute modalité représentant moins de 15% du total des observations. On utilise aussi `outVarsNamePrefix` pour préfixer la nouvelle variable.
| 1 | PROC CAS; |
| 2 | dataPreprocess.catTrans |
| 3 | TABLE='sales_data', |
| 4 | method='GROUPRARE', |
| 5 | inputs={{name='Product'}}, |
| 6 | arguments={preprocessRare=true, rareThresholdPercent=15}, |
| 7 | outVarsNamePrefix='grp', |
| 8 | copyVars={'CustomerID', 'Product'}, |
| 9 | casOut={name='sales_grouped', replace=true}; |
| 10 | RUN; |
| 11 | QUIT; |
Le WOE est une technique d'encodage supervisée puissante pour les cibles binaires. Elle remplace chaque modalité par une valeur numérique qui représente le 'poids de la preuve' qu'elle apporte en faveur de l'événement. On utilise `Product` comme entrée et `Purchased` comme cible, en spécifiant `event='1'`. On active le calcul des statistiques d'évaluation (`evaluationStats=true`) et on gère les valeurs manquantes (s'il y en avait) avec `binMissing=true`. Les détails des bins sont sauvegardés dans `sales_woe_details`.
| 1 | PROC CAS; |
| 2 | dataPreprocess.catTrans |
| 3 | TABLE='sales_data', |
| 4 | method='WOE', |
| 5 | inputs={{name='Product'}}, |
| 6 | targets={{name='Purchased'}}, |
| 7 | events={'1'}, |
| 8 | evaluationStats=true, |
| 9 | arguments={overrides={binMissing=true, woeAdjust=0.5}}, |
| 10 | casOut={name='sales_woe', replace=true}, |
| 11 | casOutBinDetails={name='sales_woe_details', replace=true}, |
| 12 | copyVars={'CustomerID', 'Product', 'Purchased'}; |
| 13 | RUN; |
| 14 | QUIT; |
Cette méthode supervisée utilise un arbre de décision à un niveau pour regrouper les modalités de manière optimale par rapport à la cible. On utilise le critère `GINI` pour la séparation et on vise un maximum de 4 groupes (`maxNBins=4`). Cet exemple montre également comment générer le code de scoring SAS DATA step correspondant et le stocker dans une table CAS (`scoring_code_dtree`).
| 1 | PROC CAS; |
| 2 | dataPreprocess.catTrans |
| 3 | TABLE='sales_data', |
| 4 | method='DTREE', |
| 5 | inputs={{name='Product'}}, |
| 6 | targets={{name='Purchased'}}, |
| 7 | events={'1'}, |
| 8 | arguments={treeCrit='GINI', maxNBins=4}, |
| 9 | code={casOut={name='scoring_code_dtree', replace=true}}, |
| 10 | casOut={name='sales_dtree', replace=true}; |
| 11 | RUN; |
| 12 | QUIT; |