dataPreprocess catTrans

Gestion de Volumétrie et Modalités Rares en Retail

Scénario de test & Cas d'usage

Contexte Métier

Une enseigne de grande distribution analyse les ventes par sous-catégorie de produits. Il existe des milliers de sous-catégories, dont beaucoup sont très rares (ventes anecdotiques). Pour éviter le sur-apprentissage (overfitting) dans les modèles de prévision des ventes, il est critique de regrouper toutes ces catégories mineures sous un label générique '_RARE_'.
À propos du Set : dataPreprocess

Nettoyage, imputation et préparation des données.

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

Génération de 100 000 lignes de transactions avec une variable 'Sous_Categorie' suivant une distribution exponentielle (beaucoup de catégories avec peu d'observations).

Copié !
1 
2DATA casuser.ventes_retail;
3call streaminit(999);
4LENGTH Sous_Categorie $20;
5DO i = 1 to 100000;
6/* Distribution asymétrique pour créer des modalités rares */ val_id = floor(rand('EXPONENTIAL') * 20);
7IF val_id < 5 THEN Sous_Categorie = cat('Cat_Majeure_', val_id);
8ELSE Sous_Categorie = cat('Cat_Rare_', val_id, '_', floor(rand('Uniform')*100));
9OUTPUT;
10END;
11 
12RUN;
13 

Étapes de réalisation

1
Regroupement des modalités représentant moins de 1% des données
Copié !
1PROC CAS;
2 dataPreprocess.catTrans
3 TABLE={name='ventes_retail'}
4 inputs={'Sous_Categorie'}
5 method='GROUPRARE'
6 arguments={preprocessRare=true, rareThresholdPercent=1.0}
7 casOut={name='ventes_clean', replace=true}
8 casOutLevelBinMap={name='map_rare', replace=true};
9RUN;
2
Validation de la réduction de cardinalité
Copié !
1 
2PROC FREQ
3DATA=casuser.ventes_clean;
4tables Sous_Categorie / nocum;
5 
6RUN;
7 

Résultat Attendu


La table de sortie doit montrer une réduction drastique du nombre de valeurs uniques pour 'Sous_Categorie'. Toutes les valeurs 'Cat_Rare_...' apparaissant peu fréquemment doivent être fusionnées dans le groupe '_RARE_'. Les catégories majeures doivent rester distinctes.