Historique :
Sommaire :
- Présentation
- Le Modèle Additif Généralisé
- L’algorithme Back-fitting
- Les transformations
- Annexe théorique
- Exemple
- Application informatique
- Bibliographie
Présentation :
Le Modèle Additif Généralisé (GAM), élaboré par Trevor Hastie et Rob Tibshirani en 1990, est un outil permettant de discriminer une variable continue ou binaire à partir de variables explicatives continue transformées en amont. Dès lors, on chercher déterminer un jeu de fonction : travaillant chacune sur une variable unique ( mais aussi sur des combinaisons de deux ou plusieurs autres (). Le terme « Additif » vient du fait qu’il s’agira ensuite de sommer ces fonctions de transformation pour poser le modèle finale.
Le modèle GAM nécessite un jeu d’apprentissage pour sa construction et un jeu de test pour sa validation car il est sujet au sur-apprentissage du fait des fonctions de transformation utilisées particulièrement puissantes. En dépit de sa grande capacité avérée à modéliser tout type de phénomène, il reste peu conseillé lorsque l’on dispose d’un nombre de variables explicatives trop important du fait d’un coût de calcul très élevé.
Le Modèle Additif Généralisé :
Hypothèse préliminaire: continue, continue ou binaire.
La forme générale du modèle GAM est la suivante :
Avec , fonctions de transformation associée à la variable ou à un uplet de variables explicatives que l’on cherche à combiner directement.
L’Algorithme Back-fitting
Il s’agit de la méthode de calcul des coefficients de régression la plus couramment utilisée. L’algorithme Back-fitting, introduit par Jerome Harold Friedman et Werner Stuelzle en 1981, est une procédure itérative qui ajuste séquentiellement chaque composante lissée en maintenant les autres. Cette approche est similaire à l’algorithme de rétropropagation généralisée.
– Etape d’initialisation : poser , et
– Etape itérative : pour , déterminer,
Tant que,
décroît ou satisfait le critère de convergence
A noter que pour le terme,
Et pour le terme,
Enfin, l’estimation des différentes fonctions de lissage à l’instant , se fait selon la fonction lien retenue (modèle linéaire, logistique, etc).
Les transformations
Le modèle GAM se base donc sur la transformation de variables ou de combinaisons de variables afin bâtir son modèle prédictif. Elles portent le nom de fonctions de lissage et partagent toutes un concept bien particulier : celui d’ajustement par intervalle de valeurs appelé également « Nœud ». L’idée est d’optimiser le lissage partie par partie sans que les valeurs hors intervalles n’aient d’influence sur la zone focalisée. On peut définir ces nœuds soit arbitrairement soit en prenant les quantiles de distribution si l’on veut créer des intervalles de même longueur. Dans tous les cas on fixe le découpage suivant pour un nombre de nœuds :
d’indice de parcours
On aura à chaque fois autant de composantes de lissage, ou spline, que l’on fixera de nœuds. Une fois fait, on choisit parmi les principales fonctions de lissage suivantes pour la modélisation :
– La fonction Cubic Smoothing Spline de pénalité de courbure :
, avec et des coefficients constants à fixer au préalable. A noter que si .
– La fonction B-Splines à degrés du polynôme local et degrés de liberté :
, avec si , sinon.
– La fonction Thin-Plate Smooting Spline :
, avec , et coefficients de régression à paramétrer. A noter que si .
– La fonction P-Splines de force de pénalité , à degrés du polynôme local et degrés de liberté :
, où fonction B-splines déjà définie précédemment et coefficients à paramétrer. A noter que si l’on élève à nouveau l’intégrale au carré après calcul, on obtient la fonction Penalized Regression Splines.
– La fonction LOESS de noyau :
, où coefficients à paramétrer.
– La fonction de Base Radiale :
, où coefficients à fixer en amont, , paramètre de contrôle de la largeur de la fonction gaussienne.
– La fonction Tensor Splines de degrés du polynôme local et de degrés de liberté :
, où fonction B-splines déjà définie précédemment et coefficients à paramétrer.
Annexe théorique :
Cette partie de l’article présente une esquisse de la démonstration des fonctions Cubic Smoothing Spline, LOESS et Thin-Plate Smooting Spline à estimer pour déterminer les valeurs de selon la projection .
– On part de la formulation générique pour la fonction Cubic Smoothing Spline de paramètre :
Lorsque alors peut être n’importe quelle fonction d’interpolation de . Si , alors est la fonction des moindres carrés partiels et aucune derivée seconde ne peut être obtenue.
Pour obtenir une version simplifiée de la fonction Cubic Smoothing Spline, on pose un sous-ensemble de fonctions basiques et un vecteur de paramètres à estimer. La fonction d’origine peut alors se réécrire :
, avec et . La solution est alors,
, qui s’apparente à la régression ridge généralisée. Après développement, on obtient ainsi la forme simplifiée de ,
– On part de la formulation générique pour la fonction LOESS de noyau :
La fonction d’estimation est de la forme,
On définit alors la fonction du vecteur de valeurs , la matrice de régression de taille composée des et la matrice diagonale de taille et dont l’élément est . On a alors,
Ce qui donne une expression explicite pour l’estimation de la LOESS.
– On part de la formulation générique pour la fonction Thin-Plate Smooting Spline :
, avec et .
Soit et les fonctions de base de la forme des coordonnées de et de même pour la fonction . Nous définissons alors,
et
, que l’on peut généraliser avec la forme suivante,
Pour estimer cette fonction, l’idée est de résoudre le problème suivant,
, avec fonction de pénalisation visant à stabiliser .
De plus, si le paramètre alors la solution s’approche d’une fonction d’interpolation et si alors elle s’approche d’un plan des moindres carrés. Pour les valeurs intermédiaires de , la solution peut être représentée comme une fonction linéaire dont les coefficients sont obtenus par régression ridge.
La solution est alors de la forme,
, où et .
Exemple :
Soit l’échantillon suivant,
Ci-dessous le nuage de points basé sur ces données,
On cherche donc à modéliser en fonction des valeurs de . Comme il s’agit d’un exemple, on s’affranchira de la construction par apprentissage statistique.
On applique sur une B-spline à degrés de liberté () et degré pour le polynôme local (). Pour commencer, on détermine arbitrairement le vecteur de nœuds, soit les paramétrés, selon un découpage homogène :
Pour chaque nœud, on calcule les valeurs de : , ce qui implique que l’on va devoir développer cinq composantes.
Pour la première composante :
, or par définition si , sinon. On a , .et .
, puisque et .
Ensuite, on calcul la seconde composante avec , et :
, puisque et .
Ensuite, on calcul la troisième composante avec , et :
, puisque et .
Puis, on calcul la quatrième composante avec , et :
, puisque et .
Et enfin, la cinquième composante :
D’où,
On généralise la méthode de calcul à tous les éléments de et on obtient la matrice suivante :
On va maintenant appliquer la régression logistique de sur afin de déterminer les coefficients associés aux composantes B-spline de et à la forme non-transformée de .
On pourra alors consulter cette article qui détaille l’algorithme de calcul : https://lemakistatheux.wordpress.com/category/outils-danalyse-supervisee/la-regression-logistique/
On obtient les résultats qui suivent :
Les performances obtenues peuvent être décrites au travers de la matrice de confusion suivante :
, soit un taux de bonne classification globale de . Enfin, et plus concrètement, on peut afficher le découpage du plan comparé aux classes réelles.
Application sous R :
Soit l’exemple suivant :
E = data.frame(Y = c(rep(0,10),rep(1,10)),
X1 = c(8.1472, 9.0579, 1.2699, 9.1338, 6.3236, 0.9754, 2.7850, 5.4688, 9.5751, 9.6489, 1.5761, 9.7059, 9.5717, 4.8538, 8.0028, 1.4189, 4.2176, 9.1574, 7.9221, 9.5949),
X2 = c(3.1101, 4.1008, 4.7876, 7.0677, 6.0858, 4.9309, 4.0449, 3.0101, 5.9496, 6.8729, 1.0898, 1.9868, 2.9853, 10.0080, 8.9052, 8.0411, 2.0826, 1.0536, 9.0649, 10.0826))
Package et fonction R: https://stat.ethz.ch/R-manual/R-devel/library/mgcv/html/gam.html
La fonction gam du package mgcv permet de réaliser des modèles additifs généralisés. Après chargement du package, on lance la construction du modèle de la manière suivante :
model = gam(Y ~ bs(X1, df = 5, degree = 1) + X2, data = E, family = binomial(link = « logit »))
summary(model)
Parmi les éléments à insérer les plus importants il faut relever :
– La formule définissant variable réponse (à gauche) et variables explicatives (à droite) : ~ , on remarquera que cette dernière contient directement l’application de la fonction de lissage (ici une B-spline) sur tandis que pour on prendra sa forme d’origine. Enfin, à noter que doit être codée ;
– La base de données sur laquelle on souhaite travailler : ;
– La fonction lien : ;
– La production de tous les détails du modèle construit : .
On obtient alors les résultats suivants :
On vérifie :
– La fonction lien : « Family : binomial », « Link function: logit » ;
– Le modèle paramétré : « Y ~ bs(X1, df = 5, degree = 1) + X2 » ;
– Les coefficients associés aux dérivations de et à dans la première colonne , qui sont les mêmes que ceux obtenus lors des calculs manuels (cf section « Exemple ») ;
– Le niveau de significativité de chaque coefficient dans la dernière colonne : « Pr(>|Z|) » ;
– Et les performances du modèle sur les deux dernières lignes.
Application sous SAS :
Soit l’exemple suivant :
data E;
input x1 x2 Y $1.;
cards;
8.1472 3.1101 A
9.0579 4.1008 A
1.2699 4.7876 A
9.1338 7.0677 A
6.3236 6.0858 A
0.9754 4.9309 A
2.7850 4.0449 A
5.4688 3.0101 A
9.5751 5.9495 A
9.6489 6.8729 A
1.5761 1.0898 B
9.7059 1.9868 B
9.5717 2.9853 B
4.8538 10.0080 B
8.0028 8.9052 B
1.4189 8.0411 B
4.2176 2.0826 B
9.1574 1.0536 B
7.9221 9.0649 B
9.5949 10.0826 B
;
run;
Procédure SAS: https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_gam_sect004.htm
La procédure GAM permet de réaliser des modèles additifs généralisés, toutefois elle n’offre pas un choix aussi varié que sous R. On lance la construction du modèle de la manière suivante :
proc gam data = E;
model Y (event = « B ») = spline(X1,df = 5) param(X2) / link = binomial;
ods exclude ConvergenceStatus InputSummary IterSummary ResponseProfile;
run;
Parmi les éléments à insérer les plus importants il faut relever :
– La base de données sur laquelle on souhaite travailler : ;
– La formule définissant variable réponse (à gauche) et variables explicatives (à droite) : , on remarquera que cette dernière contient directement l’application de la fonction de lissage (ici une spline) sur tandis que pour on prendra sa forme d’origine ;
– La fonction lien : ;
– L’ODS output est utilisé afin de ne filtrer que les résultats d’intérêt.
On obtient alors les résultats suivants :
On vérifie :
– Dans le premier tableau, la liste des coefficients associés à chaque variable brute du modèle et , le manque de possibilité comparé à R fait que l’on aura appliqué ici un paramétrage différent non comparable à celui des calculs manuels ;
– Dans le deuxième tableau, le coefficient associé à la transformation de , le manque de possibilité comparé à R fait que l’on aura appliqué ici un paramétrage différent non comparable à celui des calculs manuels ;
– Dans le troisième tableau, les indicateurs de performance de la version transformée de .
Bibliographie :
– The Elements of Statistical Learning de Trevor Hastie, Robert Tibshirani et Jerome Friedman ;
– Data Mining et statistique décisionnelle. L’Intelligence des données de Stéphane Tufféry.