Intuizione dietro le interazioni del prodotto tensore nei GAM (pacchetto MGCV in R)


30

I modelli di additivi generalizzati sono quelli in cui per esempio. le funzioni sono fluide e da stimare. Di solito da spline penalizzate. MGCV è un pacchetto in R che lo fa, e l'autore (Simon Wood) scrive un libro sul suo pacchetto con esempi R. Ruppert, et al. (2003) scrive un libro molto più accessibile sulle versioni più semplici della stessa cosa.

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

La mia domanda riguarda le interazioni all'interno di questo tipo di modelli. E se volessi fare qualcosa del tipo: se fossimo nella terra degli OLS (dove la è solo una beta) , Non avrei problemi a interpretare . Se stimiamo tramite spline penalizzate, non ho problemi di interpretazione nel contesto additivo.

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

Ma il pacchetto MGCV in GAM ha queste cose chiamate "smoothing del prodotto tensore". Io google "prodotto tensore" e i miei occhi si glassano immediatamente cercando di leggere le spiegazioni che trovo. O non sono abbastanza intelligente o la matematica non è spiegata molto bene, o entrambi.

Invece di scrivere codice

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

un prodotto tensore farebbe la stessa cosa (?) entro

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

quando io faccio

plot(what)

o

vis.gam(what)

Ottengo risultati davvero interessanti. Ma non ho idea di cosa stia succedendo all'interno della scatola nera te(), né di come interpretare l'output di cui sopra. Proprio l'altra sera ho avuto un incubo che stavo dando un seminario. Ho mostrato a tutti un bel grafico, mi hanno chiesto cosa significasse e non lo sapevo. Poi ho scoperto che non avevo vestiti addosso.

Qualcuno potrebbe aiutare sia me che i posteri, dando un po 'di meccanica e intuizione su cosa sta succedendo sotto il cofano qui? Idealmente dicendo qualcosa sulla differenza tra il normale caso di interazione additiva e il caso tensore? Punti bonus per dire tutto in inglese semplice prima di passare alla matematica.


semplice esempio, tratto dal libro dell'autore del pacchetto: libreria (mgcv) dati (alberi) ct5 <- gam (Volume ~ te (Altezza, Circonferenza, k = 5), famiglia = Gamma (link = log), dati = alberi) ct5 vis.gam (ct5) trama (ct5, too.far = 0.15)
generic_user

Risposte:


30

Proverò (a provare) a rispondere in tre passaggi: in primo luogo, identifichiamo esattamente cosa intendiamo per smooth univariato. Successivamente, descriveremo un smooth multivariato (in particolare, un smooth di due variabili). Infine, farò del mio meglio per descrivere senza problemi un prodotto tensore.

1) Univariato liscio

Supponiamo di avere alcuni dati di risposta che ipotizziamo sia una funzione sconosciuta f di una variabile predittore x più un errore . Il modello sarebbe:yfxε

y=f(x)+ε

Ora, per adattarci a questo modello, dobbiamo identificare la forma funzionale di . Il modo in cui lo facciamo è identificando le funzioni di base, che sono sovrapposte per rappresentare la funzione f nella sua interezza. Un esempio molto semplice è una regressione lineare, in cui le funzioni di base sono solo β 2 x e β 1 , l'intercetta. Applicando l'espansione di base, abbiamoffβ2xβ1

y=β1+β2X+ε

In forma di matrice, avremmo:

Y=Xβ+ε

Dove è un vettore di colonna n per 1, X è una matrice di modello n per 2, β è un vettore di colonna 2 per 1 di coefficienti di modello e ε è un vettore di colonna n per 1 di errori . X ha due colonne perché ci sono due termini nella nostra espansione di base: il termine lineare e l'intercetta.YXβεX

Lo stesso principio si applica per l'espansione della base in MGCV, sebbene le funzioni di base siano molto più sofisticate. In particolare, le funzioni di base individuali non devono essere definite su tutto il dominio della variabile indipendente . Questo è spesso il caso quando si usano basi basate su nodi (vedere "esempio basato su nodi"X). Il modello viene quindi rappresentato come la somma delle funzioni di base, ognuna delle quali viene valutata ad ogni valore della variabile indipendente. Tuttavia, come ho già detto, alcune di queste funzioni di base assumono un valore pari a zero al di fuori di un determinato intervallo e quindi non contribuiscono all'espansione della base al di fuori di tale intervallo. Ad esempio, considera una base spline cubica in cui ciascuna funzione di base è simmetrica rispetto a un diverso valore (nodo) della variabile indipendente - in altre parole, ogni funzione di base ha lo stesso aspetto ma viene semplicemente spostata lungo l'asse della variabile indipendente (questa è una semplificazione eccessiva, poiché qualsiasi base pratica includerà anche un'intercettazione e un termine lineare, ma spero che tu abbia l'idea).

Ad essere espliciti, un'espansione di base della dimensione potrebbe apparire come:io-2

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

dove ogni funzione è, forse, una funzione cubica della variabile indipendente x .fx

L'equazione di matrice può ancora essere usata per rappresentare il nostro modello. L'unica differenza è che X ora è una matrice n-by-i; vale a dire, ha una colonna per ogni termine nell'espansione di base (incluso l'intercetta e il termine lineare). Poiché il processo di espansione della base ci ha permesso di rappresentare il modello sotto forma di un'equazione di matrice, possiamo usare i minimi quadrati lineari per adattare il modello e trovare i coefficienti β .Y=Xβ+εXβ

Questo è un esempio di regressione non aperta e uno dei principali punti di forza di MGCV è la sua stima della scorrevolezza tramite una matrice di penalità e un parametro di livellamento. In altre parole, invece di:

β=(XTX)1XTY

noi abbiamo:

β=(XTX+λS)1XTY

dove è una matrice di penalità quadratica i -by- i e λ è un parametro di livellamento scalare. Non entrerò nella specifica della matrice di penalità qui, ma dovrebbe essere sufficiente dire che per ogni data base l'espansione di una variabile indipendente e la definizione di una penalità quadratica di "oscillazione" (ad esempio, una penalità di seconda derivata), una in grado di calcolare la matrice di rigore S .SiiλS

MGCV può utilizzare vari mezzi per stimare il parametro di livellamento ottimale . Non affronterò questo argomento poiché il mio obiettivo qui era quello di fornire un'ampia panoramica di come è costruito un liscio univariato, cosa che credo di aver fatto.λ

2) Multivariata liscia

La spiegazione sopra può essere generalizzata a più dimensioni. Torniamo al nostro modello che dà la risposta come una funzione f di predittori x e z . La restrizione a due variabili indipendenti eviterà di ingombrare la spiegazione con notazione arcana. Il modello è quindi:yfxz

y=f(x,z)+ε

Ora, dovrebbe essere intuitivamente ovvio che rappresenteremo con un'espansione di base (cioè una sovrapposizione di funzioni di base) proprio come abbiamo fatto nel caso univariato di f ( x ) sopra. Dovrebbe anche essere ovvio che almeno una, e quasi sicuramente molte altre, di queste funzioni di base devono essere funzioni di x e z (se così non fosse, allora implicitamente f sarebbe separabile in modo tale che f ( x , z ) = f x ( x ) + ff(x,z)f(x)xzf ). Un'illustrazione visiva di una base spline multidimensionale può essere trovataqui. Un'espansione completa a due dimensioni della dimensione i - 3 potrebbe assomigliare a:f(x,z)=fx(x)+fz(z)i3

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

Penso che sia abbastanza chiaro che possiamo ancora rappresentarlo in forma di matrice con:

Y=Xβ+ε

valutando semplicemente ogni funzione base ad ogni combinazione unica di e z . La soluzione è ancora:xz

β=(XTX)1XTY

Il calcolo della seconda matrice di penalità derivata è molto simile al caso univariato, tranne per il fatto che invece di integrare la seconda derivata di ciascuna funzione di base rispetto a una singola variabile, integriamo la somma di tutte le seconde derivate (inclusi i parziali) rispetto a tutte le variabili indipendenti. I dettagli di quanto sopra non sono particolarmente importanti: il punto è che possiamo ancora costruire la matrice di penalità e usare lo stesso metodo per ottenere il valore ottimale del parametro di livellamento λ , e dato quel parametro di livellamento, il vettore dei coefficienti è ancora:Sλ

β=(XTX+λS)1XTY

Ora, questo liscio bidimensionale ha una penalità isotropica : questo significa che un singolo valore di applica in entrambe le direzioni. Funziona bene quando sia x che z sono approssimativamente sulla stessa scala, come un'applicazione spaziale. E se sostituiamo la variabile spaziale z con la variabile temporale t ? Le unità di t possono essere molto più grandi o più piccole delle unità di x , e questo può buttare via l'integrazione dei nostri secondi derivati ​​perché alcuni di questi derivati ​​contribuiranno in modo sproporzionato all'integrazione complessiva (ad esempio, se misuriamo t in nanosecondi e Xλxzzttxtxin anni luce, l'integrale della seconda derivata rispetto a può essere notevolmente più grande dell'integrale della seconda derivata rispetto a x , e quindi la "oscillazione" lungo la direzione x può rimanere in gran parte non aperta. La diapositiva 15 della "cassetta degli attrezzi liscia" che ho collegato ha maggiori dettagli su questo argomento.txx

Vale la pena notare che non abbiamo scomponiamo le funzioni di base in basi marginali di e z . L'implicazione qui è che i smooth multivariati devono essere costruiti da basi che supportano più variabili. I prodotti tensore agevolano la costruzione di basi multivariate da basi univariate marginali, come spiego di seguito.xz

3) Il prodotto tensore leviga

I smoothing dei prodotti tensore affrontano il problema della modellazione delle risposte alle interazioni di più input con unità diverse. Supponiamo di avere una risposta che è una funzione f della variabile spaziale xe della variabile temporale t . Il nostro modello è quindi:yfxt

y=f(x,t)+ε

Quello che vorremmo fare è costruire una base bidimensionale per le variabili e t . Questo sarà molto più semplice se possiamo rappresentare f come:xtf

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

In senso algebrico / analitico, questo non è necessariamente possibile. Ma ricorda, stiamo discretizzando i domini di e t (immagina un "reticolo" bidimensionale definito dalle posizioni dei nodi sugli assi x e t ) in modo tale che la funzione "vera" f sia rappresentata dalla sovrapposizione di funzioni di base . Proprio come abbiamo ipotizzato che una funzione univariata molto complessa possa essere approssimata da una semplice funzione cubica su un intervallo specifico del suo dominio, possiamo supporre che la funzione non separabile f ( x , t ) possa essere approssimata dal prodotto di funzioni più semplici f x ( xxtxtff(x,t) e f t ( t ) su un intervallo, a condizione che la nostra scelta delle dimensioni di base renda tali intervalli sufficientemente piccoli!fx(x)ft(t)

La nostra espansione base, dato un base dimensionale in x e j base dimensionale in t , sarebbe quindi simile: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)+ε

Che può essere interpretato come un prodotto tensore. Immagina di aver valutato ciascuna funzione di base in e t , costruendo in tal modo le matrici dei modelli n e X e T rispettivamente n. Potremmo quindi calcolare il n 2 -by- i j prodotto tensoriale X T di queste due matrici modello e riorganizzare in colonne, in modo che ogni colonna rappresentava una combinazione unica i j . Ricordiamo che le matrici modello marginali avevano i e jxtXTn2ij XTijijcolonne, rispettivamente. Questi valori corrispondono alle rispettive dimensioni di base. La nostra nuova base a due variabili dovrebbe quindi avere la dimensione , e quindi lo stesso numero di colonne nella sua matrice del modello.ij

NOTA: vorrei sottolineare che, poiché abbiamo costruito esplicitamente le funzioni di base del prodotto tensore prendendo i prodotti di funzioni di base marginale, le basi del prodotto tensore possono essere costruite da basi marginali di qualsiasi tipo. Non hanno bisogno di supportare più di una variabile, a differenza del smooth multivariato di cui sopra.

In realtà, questo processo si traduce in un'espansione di base complessiva della dimensione perché la moltiplicazione completa include la moltiplicazione di ogni funzione di base t per l'intercetta x β x 1 (quindi sottraggiamo j ) oltre a moltiplicare ogni Funzione base x dell'intercetta t β t 1 (quindi sottraggiamo i ), ma dobbiamo aggiungere nuovamente l'intercetta da sola (quindi aggiungiamo 1). Questo è noto come applicazione di un vincolo di identificabilità.ijij+1tβx1jxβt1i

Quindi possiamo rappresentarlo come:

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

Dove ciascuna delle funzioni di base multivariata è il prodotto di una coppia di funzioni di base marginali x e t . Ancora una volta, è abbastanza chiaro avendo costruito questa base che possiamo ancora rappresentarlo con l'equazione della matrice:fxt

Y=Xβ+ε

Quale (ancora) ha la soluzione:

β=(XTX)1XTY

Dove la matrice del modello ha i j - i - j + 1 colonne. Per quanto riguarda le matrici di penalità J x e J t , queste sono costruite separatamente per ogni variabile indipendente come segue:Xijij+1JxJt

Jx=βTIjSxβ

e,

Jt=βTStIiβ

Ciò consente una penalità anisotropica generale (diversa in ciascuna direzione) (Nota: le penalità sulla seconda derivata di vengono sommate ad ogni nodo sull'asse t e viceversa). I parametri di livellamento λ x e λ t possono ora essere stimati più o meno allo stesso modo in cui il singolo parametro di livellamento era per i smooth univariati e multivariati. Il risultato è che la forma complessiva di un prodotto tensore uniforme è invariante al riscalamento delle sue variabili indipendenti.xtλxλt

Consiglio di leggere tutte le vignette sul sito Web MGCV, nonché " Modelli di additivi generalizzati: e introduzione con R ". Lunga vita a Simon Wood.


Bella risposta. Da allora ho imparato molto più di quanto sapessi tre anni fa. Ma non sono sicuro che avrei capito 3 anni fa quello che hai scritto oggi. O forse avrei. Penso che il punto di partenza sia pensare a un'espansione di base in molte dimensioni come una "rete" attraverso lo spazio variabile. Suppongo che i tensori possano essere descritti come una rete con motivi rettangolari ... E forse forze di "taglio" diverse che tirano da ogni direzione.
generic_user

In un'altra nota, ti metterei in guardia dal pensare al prodotto tensore come a rappresentare qualcosa di spaziale. Questo perché l'attuale prodotto tensore del marginaleX e t basis functions will include tons of zeros which represent the evaluation of basis functions outside of their defined range. The actual tensor product will usually be very sparse.
Josh

1
Thanks for this great summary! Just one remark: The equation after "Our basis expansion," is not completely correct. It does give the correct basis functions, but it gives a parametrization where the corresponding parameters are of product form (βxiβtj).
jarauh

1
@Josh Ok, I tried. It's not easy to have it correct and easy to understand at the same time (and to follow someone else's notation). By the way, the link to smooth-toolbox.pdf seems to be broken.
jarauh

1
Looks good. Apparently your edit was rejected, but I overrode the rejection and approved it. When I started writing this answer I didn't realize just how confusing the expansions would look. I should probably go back and rewrite it with pi (product) notation one of these days.
Josh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.