Regressione lineare multivariata con lazo in r


9

Sto cercando di creare un modello ridotto per prevedere molte variabili dipendenti (DV) (~ 450) che sono altamente correlate.

Le mie variabili indipendenti (IV) sono anche numerose (~ 2000) e altamente correlate.

Se utilizzo il lazo per selezionare singolarmente un modello ridotto per ciascun output, non sono garantito che ottenga lo stesso sottoinsieme di variabili indipendenti che eseguo il ciclo su ciascuna variabile dipendente.

Esiste una regressione lineare multivariata che utilizza il lazo in R?

Questo non è un lazo di gruppo. gruppo lazo raggruppa il IV. Voglio una regressione lineare multivariata (il che significa che il DV è una matrice, non un vettore di scalari), che implementa anche il lazo. (Nota: come sottolinea NRH, questo non è vero. Il lazo di gruppo è un termine generale che include strategie che raggruppano il IV, ma includono anche strategie che raggruppano altri parametri come il DV)

Ho trovato questo documento che entra in qualcosa chiamato Sparse Overlapping Sets Lasso

Ecco un codice che esegue la regressione lineare multivariata

> dim(target)
[1] 6060  441
> dim(dictionary)
[1] 6060 2030
> fit = lm(target~dictionary)

Ecco del codice che esegue il lazo su un singolo DV

> fit = glmnet(dictionary, target[,1])

E questo è quello che vorrei fare:

> fit = glmnet(dictionary, target)
Error in weighted.mean.default(y, weights) : 
  'x' and 'w' must have the same length

Selezione di funzionalità che si adattano a TUTTI gli obiettivi contemporaneamente


Non è chiaro quello che stai chiedendo, tranne l'ultimo punto. Il pacchetto si chiama glmnete ha una vignetta approfondita.
generic_user

Cosa intendi con "ogni volta"? Lo stai eseguendo su sottoinsiemi dei tuoi dati? Convalida incrociata? Campioni diversi?
Shadowtalker,

Ad ogni modo, intendo dire che sto attualmente eseguendo glmnet su una singola variabile dipendente alla volta e eseguendo il ciclo di tutti loro
kmace

O in altre parole, il mio y è sempre un vettore, non una matrice
kmace

1
@Firebug assolutamente. Non sapevo che il termine fosse più generale. Mi dispiace per questo
kmace il

Risposte:


11

Per le risposte multivariate (numero di variabili dipendenti maggiori di 1), è necessario family = "mgaussian"nel richiamo di glmnet.

Il pacchetto lsgl è un'alternativa, che prevede una penalità più flessibile.

k

j=1pβj2

βj=(βj1,,βjk)Tjglmnet

Il primo [ family = "mgaussian"] consente di adattare un modello gaussiano a risposta multipla, utilizzando una penalità "gruppo-lasso" sui coefficienti per ciascuna variabile. Mettere insieme le risposte in questo modo è chiamato apprendimento "multi-task" in alcuni domini.

Questa penalità è un esempio di penalità di lazo di gruppo, che raggruppa i parametri per le diverse risposte associate allo stesso predittore. Risulta nella selezione degli stessi predittori in tutte le risposte per un dato valore del parametro di ottimizzazione.

Il pacchetto lsgl implementa le penalità del lasso di gruppo sparse nella forma dove e sono determinati pesi scelti per bilanciare i contributi dei diversi termini. L'impostazione predefinita è e . Il parametro è un parametro di ottimizzazione. Con (e ) la penalità è equivalente alla penalità usata da con . Con (e

αj=1pl=1kξjl|βjl|+(1α)j=1pγjβj2

ξjlγjξjl=1γj=kα[0,1]α=0γj=1glmnetfamily = "mgaussian"α=1ξjl=1) la penalità dà lazo ordinario. L'implementazione di lsgl consente anche un ulteriore raggruppamento dei predittori.

Una nota sul lazo di gruppo. Il termine lazo di gruppo è spesso associato a un raggruppamento di predittori. Tuttavia, da un punto di vista più generale, il lazo di gruppo è semplicemente un raggruppamento di parametri nella penalità. Il raggruppamento utilizzato da glmnetwith family = "mgaussian"è un raggruppamento di parametri tra le risposte. L'effetto di tale raggruppamento è di accoppiare la stima dei parametri attraverso le risposte, che risulta essere una buona idea, se tutte le risposte possono essere previste approssimativamente dallo stesso insieme di predittori. L'idea generale di abbinare più problemi di apprendimento, che dovrebbero condividere una certa struttura, è nota come apprendimento multi-task .

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.