dataPreprocess

catTrans

##set_datapreprocess

Description

L'action catTrans est l'outil indispensable pour transformer vos variables catégoriellesLes variables catégorielles sont des données qualitatives divisées en groupes distincts (nominales ou ordinales), utilisées dans SAS Viya pour segmenter les analyses et définir des classes. avant de les passer à la moulinette de vos modèles. Elle permet de réduire le nombre de niveaux (cardinalitéLa cardinalité représente le nombre de valeurs distinctes contenues dans une colonne. Une cardinalité élevée indique une grande diversité de données, influençant le choix des modèles dans CAS.) en regroupant intelligemment les catégories. Vous avez le choix entre des méthodes non supervisées (regrouper les niveaux 'rares' qui n'apparaissent pas assez souvent) et des méthodes supervisées qui s'appuient sur une variable cible (Target) pour créer des regroupements optimaux. Parmi les stars du show, on retrouve le Weight of EvidenceLe Weight of Evidence (WoE) mesure la capacité d'une modalité à distinguer les événements des non-événements, facilitant la transformation de variables avant une régression logistique. (WOE) , très utilisé en finance, ou les regroupements basés sur des arbres de décision. C'est la solution parfaite pour éviter que votre modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). ne s'emmêle les pinceaux avec trop de modalités inutiles.

Syntaxe Officielle
dataPreprocess.catTrans /
table={caslib="nom_caslib", name="nom_table", where="filtre_ligne"},
inputs={{name="variable_1"}, {name="variable_2"}},
method="TECHNique_DE_REGROUPEMENT",
targets={{name="variable_cible"}},
casOut={name="table_resultat", replace=true},
arguments={maxNBins=10, rareThreshold=5, ...},
evaluationStats=true

Paramètres Clés

Nom du paramètre Description
table La table source contenant les données à transformer. Vous pouvez y ajouter un filtre 'where' pour ne traiter qu'une partie du gâteau.
inputs Liste des variables catégorielles (ou binaires) que vous souhaitez transformer. C'est votre liste de courses.
method Définit la technique de transformation. 'GROUPRARE' regroupe les niveaux peu fréquents. 'WOE' calcule le poids de l'évidence. 'ONEHOT' crée des colonnes binaires pour chaque niveau. 'DTREE' et 'RTREE' utilisent des arbres pour décider des meilleurs groupes.
targets Variable cible à utiliser pour les méthodes supervisées (obligatoire pour WOE, DTREE, RTREE). Elle sert de guide à l'action.
casOut La table de sortie qui contiendra les variables transformées.
arguments Contient les options fines comme 'maxNBins' (nb max de groupes), 'rareThreshold' (seuil de rareté) ou 'overrides' pour forcer certains comportements (gestion des missing, ajustement WOE, etc.).
evaluationStats Active le calcul des statistiques de qualité comme l'Information Value (IV) ou l'indice de Gini pour mesurer le pouvoir discriminant des nouveaux groupes.
code Permet de générer le code SAS DATA Step correspondant à la transformation pour pouvoir l'appliquer plus tard sur de nouvelles données.

Préparation des données

Préparation de la table de démonstration

On charge la table CARS et on crée une variable cible binaire pour illustrer les méthodes supervisées.

1DATA mycas.cars; SET sashelp.cars; high_msrp = (msrp > 30000); RUN;

Exemples d'utilisation

Nettoyage des niveaux rares

On regroupe les constructeurs (Make) qui apparaissent moins de 5 fois dans la table.

1PROC CAS; dataPreprocess.catTrans / TABLE={name="cars"}, inputs={{name="Make"}}, method="GROUPRARE", arguments={rareThreshold=5}, casOut={name="cars_cleaned", replace=true}; RUN;
Résultat Attendu :
Une table 'cars_cleaned' où les constructeurs rares sont fusionnés.
Transformation complète avec WOE et Statistiques

Exemple exhaustif utilisant la méthode WOE, avec gestion des valeurs manquantes, calcul des statistiques d'évaluation et génération du code de scoring.

1PROC CAS; dataPreprocess.catTrans / TABLE={name="cars", where="EngineSize > 2"}, inputs={{name="Make"}, {name="Type"}, {name="Origin"}}, targets={{name="high_msrp"}}, method="WOE", evaluationStats=true, arguments={maxNBins=10, minNBins=2, preprocessRare=true, rareThresholdPercent=5, overrides={binMissing=true, woeAdjust=0.5, ivFactor=2, minPerNObsInBin=5}}, casOut={name="cars_scored", replace=true}, casOutBinDetails={name="bin_details", replace=true}, casOutLevelBinMap={name="level_map", replace=true}, code={casOut={name="scoring_step", replace=true}}; RUN;
Résultat Attendu :
La table 'cars_scored' contient les variables encodées en WOE. Les tables de résultats détaillent l'Information Value (IV). La table 'scoring_step' contient le code DATA Step.