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
quelle
glmnet
und hat eine gründliche Vignette.Antworten:
Für multivariate Antworten (Anzahl der abhängigen Variablen größer als 1) benötigen Sie
family = "mgaussian"
den Aufruf vonglmnet
.Das lsgl-Paket ist eine Alternative, die eine flexiblere Strafe bietet.
glmnet
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
glmnet
family = "mgaussian"
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
glmnet
with verwendete Gruppierungfamily = "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 .quelle