J'essaie de créer un modèle réduit pour prédire de nombreuses variables dépendantes (DV) (~ 450) qui sont hautement corrélées.
Mes variables indépendantes (IV) sont également nombreuses (~ 2000) et fortement corrélées.
Si j'utilise le lasso pour sélectionner un modèle réduit pour chaque sortie individuellement, je ne suis pas assuré d'obtenir le même sous-ensemble de variables indépendantes que je boucle sur chaque variable dépendante.
Existe-t-il une régression linéaire multivariée qui utilise le lasso dans R?
Ce n'est pas du lasso de groupe. lasso de groupe regroupe le IV. Je veux une régression linéaire multivariée (ce qui signifie que le DV est une matrice, pas un vecteur de scalaires), qui implémente également le lasso. (Remarque: comme le souligne la NRH, ce n'est pas vrai. Le lasso de groupe est un terme général qui inclut des stratégies qui regroupent le IV, mais également des stratégies qui regroupent d'autres paramètres tels que le DV)
J'ai trouvé ce document qui entre dans quelque chose appelé Lasso à superposition clairsemée Lasso
Voici un code qui fait une régression linéaire multivariée
> dim(target)
[1] 6060 441
> dim(dictionary)
[1] 6060 2030
> fit = lm(target~dictionary)
Voici un code qui fait du lasso sur un seul DV
> fit = glmnet(dictionary, target[,1])
Et voici ce que je voudrais faire:
> fit = glmnet(dictionary, target)
Error in weighted.mean.default(y, weights) :
'x' and 'w' must have the same length
Sélection de fonctionnalités adaptées à TOUTES les cibles à la fois
glmnet
et il a une vignette complète.Réponses:
Pour les réponses multivariées (nombre de variables dépendantes supérieures à 1), vous avez besoin
family = "mgaussian"
dans l'appel deglmnet
.Le package lsgl est une alternative, qui offre une pénalité plus flexible.
Avec une réponse dimensionnelle, le package glmnet implémente la pénalité où est le vecteur de coefficients pour le ème prédicteur. Dans la page d'aide pour vous pouvez lire:k
glmnet
Cette pénalité est un exemple de pénalité de lasso de groupe, qui regroupe les paramètres des différentes réponses associées au même prédicteur. Il en résulte la sélection des mêmes prédicteurs dans toutes les réponses pour une valeur donnée du paramètre de réglage.
Le package lsgl implémente des pénalités de lasso de groupe clairsemées de la forme où et sont certains poids choisis pour équilibrer les contributions des différents termes. La valeur par défaut est et . Le paramètre est un paramètre de réglage. Avec (et ) la pénalité est équivalente à la pénalité utilisée par avec . Avec (et
glmnet
family = "mgaussian"
Une note sur le lasso de groupe. Le terme lasso de groupe est souvent associé à un groupe de prédicteurs. Cependant, d'un point de vue plus général, le lasso de groupe est simplement un regroupement de paramètres dans la pénalité. Le regroupement utilisé par
glmnet
avecfamily = "mgaussian"
est un regroupement de paramètres entre les réponses. Un tel regroupement a pour effet de coupler l'estimation des paramètres entre les réponses, ce qui s'avère être une bonne idée, si toutes les réponses peuvent être prédites à peu près à partir du même ensemble de prédicteurs. L'idée générale de coupler plusieurs problèmes d'apprentissage, qui devraient partager une certaine structure, est connue sous le nom d' apprentissage multi-tâches .la source