r中带有套索的多元线性回归

机器算法验证 r 套索 多元回归
2022-03-24 04:43:10

我正在尝试创建一个简化模型来预测许多高度相关的因变量 (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

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

1个回答

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

lsgl是一种替代方案,它提供了更灵活的惩罚。

带一个k维响应,glmnet 包实现惩罚

j=1pβj2

在哪里βj=(βj1,,βjk)T是系数的向量j预测器。在帮助页面中,glmnet您可以阅读:

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

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

lsgl 包实现形式的稀疏组套索惩罚

αj=1pl=1kξjl|βjl|+(1α)j=1pγjβj2

在哪里ξjlγj是为了平衡不同术语的贡献而选择的某些权重。默认是ξjl=1γj=k. 参数α[0,1]是一个调整参数。α=0(和γj=1) 惩罚等同于 with 使用的glmnet惩罚family = "mgaussian"α=1(和ξjl=1) 罚则为普通套索。lsgl 实现还允许对预测变量进行额外分组。

关于组套索的说明。术语组套索通常与一组预测变量相关联。然而,从更一般的角度来看,组套索只是惩罚中的一组参数。glmnetwith使用family = "mgaussian"的分组是跨响应的参数分组。这种分组的效果是将响应中的参数估计耦合起来,如果所有响应都可以从大致相同的一组预测变量中预测出来,那么这将是一个好主意。耦合多个学习问题的一般思想,期望共享一些结构,被称为多任务学习