Intuition derrière les interactions des produits tensoriels dans les GAM (package MGCV dans R)

31

Les modèles additifs généralisés sont ceux où par exemple. les fonctions sont lisses et à estimer. Habituellement par des cannelures pénalisées. MGCV est un paquetage en R qui le fait, et l'auteur (Simon Wood) écrit un livre sur son paquetage avec des exemples R. Ruppert et coll. (2003) écrivent un livre beaucoup plus accessible sur des versions plus simples de la même chose.

y=α+f1(x1)+f2(x2)+ei

Ma question concerne les interactions au sein de ces types de modèles. Et si je veux faire quelque chose comme ceci: si nous étions en terrain OLS (où le est juste une bêta) , Je n'aurais aucun problème avec l'interprétation de . Si nous estimons via des splines pénalisées, je n'ai pas non plus de problème d'interprétation dans le contexte additif.

y=α+f1(x1)+f2(x2)+f3(x1×x2)+ei
f 3ff^3

Mais le package MGCV dans GAM a ces choses appelées «lissages de produits tenseurs». Je google "produit tenseur" et mes yeux glaçent immédiatement en essayant de lire les explications que je trouve. Soit je ne suis pas assez intelligent, soit les mathématiques ne sont pas très bien expliquées, ou les deux.

Au lieu de coder

normal = gam(y~s(x1)+s(x2)+s(x1*x2))

un produit tensoriel ferait la même chose (?) en

what = gam(y~te(x1,x2))

quand je fais

plot(what)

ou

vis.gam(what)

J'obtiens une sortie vraiment cool. Mais je n'ai aucune idée de ce qui se passe à l'intérieur de la boîte noire te(), ni comment interpréter la sortie cool susmentionnée. L'autre soir, j'ai fait un cauchemar que je donnais un séminaire. J'ai montré à tout le monde un graphique sympa, ils m'ont demandé ce que cela signifiait, et je ne savais pas. Puis j'ai découvert que je n'avais pas de vêtements.

Quelqu'un pourrait-il m'aider, moi et la postérité, en donnant un peu de mécanique et d'intuition sur ce qui se passe sous le capot ici? Idéalement, en disant un peu sur la différence entre le cas d'interaction additive normale et le cas du tenseur? Points bonus pour tout dire en anglais simple avant de passer aux mathématiques.

utilisateur_générique
la source
exemple simple, tiré du livre de l'auteur du package: bibliothèque (mgcv) data (trees) ct5 <- gam (Volume ~ te (Height, Girth, k = 5), family = Gamma (link = log), data = trees) ct5 vis.gam (ct5) plot (ct5, too.far = 0.15)
generic_user

Réponses:

31

Je vais (essayer de) répondre à cela en trois étapes: d'abord, identifions exactement ce que nous entendons par un lisse univarié. Ensuite, nous décrirons un lissage multivarié (spécifiquement, un lissage de deux variables). Enfin, je ferai de mon mieux pour décrire un produit tensoriel lisse.

1) Lisse univariée

Disons que nous avons des données de réponse que nous conjecturons est une fonction inconnue f d'une variable prédictive x plus une erreur . Le modèle serait:yfxε

y=f(x)+ε

Maintenant, afin d'adapter ce modèle, nous devons identifier la forme fonctionnelle de . Pour ce faire, nous identifions les fonctions de base, qui sont superposées afin de représenter la fonction dans son intégralité. Un exemple très simple est une régression linéaire, dans laquelle les fonctions de base ne sont que et , l'ordonnée à l'origine. En appliquant l'extension de la base, nous avonsf β 2 x β 1ffβ2xβ1

y=β1+β2x+ε

Sous forme matricielle, nous aurions:

Y=Xβ+ε

Où est un vecteur de colonne n-par-1, est une matrice de modèle n-par-2, est un vecteur de colonne 2-par-1 des coefficients du modèle et est un vecteur d'erreurs n-par-1 . a deux colonnes car il y a deux termes dans notre expansion de base: le terme linéaire et l'ordonnée à l'origine.X β ε XYXβεX

Le même principe s'applique pour l'expansion de base dans MGCV, bien que les fonctions de base soient beaucoup plus sophistiquées. Plus précisément, les fonctions de base individuelles n'ont pas besoin d'être définies sur le domaine complet de la variable indépendante . C'est souvent le cas lors de l'utilisation de bases basées sur des nœuds (voir "exemple basé sur des nœuds"x). Le modèle est alors représenté comme la somme des fonctions de base, chacune étant évaluée à chaque valeur de la variable indépendante. Cependant, comme je l'ai mentionné, certaines de ces fonctions de base prennent une valeur nulle en dehors d'un intervalle donné et ne contribuent donc pas à l'expansion de la base en dehors de cet intervalle. À titre d'exemple, considérons une base de spline cubique dans laquelle chaque fonction de base est symétrique par rapport à une valeur différente (nœud) de la variable indépendante - en d'autres termes, chaque fonction de base a la même apparence mais est simplement décalée le long de l'axe de la variable indépendante (Il s'agit d'une simplification excessive, car toute base pratique comprendra également une interception et un terme linéaire, mais j'espère que vous aurez l'idée).

Pour être explicite, une expansion de base de la dimension pourrait ressembler à:i2

y=β1+β2x+β3f1(x)+β4f2(x)+...+βifi2(x)+ε

où chaque fonction est, peut-être, une fonction cubique de la variable indépendante .xfx

L'équation matricielle peut encore être utilisée pour représenter notre modèle. La seule différence est que est maintenant une matrice n par i; c'est-à-dire qu'il a une colonne pour chaque terme dans l'expansion de base (y compris l'interception et le terme linéaire). Étant donné que le processus d'expansion de la base nous a permis de représenter le modèle sous la forme d'une équation matricielle, nous pouvons utiliser les moindres carrés linéaires pour ajuster le modèle et trouver les coefficients . X βY=Xβ+εXβ

Il s'agit d'un exemple de régression non pénalisée, et l'un des principaux atouts du MGCV est son estimation de lissage via une matrice de pénalité et un paramètre de lissage. En d'autres termes, au lieu de:

β=(XTX)-1XTOui

on a:

β=(XTX+λS)-1XTOui

où est une matrice de pénalité quadratique par- et est un paramètre de lissage scalaire. Je n'entrerai pas dans la spécification de la matrice de pénalité ici, mais il devrait suffire de dire que pour une base donnée, l'expansion d'une variable indépendante et la définition d'une pénalité quadratique de "ondulation" (par exemple, une pénalité dérivée seconde), une peut calculer la matrice de pénalité .i i λ SSjejeλS

Le MGCV peut utiliser divers moyens pour estimer le paramètre de lissage optimal . Je n'entrerai pas dans ce sujet car mon objectif ici était de donner un aperçu général de la façon dont un lissage univarié est construit, ce que je pense avoir fait.λ

2) Lisse multivariée

L'explication ci-dessus peut être généralisée à plusieurs dimensions. Revenons à notre modèle qui donne la réponse en fonction des prédicteurs et . La restriction à deux variables indépendantes évitera d'encombrer l'explication avec une notation arcane. Le modèle est alors:f x zyFXz

y=F(X,z)+ε

Maintenant, il devrait être intuitivement évident que nous allons représenter avec une expansion de base (c'est-à-dire une superposition de fonctions de base) comme nous l'avons fait dans le cas univarié de ci-dessus. Il devrait également être évident qu'au moins une, et presque certainement beaucoup plus, de ces fonctions de base doivent être des fonctions de et de (si ce n'était pas le cas, alors implicitement serait séparable de telle sorte que ). Une illustration visuelle d'une base spline multidimensionnelle peut être trouvée ici . Une expansion bidimensionnelle complète de la dimension pourrait ressembler à:f ( x ) x z f f ( x , z ) = f x ( x ) + f z ( z ) i - 3F(X,z)F(X)XzFF(X,z)=FX(X)+Fz(z)je-3

y=β1+β2X+β3z+β4F1(X,z)+...+βjeFje-3(X,z)+ε

Je pense qu'il est assez clair que nous pouvons toujours représenter cela sous forme de matrice avec:

Oui=Xβ+ε

en évaluant simplement chaque fonction de base à chaque combinaison unique de et . La solution est toujours:zXz

β=(XTX)-1XTOui

Le calcul de la matrice de pénalité dérivée seconde est très similaire à celui du cas univarié, sauf qu'au lieu d'intégrer la dérivée seconde de chaque fonction de base par rapport à une seule variable, nous intégrons la somme de toutes les dérivées secondes (y compris partielles) en respectant à toutes les variables indépendantes. Les détails de ce qui précède ne sont pas particulièrement importants: le fait est que nous pouvons toujours construire la matrice de pénalités et utiliser la même méthode pour obtenir la valeur optimale du paramètre de lissage , et étant donné ce paramètre de lissage, le vecteur de coefficients est toujours:λSλ

β=(XTX+λS)-1XTOui

Or, ce lissage bidimensionnel a une pénalité isotrope : cela signifie qu'une seule valeur de s'applique dans les deux sens. Cela fonctionne très bien lorsque et sont à peu près à la même échelle, comme une application spatiale. Mais que se passe-t-il si nous remplaçons la variable spatiale par la variable temporelle ? Les unités de peuvent être beaucoup plus grandes ou plus petites que les unités de , ce qui peut gêner l'intégration de nos deuxièmes dérivées car certaines de ces dérivées contribueront de manière disproportionnée à l'intégration globale (par exemple, si nous mesurons en nanosecondes et x z z t t x t x t x xλXzzttXtXau cours des années-lumière, l'intégrale de la dérivée seconde par rapport à peut être considérablement plus grande que l'intégrale de la dérivée seconde par rapport à , et ainsi la "ondulation" le long de la direction peut être largement non pénalisée). La diapositive 15 de la "boîte à outils lisse" que j'ai liée contient plus de détails sur ce sujet.tXX

Il est à noter que nous n'avons pas décomposé les fonctions de base en bases marginales de et . L'implication ici est que les lissages multivariés doivent être construits à partir de bases supportant plusieurs variables. Le produit tenseur lisse la construction de bases multivariées à partir de bases marginales univariées, comme je l'explique ci-dessous.zXz

3) Le produit tenseur lisse

Les lissages de produits Tensor abordent la question de la modélisation des réponses aux interactions de plusieurs entrées avec différentes unités. Supposons que nous ayons une réponse qui est une fonction de la variable spatiale et de la variable temporelle . Notre modèle est alors:f x tyFXt

y=F(X,t)+ε

Ce que nous aimerions faire, c'est construire une base bidimensionnelle pour les variables et . Ce sera beaucoup plus facile si nous pouvons représenter comme:t fXtF

F(X,t)=FX(X)Ft(t)

Dans un sens algébrique / analytique, ce n'est pas nécessairement possible. Mais rappelez-vous, nous discrétisons les domaines de et (imaginez un "réseau" bidimensionnel défini par les emplacements des nœuds sur les axes et ) de telle sorte que la "vraie" fonction soit représentée par la superposition des fonctions de base . Tout comme nous avons supposé qu'une fonction univariée très complexe peut être approximée par une simple fonction cubique sur un intervalle spécifique de son domaine, nous pouvons supposer que la fonction non séparable peut être approximée par le produit de fonctions plus simples ett x t f f ( x , t ) f x ( x ) f t ( t )XtXtFF(X,t)FX(X)Ft(t) sur un intervalle - à condition que notre choix de dimensions de base rend ces intervalles suffisamment petits!

Notre expansion de base, étant donné une base dimensionnelle en et une base dimensionnelle en , ressemblerait alors à:x j tjeXjt

y=β1+β2X+β3FX1(X)+β4FX2(X)+...+βjeFX(je-3)(X)+βje+1t+βje+2tX+βje+3tFX1(X)+βje+4tFX2(X)+...+β2jetFX(je-3)(X)+β2je+1Ft1(t)+β2je+2Ft1(t)X+β2je+3Ft1(t)FX1(X)+βje+4Ft1(t)FX2(X)+...+β2jeFt1(t)FX(je-3)(X)++βjejFt(j-3)(t)FX(je-3)(X)+ε

Ce qui peut être interprété comme un produit tensoriel. Imaginons que nous avons évalué chaque fonction de base en et , construisant ainsi par n-i-n et le modèle par j matrices et , respectivement. Nous pourrions alors calculer le produit tensoriel par- de ces deux matrices modèles et réorganiser en colonnes, de sorte que chaque colonne représente une combinaison unique . Rappelons que les matrices du modèle marginal avaient respectivement des colonnes et . Ces valeurs correspondent à leurs dimensions de base respectives. Notre nouvelle base à deux variables devrait alors avoir la dimensiont X T n 2 i j X T i j i j i jXtXTn2jej XTjejjejjej, et donc le même nombre de colonnes dans sa matrice de modèle.

REMARQUE: je voudrais souligner que puisque nous avons explicitement construit les fonctions de base du produit tensoriel en prenant les produits des fonctions de base marginales, les bases de produit tensoriel peuvent être construites à partir de bases marginales de tout type. Ils n'ont pas besoin de prendre en charge plus d'une variable, contrairement au lissage multivarié discuté ci-dessus.

En réalité, ce processus entraîne une expansion de base globale de la dimension car la multiplication complète comprend la multiplication de chaque fonction de base par l'ordonnée à l'origine (nous soustrayons donc ) ainsi que la multiplication de chaque fonction de base par l'ordonnée à l'origine (donc nous soustrayons ), mais nous devons rajouter l'ordonnée à l'origine par elle-même (nous ajoutons donc 1). C'est ce que l'on appelle l'application d'une contrainte d'identifiabilité.t β x 1 j x β t 1 ijej-je-j+1tβX1jXβt1je

Nous pouvons donc représenter cela comme:

y=β1+β2X+β3t+β4F1(X,t)+β5F2(X,t)+...+βjej-je-j+1Fjej-je-j-2(X,t)+ε

Où chacune des fonctions de base multivariées est le produit d'une paire de fonctions de base marginales et . Encore une fois, il est assez clair d'avoir construit cette base que nous pouvons toujours représenter cela avec l'équation matricielle:x tFXt

Oui=Xβ+ε

Laquelle a (encore) la solution:

β=(XTX)-1XTOui

Où la matrice du modèle a colonnes. Quant aux matrices de pénalités et , elles sont construites séparément pour chaque variable indépendante comme suit:i j - i - j + 1 J x J tXjej-je-j+1JXJt

JX=βTjejSXβ

et,

Jt=βTStjejeβ

Cela permet une pénalité anisotrope globale (différente dans chaque direction) (Remarque: les pénalités sur la dérivée seconde de sont additionnées à chaque nœud sur l' axe , et vice versa). Les paramètres de lissage et peuvent maintenant être estimés de la même manière que le paramètre de lissage unique pour les lissés univariés et multivariés. Le résultat est que la forme globale d'un produit tensoriel lisse est invariante à la mise à l'échelle de ses variables indépendantes.t λ x λ tXtλXλt

Je recommande de lire toutes les vignettes sur le site Web de MGCV, ainsi que " Modèles additifs généralisés: et introduction avec R. " Vive Simon Wood.

Josh
la source
Bonne réponse. J'ai depuis appris beaucoup plus que je ne le savais il y a trois ans. Mais je ne suis pas sûr d'avoir compris il y a 3 ans ce que vous avez écrit aujourd'hui. Ou peut-être que je l'aurais fait. Je pense que le point de départ est de penser à une expansion de base dans de nombreuses dimensions comme un «filet» à travers l'espace variable. Je suppose que les tenseurs peuvent être décrits comme un filet avec des motifs rectangulaires ... Et peut-être différentes forces de "cisaillement" tirant de chaque direction.
generic_user
Sur une autre note, je vous déconseille de penser que le produit tensoriel représente quelque chose d'espace. En effet, le produit tensoriel réel des fonctions de base marginales et comprendra des tonnes de zéros qui représentent l'évaluation des fonctions de base en dehors de leur plage définie. Le produit tensoriel réel sera généralement très clairsemé. tXt
Josh
1
Merci pour ce super résumé! Juste une remarque: l'équation après "Notre expansion de base" n'est pas complètement correcte. Il donne les fonctions de base correctes, mais il donne une paramétrisation où les paramètres correspondants sont de forme produit ( ). βXjeβtj
jarauh
1
@Josh Ok, j'ai essayé. Ce n'est pas facile de l'avoir correct et facile à comprendre en même temps (et de suivre la notation de quelqu'un d'autre). Soit dit en passant, le lien vers smooth-toolbox.pdf semble être rompu.
jarauh
1
Cela semble bon. Apparemment, votre modification a été rejetée, mais j'ai annulé le rejet et l'ai approuvé. Quand j'ai commencé à écrire cette réponse, je ne savais pas à quel point les extensions seraient confuses. Je devrais probablement revenir en arrière et le réécrire avec la notation pi (produit) un de ces jours.
Josh