L’optimisation des hyperparamètres est souvent la phase la plus chronophage d’un projet de Machine Learning. Ce script illustre parfaitement la montée en puissance de la PROC GRADBOOST sur l'architecture CAS : il ne s'agit plus seulement d'entraîner un modèle, mais de laisser l'infrastructure trouver dynamiquement la meilleure configuration pour vos données.
Pourquoi cette approche par étapes est-elle cruciale ?
Le passage d'un autotuning par défaut à une configuration personnalisée permet un contrôle fin sur le triptyque Précision / Temps / Ressources :
L'intelligence distribuée (CAS) : En travaillant en mémoire avec CAS, l'instruction AUTOTUNE peut explorer simultanément plusieurs combinaisons d'hyperparamètres. C'est un gain de temps massif par rapport aux boucles itératives du SAS traditionnel.
La maîtrise de l'exploration : Le deuxième exemple introduit popsize et maxiter. C'est le conseil d'expert par excellence : limiter la population et les itérations lors des premières phases permet de valider la convergence du modèle sans mobiliser inutilement les nœuds de calcul.
Le tuning chirurgical : La troisième étape montre la puissance des tuningparameters. En définissant des bornes (lb, ub) ou des listes de valeurs (values) pour le nombre d'arbres ou les variables à tester, vous injectez votre expertise métier dans l'algorithme. Vous guidez la machine vers des solutions réalistes et éviterez le sur-apprentissage (overfitting).
Le script commence par initialiser une session CAS, puis charge la table 'dmagecr' de la bibliothèque d'exemples 'sampsio' dans une table en mémoire CAS. Il exécute ensuite trois variations de PROC GRADBOOST. La première utilise l'autotuning par défaut. La deuxième spécifie le nombre d'itérations et la taille de la population pour l'autotuning. La troisième personnalise davantage les hyperparamètres à optimiser, comme le nombre d'arbres (ntrees) et le nombre de variables à tester (vars_to_try). Le script se termine en fermant la session CAS.
Analyse des données
Type : EXTERNE
Les données proviennent de la table 'dmagecr' située dans la bibliothèque d'exemples SAS 'sampsio'. Le script suppose que cette bibliothèque est disponible dans l'environnement SAS. La table est ensuite chargée en mémoire dans une table CAS.
1 Bloc de code
CAS
Explication : Initialise une session CAS (Cloud Analytic Services) nommée 'mysess' et définit une bibliothèque ('libref') CAS 'mycaslib' qui pointe vers cette session pour y stocker des données.
Copié !
cas mysess sessopts=(nworkers=1);
libname mycaslib cas casref=mysess;
1
cas mysess sessopts=(nworkers=1);
2
LIBNAME mycaslib cas casref=mysess;
3
2 Bloc de code
DATA STEP Data
Explication : Charge la table 'dmagecr' depuis la bibliothèque 'sampsio' vers la bibliothèque CAS 'mycaslib', la rendant ainsi disponible en mémoire pour le moteur CAS.
Copié !
data mycaslib.dmagecr;
set sampsio.dmagecr;
run;
1
2
DATA mycaslib.dmagecr;
3
SET sampsio.dmagecr;
4
RUN;
5
3 Bloc de code
PROC GRADBOOST
Explication : Exécute l'autotuning d'un modèle de gradient boosting avec les options par défaut. La procédure optimise automatiquement un ensemble d'hyperparamètres (NTREES, LEARNINGRATE, etc.) sur leurs plages prédéfinies.
INPUT checking duration history amount savings employed installp
4
marital coapp resident property age other housing existcr job
5
depends telephon foreign / level=interval;
6
INPUT purpose / level=nominal;
7
autotune;
8
RUN;
4 Bloc de code
PROC GRADBOOST
Explication : Lance un deuxième autotuning en spécifiant une population de 5 ('popsize=5'), un maximum de 3 itérations ('maxiter=3') et utilise l'erreur quadratique moyenne (ASE) comme objectif d'optimisation.
INPUT checking duration history amount savings employed installp
4
marital coapp resident property age other housing existcr job
5
depends telephon foreign / level=interval;
6
INPUT purpose / level=nominal;
7
autotune popsize=5 maxiter=3 objective=ASE;
8
RUN;
5 Bloc de code
PROC GRADBOOST
Explication : Effectue un autotuning plus contrôlé en modifiant les plages de recherche et les valeurs pour certains hyperparamètres. Le nombre d'arbres ('ntrees') est testé entre 10 et 50, et le nombre de variables à essayer ('vars_to_try') est restreint à une liste de valeurs spécifiques.
INPUT checking duration history amount savings employed installp
4
marital coapp resident property age other housing existcr job
5
depends telephon foreign / level=interval;
6
INPUT purpose / level=nominal;
7
autotune popsize=5 maxiter=3 objective=ASE
8
tuningparameters=(
9
ntrees(lb=10 ub=50 init=10)
10
vars_to_try(values=48121620 init=4)
11
);
12
RUN;
6 Bloc de code
CAS
Explication : Termine la session CAS 'mysess' et libère les ressources associées sur le serveur.
Copié !
cas mysess terminate;
1
cas mysess terminate;
L'Astuce Pro
Surveillez l'objectif de l'optimisation. Dans ce script, l'utilisation de objective=ASE (Average Squared Error) est idéale pour la précision globale, mais selon votre cas d'usage (fraude, churn, etc.), n'hésitez pas à tester F1 ou AUC pour affiner la pertinence métier de votre modèle Gradient Boosting.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.