r中套索的多元线性回归


9

我正在尝试创建一个简化的模型来预测许多高度相关的因变量(DV)(〜450)。

我的自变量(IV)也很多(〜2000)并且高度相关。

如果我使用套索分别为每个输出选择一个简化的模型,那么当我遍历每个因变量时,不能保证获得相同的独立变量子集。

是否有在R中使用套索的多元线性回归?

这不是组套索。套索组IV。我想要多元线性回归(意味着DV是矩阵,而不是标量的向量),它也实现套索。(注意:正如NRH所指出的,这是不正确的。组套索是一个通用术语,它包括对IV进行分组的策略,但也包括对其他参数(如DV)进行分组的策略)

我发现本文进入了所谓的稀疏重叠集套索

这是一些进行多元线性回归的代码

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

这是在单个DV上执行套索的一些代码

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

这就是我想做的:

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

一次选择适合所有目标的特征


除了最后一点,不清楚您在问什么。包装被称为glmnet,它有一个完整的小插图。
–generic_user

“每次”是什么意思?您是否在数据子集上运行此程序?交叉验证?不同的样品?
shadowtalker

每次,我的意思是我目前一次在一个因变量上运行glmnet,并遍历所有这些变量
kmace16

换句话说,我的y始终是向量,而不是矩阵
kmace

1
@Firebug绝对。我不知道这个词更笼统。比较遗憾的是
kmace

Answers:


11

对于多变量响应(因变量数大于1),您需要family = "mgaussian"调用glmnet

所述lsgl包是一个替代方案中,它提供了一个更灵活的惩罚。

对于维响应,glmnet包将执行惩罚 其中是第个预测变量的系数向量。在帮助页面中,您可以阅读:k

j=1pβj2

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

前者[ family = "mgaussian"]允许对每个变量的系数使用“组-套索”罚分来拟合多响应高斯模型。这样将响应捆绑在一起在某些领域称为“多任务”学习。

此惩罚是组套索惩罚的示例,该组套索惩罚对与同一预测变量相关联的不同响应的参数进行分组。对于调整参数的给定值,将导致在所有响应中选择相同的预测变量。

lsgl包实施形式的稀疏组套索惩罚 其中和是为权衡不同项的贡献而选择的特定权重。默认值为和。参数是调整参数。与(和)罚相当于由所使用的惩罚与。使用(并且

α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)罚则给予普通套索。lsgl实现也允许对预测变量进行附加分组。

关于套索的注释。术语套索经常与一组预测变量相关联。但是,从更一般的角度来看,组套索只是惩罚中的一组参数。glmnetwith 使用family = "mgaussian"的分组是响应中的参数分组。如果可以从大致相同的一组预测变量中预测所有响应,那么这种分组的效果就是将响应的参数估计耦合起来。预期会共享某种结构的耦合多个学习问题的一般思想称为多任务学习

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.