如何使用> 50K变量估算套索或岭回归中的收缩参数?


36

我想对超过50,000个变量的模型使用套索或岭回归。我想使用R中的软件包来执行此操作。如何估算收缩率参数()?λ

编辑:

这是我要提出的要点:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

在此处输入图片说明

我的问题是:我怎么知道哪个最适合我的模型?λ


3
平滑参数不是统计上可估计的,而是使用它来选择,以使用例如交叉验证来最大化样本外拟合。我认为R中的LASSO和Ri​​dge Regression的标准程序包具有为您执行此操作的内置功能-您是否研究过?
2012年

4
我不同意-您可以使用混合模型方法估算平滑参数。Reml方法与分层贝叶斯方法一样存在。您不需要昂贵的交叉验证。
概率

1
@probabilityislogic感谢您提供的信息。如果没有对脚本一些细节,我们怎样才能做到这一点使用REML这将是巨大的
约翰

2
对于岭回归,留一法交叉验证基本上是免费的(Allen的PRESS统计),我发现它是一个相当不错的方法。但是,由于具有这样的功能,因此您使用的任何方法几乎都是不稳定的,并且完全采用贝叶斯方法对参数和正则化参数进行边际化可能是更可靠的解决方案(正如我认为概率论所暗示的那样)。如果您不喜欢贝叶斯方法,请每次使用装袋并重新估计lambda。
迪克兰有袋动物

2
@Macro-(没有像18个月后的回复那样)。在混合模型方法中,有两个附加项仅取决于而不取决于。它们是和其中是beta的数量,X是预测矩阵。第一项来自,其中是误差方差。第二项是REML校正,以考虑插入的不确定性。λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2β=β^
概率

Answers:


25

cv.glmnetR包glmnet中的函数对用于惩罚的回归问题的值的网格执行自动交叉验证。特别是套索。glmnet软件包还支持更通用的弹性净罚分,这是和惩罚的组合。从1.7.3版开始。参数等于0 的程序包中的参数给出了岭回归(至少,直到最近才记录此功能)。λ112α

交叉验证是每个的预期泛化误差的估计,并且可以明智地选择作为此估计的最小化器。该函数返回两个值。极小值,和总是更大,这是的启发式选择,可产生较不复杂的模型,对于该模型,根据估计的预期泛化误差,性能在最小值的一个标准误差内。在glmnet软件包中,可以使用多种损耗函数来测量泛化误差。该参数指定损失函数。λλcv.glmnetλlambda.minlambda.1seλtype.measure

或者,R包mgcv包含用于二次惩罚估计的广泛可能性,包括自动选择惩罚参数。如注释中所述,实现的方法包括广义交叉验证和REML。有关更多详细信息,请参见软件包作者书:Wood,SN(2006)通用加性模型:R,CRC简介。


1
你也许可能要补充一点cv.glmnet回报两个值,和(“一个标准误差”规则)。λlambda.minlambda.1se
chl 2012年

@chl,感谢您的建议。我应该补充一点。
NRH 2012年

15

这个答案是特定于MATLAB的,但是,基本概念应该与您使用R所使用的基本概念非常相似。

对于MATLAB,您可以选择在启用交叉验证的情况下运行套索。

如果这样做,套索函数将报告两个关键参数值

  1. 最小化交叉验证均方误差的lambda值
  2. 具有最大收缩量的Lambda值,其CVMSE在最小值的一个标准误差内。

您还将获得一个漂亮的小图表,可用于检查lambda和CVMSE之间的关系

在此处输入图片说明

通常,您将选择介于蓝线和绿线之间的lambda值。

以下博客文章根据一些示例提供了一些演示代码。

Tibshirani,R.(1996)。通过套索进行回归收缩和选择。J.皇家。统计员。Soc B.,第 58,第1号,第267-288页)。

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/


10

我使用有效AIC取得了成功,即使用具有有效自由度的AIC-有关有效df的信息,请参见Gray JASA 87:9421992。对于线性和逻辑模型,R 包中的罚金实现了这一点,并且该功能可用于解决收缩系数,从而优化有效AIC。Harrell et al Stat in Med 17:909,1998是一个显示如何进行差异收缩(例如,相互作用的更大收缩)的案例研究。L2rmsrms pentrace


似乎是一个非常有趣的答案,您愿意详细说明一下吗?
Yair Daon

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.