Multivariate lineare Regression mit Lasso in r

9

Ich versuche, ein reduziertes Modell zu erstellen, um viele abhängige Variablen (DV) (~ 450) vorherzusagen, die stark korreliert sind.

Meine unabhängigen Variablen (IV) sind ebenfalls zahlreich (~ 2000) und stark korreliert.

Wenn ich das Lasso verwende, um ein reduziertes Modell für jede Ausgabe einzeln auszuwählen, wird nicht garantiert, dass ich dieselbe Teilmenge unabhängiger Variablen erhalte, wenn ich jede abhängige Variable durchlaufe.

Gibt es eine multivariate lineare Regression, die das Lasso in R verwendet?

Dies ist kein Gruppen-Lasso. Gruppe Lasso gruppiert die IV. Ich möchte eine multivariate lineare Regression (dh der DV ist eine Matrix, kein Vektor von Skalaren), die auch Lasso implementiert. (Hinweis: Wie NRH betont, ist dies nicht der Fall. Gruppen-Lasso ist ein allgemeiner Begriff, der Strategien umfasst, die die IV gruppieren, aber auch Strategien, die andere Parameter wie die DV gruppieren.)

Ich habe dieses Papier gefunden, das in etwas namens Sparse Overlapping Sets Lasso gerät

Hier ist ein Code, der eine multivariate lineare Regression ausführt

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

Hier ist ein Code, der Lasso auf einem einzelnen DV macht

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

Und das möchte ich tun:

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

Auswählen von Funktionen, die auf ALLE Ziele gleichzeitig passen

kmace
quelle
Es ist unklar, was Sie fragen, außer zum letzten Punkt. Das Paket heißt glmnetund hat eine gründliche Vignette.
generic_user
Was meinst du mit "jedes Mal"? Führen Sie dies für Teilmengen Ihrer Daten aus? Kreuzvalidierung? Verschiedene Proben?
Shadowtalker
Mit jedem Mal meine ich, dass ich derzeit glmnet auf einer einzelnen abhängigen Variablen gleichzeitig
ausführe
Oder mit anderen Worten, mein y ist immer ein Vektor, keine Matrix
kmace
1
@ Firebug absolut. Ich wusste nicht, dass der Begriff allgemeiner ist. Entschuldigung
kmace

Antworten:

11

Für multivariate Antworten (Anzahl der abhängigen Variablen größer als 1) benötigen Sie family = "mgaussian"den Aufruf von glmnet.

Das lsgl-Paket ist eine Alternative, die eine flexiblere Strafe bietet.

k

j=1pβj2

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

Ersteres [ family = "mgaussian"] ermöglicht die Anpassung eines Gaußschen Modells mit mehreren Antworten unter Verwendung einer "Gruppen-Klassen" -Strafe für die Koeffizienten für jede Variable. Das Zusammenbinden der Antworten auf diese Weise wird in einigen Bereichen als "Multitasking" -Lernen bezeichnet.

Diese Strafe ist ein Beispiel für eine Gruppen-Lasso-Strafe, bei der Parameter für die verschiedenen Antworten gruppiert werden, die demselben Prädiktor zugeordnet sind. Dies führt zur Auswahl derselben Prädiktoren für alle Antworten für einen bestimmten Wert des Abstimmungsparameters.

Das lsgl-Paket implementiert spärliche Gruppen-Lasso- Strafen in der Form wobei und bestimmte Gewichte sind, die ausgewählt wurden, um die Beiträge der verschiedenen Begriffe auszugleichen. Der Standardwert ist und . Der Parameter ist ein Abstimmungsparameter. Mit (und ) entspricht die Strafe der von with verwendeten Strafe . Mit (und

α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) Die Strafe gibt gewöhnliches Lasso. Die lsgl-Implementierung ermöglicht auch eine zusätzliche Gruppierung der Prädiktoren.

Ein Hinweis zum Gruppen-Lasso. Der Begriff Gruppen-Lasso wird häufig mit einer Gruppierung von Prädiktoren assoziiert. Aus allgemeinerer Sicht ist Gruppen-Lasso jedoch einfach eine Gruppierung von Parametern in der Strafe. Die von glmnetwith verwendete Gruppierung family = "mgaussian"ist eine Gruppierung von Parametern über Antworten hinweg. Der Effekt einer solchen Gruppierung besteht darin, die Schätzung der Parameter über die Antworten hinweg zu koppeln, was sich als gute Idee herausstellt, wenn alle Antworten von ungefähr demselben Satz von Prädiktoren vorhergesagt werden können. Die allgemeine Idee, mehrere Lernprobleme zu koppeln, von denen erwartet wird, dass sie eine gewisse Struktur aufweisen, wird als Multitasking-Lernen bezeichnet .

NRH
quelle