Intuición detrás de las interacciones del producto tensorial en GAM (paquete MGCV en R)

30

Los modelos aditivos generalizados son aquellos donde

y=α+f1(x1)+f2(x2)+ei
por ejemplo. Las funciones son suaves y se deben estimar. Generalmente por splines penalizadas. MGCV es un paquete en R que lo hace, y el autor (Simon Wood) escribe un libro sobre su paquete con ejemplos de R. Ruppert y col. (2003) escriben un libro mucho más accesible sobre versiones más simples de lo mismo.

Mi pregunta es sobre las interacciones dentro de este tipo de modelos. ¿Qué pasa si quiero hacer algo como lo siguiente:

y=α+f1(x1)+f2(x2)+f3(x1×x2)+ei
si estábamos en OLS tierra (donde la f es sólo una beta), no tendría ningún problema con la interpretación f 3 . Si estimamos a través de splines penalizadas, tampoco tengo problemas con la interpretación en el contexto aditivo. f^3

Pero el paquete MGCV en GAM tiene estas cosas llamadas "suavizadores de productos tensoriales". Busco en Google "producto tensorial" y mis ojos se ven de inmediato tratando de leer las explicaciones que encuentro. O no soy lo suficientemente inteligente o las matemáticas no se explican muy bien, o ambas.

En lugar de codificar

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

un producto tensor haría lo mismo (?) por

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

Cuando lo hago

plot(what)

o

vis.gam(what)

Tengo una salida realmente genial. Pero no tengo idea de lo que está sucediendo dentro de la caja negra que es te(), ni cómo interpretar la salida genial mencionada anteriormente. La otra noche tuve la pesadilla de dar un seminario. Les mostré a todos un gráfico genial, me preguntaron qué significaba y no lo sabía. Entonces descubrí que no tenía ropa puesta.

¿Podría alguien ayudarme tanto a mí como a la posteridad, dando un poco de mecánica e intuición sobre lo que está sucediendo debajo del capó aquí? ¿Idealmente al decir un poco sobre la diferencia entre el caso normal de interacción aditiva y el caso tensorial? Puntos de bonificación por decir todo en inglés simple antes de pasar a las matemáticas.

genérico_usuario
fuente
ejemplo simple, tomado del paquete del libro del autor: datos de la biblioteca (mgcv) (árboles) ct5 <- gam (Volumen ~ te (Altura, circunferencia, k = 5), familia = Gamma (enlace = registro), datos = árboles) ct5 vis.gam (ct5) plot (ct5, too.far = 0.15)
generic_user

Respuestas:

30

Voy a (intentar) responder esto en tres pasos: primero, identifiquemos exactamente lo que queremos decir con un suave univariante. A continuación, describiremos un suavizado multivariado (específicamente, un suavizado de dos variables). Finalmente, haré mi mejor intento de describir un producto tensorial sin problemas.

1) Univariante suave

Digamos que tenemos algunos datos de respuesta que conjeturamos que es una función desconocida f de una variable predictora x más algún error ε . El modelo sería:yfXε

y=f(x)+ε

Ahora, para ajustar este modelo, tenemos que identificar la forma funcional de . La forma en que hacemos esto es identificando las funciones básicas, que se superponen para representar la función f en su totalidad. Un ejemplo muy simple es una regresión lineal, en la cual las funciones básicas son solo β 2 x y β 1 , la intersección. Aplicando la base de expansión, tenemosffβ2xβ1

y=β1+β2X+ε

En forma de matriz, tendríamos:

Y=Xβ+ε

Donde es un vector de columna n-por-1, X es una matriz modelo n-por-2, β es un vector de columna 2-por-1 de coeficientes del modelo, y ε es un vector de errores de columna n-por-1 . X tiene dos columnas porque hay dos términos en nuestra expansión de base: el término lineal y la intersección.YXβεX

El mismo principio se aplica para la expansión de la base en MGCV, aunque las funciones básicas son mucho más sofisticadas. Específicamente, las funciones de base individual no necesitan definirse sobre el dominio completo de la variable independiente . Este suele ser el caso cuando se utilizan bases basadas en nudos (ver "ejemplo basado en nudos"x) El modelo se representa como la suma de las funciones básicas, cada una de las cuales se evalúa en cada valor de la variable independiente. Sin embargo, como mencioné, algunas de estas funciones básicas toman un valor de cero fuera de un intervalo dado y, por lo tanto, no contribuyen a la expansión de la base fuera de ese intervalo. Como ejemplo, considere una base spline cúbica en la que cada función base es simétrica respecto a un valor diferente (nudo) de la variable independiente; en otras palabras, cada función base se ve igual pero simplemente se desplaza a lo largo del eje de la variable independiente (esto es una simplificación excesiva, ya que cualquier base práctica también incluirá una intercepción y un término lineal, pero espero que entiendas la idea).

Para ser explícito, una expansión básica de la dimensión podría verse así:i2

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

donde cada función es, quizás, una función cúbica de la variable independiente x .fx

La ecuación matricial todavía se puede utilizar para representar nuestro modelo. La única diferencia es que X es ahora una matriz n-por-i; es decir, tiene una columna para cada término en la expansión de base (incluido el término de intercepción y lineal). Dado que el proceso de expansión de bases nos ha permitido representar el modelo en forma de una ecuación matricial, podemos usar mínimos cuadrados lineales para ajustar el modelo y encontrar los coeficientes β .Y=Xβ+εXβ

Este es un ejemplo de regresión sin potencializar, y una de las principales fortalezas de MGCV es su estimación de suavidad a través de una matriz de penalización y un parámetro de suavizado. En otras palabras, en lugar de:

β=(XTX)1XTY

tenemos:

β=(XTX+λS)1XTY

donde es una matriz de penalización cuadrática i -by- i y λ es un parámetro de suavizado escalar. No entraré en la especificación de la matriz de penalización aquí, pero debería ser suficiente decir que para cualquier expansión de base dada de alguna variable independiente y definición de una penalización de "meneo" cuadrática (por ejemplo, una penalización de segunda derivada), uno puede calcular la matriz de penalización S .SiiλS

MGCV puede usar varios medios para estimar el parámetro de suavizado óptimo . No voy a entrar en ese tema ya que mi objetivo aquí era dar una visión general de cómo se construye una suavidad univariante, lo que creo que he hecho.λ

2) Multivariante suave

La explicación anterior se puede generalizar a múltiples dimensiones. Volvamos a nuestro modelo que da la respuesta como una función f de predictores x y z . La restricción a dos variables independientes evitará abarrotar la explicación con notación arcana. El modelo es entonces:yfxz

y=f(x,z)+ε

Ahora, debería ser intuitivamente obvio que vamos a representar con una expansión básica (es decir, una superposición de funciones básicas) tal como lo hicimos en el caso univariante de f ( x ) anterior. También debería ser obvio que al menos una, y casi seguramente muchas más, de estas funciones básicas deben ser funciones de x y z (si este no fuera el caso, entonces implícitamente f sería separable de tal manera que f ( x , z ) = f x ( x ) + ff(x,z)f(x)xzf ). Una ilustración visual de una base spline multidimensional se puede encontraraquí. Una expansión de base bidimensional completa de la dimensión i - 3 podría verse así:f(x,z)=fx(x)+fz(z)i3

y=β1+β2x+β3z+β4f1(x,z)+...+βifi3(x,z)+ε

Creo que está bastante claro que todavía podemos representar esto en forma de matriz con:

Y=Xβ+ε

simplemente evaluando cada función base en cada combinación única de y z . La solución sigue siendo:xz

β=(XTX)1XTY

Calcular la matriz de penalización de la segunda derivada es muy similar a la del caso univariante, excepto que en lugar de integrar la segunda derivada de cada función base con respecto a una sola variable, integramos la suma de todas las segundas derivadas (incluidas las parciales) con respecto a todas las variables independientes. Los detalles de lo anterior no son especialmente importantes: el punto es que aún podemos construir la matriz de penalización y usar el mismo método para obtener el valor óptimo del parámetro de suavizado λ , y dado ese parámetro de suavizado, el vector de coeficientes sigue siendo:Sλ

β=(XTX+λS)1XTY

Ahora, este suavizado bidimensional tiene una penalización isotrópica : esto significa que se aplica un solo valor de en ambas direcciones. Esto funciona bien cuando tanto x como z están en aproximadamente la misma escala, como una aplicación espacial. Pero, ¿qué sucede si reemplazamos la variable espacial z con la variable temporal t ? Las unidades de t pueden ser mucho más grandes o más pequeñas que las unidades de x , y esto puede alterar la integración de nuestras segundas derivadas porque algunos de esos derivados contribuirán de manera desproporcionada a la integración general (por ejemplo, si medimos t en nanosegundos y Xλxzzttxtxen años luz, la integral de la segunda derivada con respecto a puede ser mucho más grande que la integral de la segunda derivada con respecto a x , y por lo tanto la "ondulación" a lo largo de la dirección x puede quedar en gran parte sin convertir). La diapositiva 15 de la "caja de herramientas suave" que vinculé tiene más detalles sobre este tema.txx

Vale la pena señalar que no descomponemos las funciones básicas en bases marginales de y z . La implicación aquí es que los suavizados multivariados deben construirse a partir de bases que admitan múltiples variables. El producto tensor suaviza la construcción de bases multivariadas a partir de bases marginales univariadas, como explico a continuación.xz

3) El producto tensor suaviza

Los productos de tensor suavizan el problema de modelar respuestas a interacciones de múltiples entradas con diferentes unidades. Supongamos que tenemos una respuesta que es una función f de la variable espacial xy la variable temporal t . Nuestro modelo es entonces:yfxt

y=f(x,t)+ε

Lo que nos gustaría hacer es construir una base bidimensional para las variables y t . Esto será mucho más fácil si podemos representar f como:xtf

f(x,t)=fx(x)ft(t)

En un sentido algebraico / analítico, esto no es necesariamente posible. Pero recuerde, estamos discretizar los dominios de y t (imaginar una de dos dimensiones "celosía" definida por las ubicaciones de nudos en la x y t ejes) de tal manera que la "verdadera" función f está representado por la superposición de funciones de base . Así como asumimos que una función univariada muy compleja puede ser aproximada por una función cúbica simple en un intervalo específico de su dominio, podemos suponer que la función no separable f ( x , t ) puede ser aproximada por el producto de funciones más simples f x ( xxtxtff(x,t) y f t ( t ) en un intervalo, siempre que nuestra elección de dimensiones base haga que esos intervalos sean lo suficientemente pequeñosfx(x)ft(t)

Nuestra expansión de base, dada una base -dimensional en x y j -dimensional en t , se vería así:ixjt

y=β1+β2x+β3fx1(x)+β4fx2(x)+...+βifx(i3)(x)+βi+1t+βi+2tx+βi+3tfx1(x)+βi+4tfx2(x)+...+β2itfx(i3)(x)+β2i+1ft1(t)+β2i+2ft1(t)x+β2i+3ft1(t)fx1(x)+βi+4ft1(t)fx2(x)+...+β2ift1(t)fx(i3)(x)++βijft(j3)(t)fx(i3)(x)+ε

xtXTn2ij XTijijij

NOTA: Me gustaría señalar que, dado que construimos explícitamente las funciones de base de producto tensorial tomando productos de funciones de base marginal, las bases de producto tensorial pueden construirse a partir de bases marginales de cualquier tipo. No necesitan admitir más de una variable, a diferencia del suave multivariado discutido anteriormente.

ijij+1tβx1jxβt1i

Entonces podemos representar esto como:

y=β1+β2x+β3t+β4f1(x,t)+β5f2(x,t)+...+βijij+1fijij2(x,t)+ε

fxt

Y=Xβ+ε

Cuál (todavía) tiene la solución:

β=(XTX)1XTY

Xijij+1JxJt

Jx=βTIjSxβ

y,

Jt=βTStIiβ

xtλxλt

Recomiendo leer todas las viñetas en el sitio web de MGCV, así como " Modelos aditivos generalizados: e introducción con R ". Larga vida a Simon Wood.

Josh
fuente
Buena respuesta. Desde entonces, he aprendido mucho más de lo que sabía hace tres años. Pero no estoy seguro de haber entendido hace 3 años lo que escribiste hoy. O tal vez lo hubiera hecho. Creo que el lugar para comenzar es pensar en una expansión de base en muchas dimensiones como una "red" a través del espacio variable. Supongo que los tensores se pueden describir como una red con patrones rectangulares ... Y tal vez diferentes fuerzas de "corte" que tiren de cada dirección.
generic_user
xt
1
βxiβtj
1
@ Josh Ok, lo intenté. No es fácil tenerlo correcto y fácil de entender al mismo tiempo (y seguir la notación de otra persona). Por cierto, el enlace a smooth-toolbox.pdf parece estar roto.
jarauh
1
Se ve bien. Al parecer, su edición fue rechazada, pero anulé el rechazo y lo aprobé. Cuando comencé a escribir esta respuesta no me di cuenta de cuán confusas se verían las expansiones. Probablemente debería volver y reescribirlo con notación pi (producto) uno de estos días.
Josh