riskmd

optBinning

##set_riskmd

Description

L'action riskmd.optBinning est l'outil ultime pour transformer vos variablesColonnes d'une table SAS contenant des données spécifiques (numériques ou caractères). Elles possèdent des attributs comme le nom, le type, la longueur, l'étiquette et le format d'affichage. continues ou nominales indisciplinées en groupes (bins) optimisés et statistiquement significatifs. Elle est particulièrement prisée en modélisationProcessus de création de structures mathématiques ou statistiques sur SAS Viya pour prédire des comportements, classifier des données ou identifier des tendances à partir de jeux de données CAS. du risque de crédit pour maximiser le pouvoir prédictif par rapport à une cible binaire (souvent le défaut de paiement). C'est un peu comme si vous demandiez à un expert en rangement Marie Kondo de s'occuper de vos données : tout finit par être parfaitement classé là où ça fait le plus de sens mathématique.

Syntaxe Officielle
proc cas;
riskmd.optBinning /
adjustFactor=double
code={casOut={caslib="string", name="table-name", replace=true}, iProb=true}
data={caslib="string", name="table-name"}
logLevel=integer
maxTime=integer
output={caslib="string", name="table-name", replace=true}
param={caslib="string", name="table-name"}
printLevel=integer
saveState={caslib="string", name="table-name", replace=true}
status={caslib="string", name="table-name", replace=true};
run;

Paramètres Clés

Nom du paramètre Description
data Indique la table CAS d'entrée contenant les données brutes à biner. Obligatoire.
param Désigne la table de paramètres qui définit quelles variables doivent être binées et comment (cible, type de variable, etc.). Obligatoire.
adjustFactor Facteur d'ajustement pour le calcul du poids de la preuve (Weight of Evidence - WoE). Valeur par défaut : 0.5.
code Permet de générer le code SAS (DATA step) permettant d'appliquer le binning sur de nouvelles données.
output Définit la table de sortie CAS qui contiendra les solutions de binning générées.
saveState Permet de sauvegarder le modèle de binning sous forme de store analytique (astore) pour une utilisation ultérieure avec l'action astore.score.
maxTime Limite le temps d'exécution en secondes. Par défaut, 100 secondes (parce que même les ordinateurs ont besoin d'une pause café).

Préparation des données

Préparation des données de crédit et des paramètres

Nous créons une table de données fictive simulant des demandes de prêt, ainsi qu'une table de paramètres indiquant que nous voulons biner la variable 'Age' par rapport à la cible 'Default'.

1DATA casuser.credit_data;
2 INPUT ID Age Income Default;
3 DATALINES;
4 1 25 20000 1
5 2 30 45000 0
6 3 45 60000 0
7 4 22 15000 1
8 5 35 50000 0
9 6 50 80000 0
10 7 19 12000 1
11 8 28 35000 0
12 9 40 55000 0
13 10 60 90000 0
14 ;
15RUN;
16DATA casuser.bin_params;
17 LENGTH VarName $32 TargetName $32 VarType $8;
18 VarName='Age'; TargetName='Default'; VarType='INTERVAL'; OUTPUT;
19 VarName='Income'; TargetName='Default'; VarType='INTERVAL'; OUTPUT;
20RUN;

Exemples d'utilisation

Binning optimal de base

Exécution de l'action avec les paramètres minimaux pour biner nos variables de crédit.

1PROC CAS;
2 riskmd.optBinning /
3 DATA={name="credit_data", caslib="casuser"}
4 param={name="bin_params", caslib="casuser"}
5 OUTPUT={name="bin_out", caslib="casuser", replace=true};
6RUN;
Résultat Attendu :
Une table CAS 'bin_out' est créée, contenant les définitions des intervalles (bins) optimaux, les statistiques WoE et l'Information Value (IV) pour chaque variable.
Binning complet avec génération de code et sauvegarde du modèle

Cet exemple montre comment biner les données tout en demandant la création d'un fichier de score DATA step et d'un store analytique pour le futur.

1PROC CAS;
2 riskmd.optBinning /
3 DATA={name="credit_data", caslib="casuser"}
4 param={name="bin_params", caslib="casuser"}
5 adjustFactor=0.1
6 code={casOut={name="score_code", caslib="casuser", replace=true}}
7 OUTPUT={name="bin_results", caslib="casuser", replace=true}
8 saveState={name="bin_model", caslib="casuser", replace=true}
9 STATUS={name="bin_status", caslib="casuser", replace=true}
10 printLevel=2
11 logLevel=2;
12RUN;
Résultat Attendu :
L'action génère : 1) La table 'bin_results' avec les détails statistiques. 2) La table 'score_code' contenant le code SAS pour biner de nouveaux clients. 3) Le fichier 'bin_model' (astore) pour un déploiement robuste. Le log sera verbeux (logLevel=2) pour vous dire tout ce qui s'est passé en coulisses.