Wielowymiarowa regresja liniowa z lasso wr

9

Próbuję utworzyć model zredukowany, aby przewidzieć wiele zmiennych zależnych (DV) (~ 450), które są wysoce skorelowane.

Moje zmienne niezależne (IV) są również liczne (~ 2000) i wysoce skorelowane.

Jeśli użyję lasso do wybrania zredukowanego modelu dla każdego wyjścia osobno, nie ma gwarancji, że uzyskam ten sam podzbiór zmiennych niezależnych, ponieważ pętlę nad każdą zmienną zależną.

Czy istnieje regresja liniowa wielowymiarowa, która używa lasso w R?

To nie jest grupowe lasso. grupa lasso grupy IV. Chcę wielowymiarowej regresji liniowej (co oznacza, że ​​DV jest macierzą, a nie wektorem skalarów), która również implementuje lasso. (Uwaga: jak wskazuje NRH, nie jest to prawdą. Lasso grupowe to ogólny termin obejmujący strategie grupujące IV, ale także strategie grupujące inne parametry, takie jak DV)

Znalazłem ten artykuł, który wchodzi w coś o nazwie rzadkie nakładające się zestawy Lasso

Oto kod, który wykonuje regresję liniową na wielu odmianach

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

Oto kod, który robi lasso na jednym DV

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

I to właśnie chciałbym zrobić:

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

Wybieranie funkcji pasujących do WSZYSTKICH celów jednocześnie

kmace
źródło
Nie jest jasne, o co pytasz, z wyjątkiem ostatniego punktu. Paczka jest nazywana glmneti ma dokładną winietę.
generic_user
Co rozumiesz przez „za każdym razem”? Czy używasz tego w podzestawach swoich danych? Krzyżowa walidacja? Różne próbki?
shadowtalker,
Za każdym razem mam na myśli, że obecnie uruchamiam glmnet na jednej zmiennej zależnej na raz i przeglądam je wszystkie
kmace
Innymi słowy, moje y jest zawsze wektorem, a nie macierzą
kmace
1
@Firebug absolutnie. Nie wiedziałem, że termin był bardziej ogólny. Przepraszam za to
kmace

Odpowiedzi:

11

W przypadku odpowiedzi wielowymiarowych (liczba zmiennych zależnych większych niż 1) potrzebujesz family = "mgaussian"w wywołaniu glmnet.

Pakiet lsgl jest alternatywnym, co zapewnia bardziej elastyczne karny.

Z odpowiedzią wymiarową , pakiet glmnet implementuje karę gdzie jest wektorem współczynników dla tego predyktora. Na stronie pomocy możesz przeczytać:k

j=1pβj2

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

Pierwszy [ family = "mgaussian"] pozwala dopasować model gaussowski z wieloma odpowiedziami, stosując karę „grupowo-lasso” na współczynniki dla każdej zmiennej. Łączenie odpowiedzi w ten sposób nazywa się uczeniem „wielozadaniowym” w niektórych domenach.

Kara ta jest przykładem grupowej kary lasso, która grupuje parametry dla różnych odpowiedzi powiązanych z tym samym predyktorem. Powoduje to wybór tych samych predyktorów dla wszystkich odpowiedzi dla danej wartości parametru strojenia.

Pakiet lsgl implementuje rzadkie grupowe kary lasso w postaci gdzie i są pewnymi wagami wybranymi w celu zrównoważenia wkładów z różnych warunków. Domyślnie jest to i . Parametr jest parametrem dostrajającym. Przy (i ) kara jest równoważna z karą zastosowaną przez z . Z (i

α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) kara daje zwykłe lasso. Implementacja lsgl pozwala również na dodatkowe grupowanie predyktorów.

Notatka o grupie Lasso. Termin grupa lasso jest często kojarzony z grupą predyktorów. Jednak z bardziej ogólnego punktu widzenia grupa lasso to po prostu grupowanie parametrów w karach. Grupowanie używane przez glmnetwith family = "mgaussian"to grupowanie parametrów w odpowiedziach. Efektem takiego grupowania jest połączenie oszacowania parametrów w odpowiedziach, co okazuje się dobrym pomysłem, jeśli wszystkie odpowiedzi można przewidzieć na podstawie tego samego zestawu predyktorów. Ogólna idea łączenia wielu problemów uczenia się, które mają podobną strukturę, jest znana jako uczenie się wielu zadań .

NRH
źródło