autotune

modelComposer

##set_autotune

Description

L'action modelComposer est le véritable chef d'orchestre de vos modèles d'apprentissage automatique dans SAS Viya ! Elle permet d'ajuster automatiquement les hyperparamètres (autotuningProcessus automatisé de recherche des hyperparamètres optimaux pour un modèle de machine learning, visant à maximiser la performance prédictive sans intervention manuelle de l'utilisateur.) pour plusieurs types de modèles de manière concurrente, en optimisant dynamiquement l'allocation des ressources. Fini les réglages manuels fastidieux, laissez la machine travailler pour vous (pendant que vous prenez un petit café). Source détaillée :

Syntaxe Officielle
proc cas;
autotune.modelComposer <result=results> <status=rc> /
table={name="nom_table", caslib="nom_caslib"} /* Requis */
target="variable_cible" /* Requis */
inputs={"var1", "var2"}
nominals={"var_cat1", "var_cat2"}
modelTypes={{modelType="ALL" | "FOREST" | "GRADBOOST" | "NEURALNET" | ...}}
nRounds=entier
nEvalsPerRound=entier
maxModelComposerTime=double
tunerOptions={searchMethod="GA", maxIters=entier, objective="ASE" | "MCE" | ..., popSize=entier}
policyOptions={policy="EPSGREEDY" | "SOFTMAX", epsGreedyOptions={eps=double}}
validTable={name="nom_table_valid"}
modelNamePrefix={name="prefixe_modele", replace=true};
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table de données d'entrée (CASTable) à utiliser pour l'entraînement des modèles. Ce paramètre est obligatoire.
target Spécifie la variable cible (ou variable de réponse) pour l'apprentissage du modèle. Ce paramètre est obligatoire.
inputs Liste des variables explicatives (features) à utiliser dans l'analyse.
nominals Liste des variables d'entrée à traiter comme des variables nominales (catégorielles). N'oubliez pas d'y inclure votre cible si elle l'est !
modelTypes Liste des types de modèles à optimiser simultanément (ex: FOREST, GRADBOOST, NEURALNET, SVM ou ALL pour tous les tester).
nRounds Spécifie le nombre de cycles (rounds) d'optimisation concurrente à effectuer. Par défaut : 2.
nEvalsPerRound Nombre total d'évaluations à répartir entre les différents types de modèles à chaque cycle. Par défaut : 100.
maxModelComposerTime Temps maximum alloué (en secondes) pour l'exécution globale du model composer. Utile pour ne pas bloquer le serveur jusqu'à l'heure de la retraite.
tunerOptions Options avancées pour contrôler le comportement du tuner (méthode de recherche comme 'GA' ou 'RANDOM', fonction objectif, itérations max, gestion de la validation croisée, etc.).
policyOptions Politique d'allocation des évaluations (EPSGREEDY ou SOFTMAX) pour décider intelligemment quel modèle privilégier lors des itérations.
validTable Spécifie une table de données distincte à utiliser pour valider les modèles pendant l'optimisation.

Préparation des données

Chargement des données Iris en mémoire

Avant d'utiliser le Model Composer, chargeons un jeu de données classique (Iris) dans CAS pour s'en servir comme données d'entraînement.

1PROC CAS;
2 SESSION casauto;
3 TABLE.loadTable / caslib="SystemData" path="iris.sashdat" casOut={name="iris", replace=true};
4RUN;
5QUIT;

Exemples d'utilisation

Lancement basique du Model Composer

Cet exemple illustre comment lancer une compétition entre deux types de modèles (Arbre de décision et Forêt Aléatoire) sur les données Iris, avec un paramétrage minimal.

1PROC CAS;
2 autotune.modelComposer / TABLE={name="iris"} target="Species" inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"} nominals={"Species"} modelTypes={{modelType="DECISIONTREE"}, {modelType="FOREST"}} nRounds=2 nEvalsPerRound=20;
3RUN;
4QUIT;
Résultat Attendu :
Un tableau récapitulatif listant les évaluations des deux algorithmes, avec l'identification de la meilleure configuration de modèle et de ses hyperparamètres optimisés.
Orchestration avancée avec validation croisée et limite de temps

Voici comment tirer parti de la puissance complète du modelComposer : nous mettons en compétition des modèles complexes (Gradient Boosting, Réseaux de Neurones et SVM) avec une politique d'allocation Epsilon-Greedy, en utilisant la validation croisée (3 folds), le tout contraint à ne pas dépasser 1 heure (3600s) de recherche.

1PROC CAS;
2 autotune.modelComposer / TABLE={name="iris"} target="Species" inputs={"SepalLength", "SepalWidth", "PetalLength", "PetalWidth"} nominals={"Species"} modelTypes={{modelType="GRADBOOST"}, {modelType="NEURALNET"}, {modelType="SVM"}} nRounds=3 nEvalsPerRound=30 maxModelComposerTime=3600 policyOptions={policy="EPSGREEDY", epsGreedyOptions={eps=0.2}} tunerOptions={searchMethod="GA", maxIters=5, popSize=10, objective="MCE", nCrossValFolds=3, seed=12345} modelNamePrefix={name="BestModel_Iris", replace=true};
3RUN;
4QUIT;
Résultat Attendu :
Le système explore dynamiquement les hyperparamètres des 3 algorithmes, favorise celui qui produit la plus faible erreur de classification (MCE) via la politique epsilon-greedy, et sauvegarde les caractéristiques du modèle gagnant dans une table préfixée 'BestModel_Iris'.