La chronique SAS – «Diviser pour régner avec PROC GMLSELECT»

le 24 mai 2012 à 10:06
dtalbot

À l’époque de l’Empire romain, l’application de la politique extérieure du «divide et impera» a permis de contenir les peuples conquis et d’assurer la suprématie de Rome. En modélisation prédictive, nous pouvons nous inspirer de cette approche lors de la sélection des variables et de la vérification de l’adéquation du modèle dans le but de s’assurer de la puissance prédictive de notre modèle final. Pour ce faire, la procédure GLMSELECT du module SAS/STAT est toute indiquée.

Dans cette chronique, j’aimerais démystifier cette procédure peu connue et illustrer une de ses nombreuses applications: le partitionnement des données dans le processus de sélection d’un modèle linéaire dans un contexte prédictif.

La genèse d’une procédure

La procédure GLMSELECT est un croisement entre deux procédures SAS pour les modèles linéaires: REG et GLM. Ces dernières existent depuis fort longtemps mais ont chacune leurs limites. Par exemple, la procédure REG offre une variété de méthodes de sélection de modèles mais ne permet pas l’utilisation d’une instruction CLASS. À l’inverse, la procédure GLM permet l’utilisation d’une instruction CLASS, mais ne permet pas d’utiliser de méthodes de sélection de modèles.

La procédure GLMSELECT fait le pont entre REG et GLM en offrant de nombreuses fonctionnalités de personnalisation pour la sélection de modèle. En plus des méthodes pas à pas traditionnelles («forward», «backward» et «stepwise»), la procédure GLMSELECT supporte les nouvelles méthodes LAR («Least Angle Regression») et LASSO («Least Absolute Shrinkage and Selection Operator»). De plus, elle permet, grâce à son instruction MODELAVERAGE, d’utiliser des techniques de ré-échantillonnage comme le «bootstrap». La procédure prévoit également un résumé graphique du processus itératif de sélection du modèle.

Pour une méthode donnée de sélection de modèle, de nombreuses options sont offertes pour choisir le modèle final. On peut se baser sur un nombre maximal d’itérations, sur un critère statistique, sur la première itération qui comporte n effets, etc.

La sélection de modèle par le partitionnement des données

Bien connu des adeptes du data mining et des techniques d’apprentissage supervisé, le partitionnement des données consiste à diviser les données de départ en trois partitions disjointes : les données d’entraînement («training»), les données de validation et les données test.

Les modèles seront développés de façon itérative sur les données d’entraînement, l’adéquation de ces modèles à chaque itération se fera sur les données de validation afin d’identifier un modèle candidat et une comparaison finale des modèles candidats s’effectuera avec les données test afin de choisir le meilleur modèle.

Si on utilise par exemple une méthode de sélection pas à pas «forward», le meilleur modèle n’est pas celui que l’on obtient à la dernière étape du processus itératif mais plutôt le modèle qui va obtenir la meilleure performance sur les données de validation. Cette méthode a pour but de choisir un modèle candidat qui est parcimonieux et qui démontre une puissance prédictive sur de nouvelles données.

L’encadré 1 donne un exemple de cette approche avec la procédure GLMSELECT de SAS, en utilisant des données d’entraînement et de validation.

Encadré 1


L’instruction PROC GLMSELECT contient les options suivantes :

  • DATA pour identifier le fichier de données à utiliser;

  • PLOTS pour spécifier les graphiques à produire (à utiliser avec ODS GRAPHICS ON). Ici, ASEPLOT demande qu’un graphique de l’erreur quadratique moyenne à chaque itération soit produit;

  • SEED pour spécifier le nombre de départ qui va initialiser la production d’un nombre pseudo-aléatoire afin de pouvoir reproduire l’échantillonnage.

L’instruction PARTITION avec son option FRACTION va s’occuper de faire le partitionnement aléatoire des données en deux: 65% des données originales pour les données d’entraînement et 35% pour les données de validation. Au lieu de l’option FRACTION, il est possible d’utiliser l’option ROLEVAR pour spécifier une variable qui va servir à classifier les observations selon qu’elles doivent être utilisées comme données d’entraînement ou données de validation.

Si les données d’entraînement et de validation sont dans des fichiers de données SAS séparés, il est possible de se servir de l’instruction VALDATA= pour lire les données de validation au lieu de se servir de l’instruction PARTITION.

On retrouve ensuite l’instruction MODEL pour spécifier le modèle. Dans la notation, les variables sont séparées par le symbole | et l’opérateur @3 est utilisé pour inclure dans le modèle les effets principaux et toutes les interactions deux à deux et trois à trois. Vient ensuite l’option SELECTION=FORWARD. Cette méthode pas à pas de sélection de modèle débute avec un modèle ne contenant aucune variable et, à chaque itération, ajoute la variable la plus significative (en présence de celles déjà dans le modèle). En utilisant la sous-option STEPS=100, on force cette méthode à faire cent itérations, même si une solution optimale a été atteinte plus tôt.

Dans la sortie SAS de l’encadré 2, on constate que 3182 observations ont été utilisées pour l’entraînement du modèle et 1661 pour la validation, c’est-à-dire respectivement 65% et 35% des données.

Encadré 2


Dans le sommaire de la sélection «forward» (encadré 3), on retrouve pour chaque itération, l’effet qui est entré dans le modèle, le nombre total d’effets, deux statistiques d’adéquation sur les données d’entraînement (le critère Schwarz Bayésien («Schwarz Bayesian information Criterion») et l’erreur quadratique moyenne («Average Squared Error»)) ainsi que le «Validation ASE». Cette dernière est une statistique d’adéquation sur les données de validation.

Une note à la fin du sommaire indique que le processus de sélection s’est arrêté à l’étape 100. Par contre, un astérisque dans la colonne SBC indique que, pour les données d’entraînement, le modèle choisi selon ce critère serait celui de l’étape 15. De façon similaire, un astérisque dans la colonne Validation ASE indique que, pour les données de validation, le modèle choisi proviendrait de l’étape 11 si on utilise ce critère.

Encadré 3


Cette information est résumée dans le graphique d’itérations (encadré 4) produit par l’option PLOTS=ASEPLOTS. On y retrouve la progression de l’erreur quadratique moyenne, à chaque étape du processus pas à pas, pour les données d’entraînement et les données de validation.

En examinant ce graphique, on constate que pour les données d’entraînement, plus le nombre d’étapes est grand (i.e. plus il y a de termes dans le modèle, plus il est complexe), meilleur l’ajustement car l’ASE baisse à chaque itération. Pour les données de validation, on observe cette même tendance initialement mais après la 12e étape, l’ASE se met à croître. Ceci est un exemple classique de surajustement.

Encadré 4


Au lieu de forcer GLMSELECT à faire cent itérations, on peut émuler la méthode de sélection de modèle «forward» de PROC REG en lui demandant de choisir le modèle, en se basant sur un seuil pour le «p-value» en utilisant l’option SLENTRY (voir l’encadré 5).

Encadré 5


On obtient le graphique d’itérations suivant (encadré 6). On remarque que le modèle choisi provient de l’étape 15. Cette sélection utilise les données d’entraînement et le seuil SLENTRY. Par contre, on remarque que pour les données de validation, le ASE atteint son minimum à l’étape 11.

Encadré 6


Pour demander à GLMSELECT de choisir le modèle qui a la meilleure performance (plus petit ASE) sur les données de validation, on n’a qu’à utiliser l’option CHOOSE=VALIDATE (encadré 7).

Encadré 7


On remarque alors, dans le graphique d’itérations (encadré 8), que le modèle choisi est celui de l’étape 11, étape où le minimum de l’ASE est atteint sur les données de validation. Nous obtenons donc un modèle plus simple (que celui de l’étape 15, donné par l’approche traditionnelle sur les données d’entraînement) et qui exhibe une meilleure performance sur les données de validation, ce qui est une bonne nouvelle dans un contexte prédictif où l’on désire utiliser le modèle sur de nouvelles données.

Encadré 8


Pour déployer le modèle et produire des prédictions pour un nouvel ensemble de données, rien de plus simple! La procédure GLMSELECT est munie d’une instruction SCORE qui facilite le tout (encadré 9).

Encadré 9


Conclusion

En conclusion, si vous travaillez avec des modèles linéaires dans un contexte prédictif et si vous désirez avoir le plein contrôle sur le processus de sélection de modèle, la procédure GLMSELECT du module SAS/STAT est toute indiquée. De nombreuses méthodes de sélection s’offrent à vous, dont celle du partitionnement des données. Si la taille initiale de vos données est trop petite pour cette approche, GLMSELECT vous permet même d’utiliser la validation croisée. La procédure GLMSELECT mérite d’être découverte et peut s’avérer une alliée de taille de votre recherche du meilleur modèle.

Sylvain Tremblay,

Groupe de formation – Institut SAS (Canada) inc.

Référence

La procédure GLMSELECT – documentation

http://support.sas.com/documentation/cdl/en/statugglmselect/61792/PDF/default/statugglmselect.pdf

Retour à la table des matières

FacebookTwitterGoogle+LinkedIn
  • varnould

    Bonjour,

    article tres intéressant.
    J’étudie pour le moment les possibilités d’utiliser cet outil dans le cadre de mon projet; Mais j’éprouve qq difficultés avec ce code.
    Serait il possible d’en savoir un peu plus?

    Bien à vous,

  • Omar

    Bonjour,
    Je rejoins varnould. De même je n’arrive pas à mettre en place la procédure dans la version SAS 9.2 en ma possession. Est ce que vous pouvez partager avec moi votre version de SAS pour y avancer dans mon projet.
    Bien à vous