LASSO与$\lambda = 0 $和OLS在R glmnet中产生不同的结果

13 r lasso-regression least-squares lm

我期望LASSO没有惩罚($\lambda = 0 $)来产生与OLS拟合相同(或非常相似)的系数估计.但是,我在R中得到不同的系数估计值,将相同的数据(x,y)放入其中

  • glmnet(x, y , alpha=1, lambda=0) 对于LASSO而言,没有任何惩罚和
  • lm(y ~ x) 适合OLS.

这是为什么?

小智 5

您使用的功能错误。本x应该是模型矩阵。不是原始预测值。当您这样做时,您将获得完全相同的结果:

x <- rnorm(500)
y <- rnorm(500)
mod1 <- lm(y ~ x) 

xmm <- model.matrix(mod1)
mod2 <- glmnet(xmm, y, alpha=1, lambda=0)

coef(mod1)
coef(mod2)
Run Code Online (Sandbox Code Playgroud)


tom*_*mka 0

来自 glmnet 帮助:另请注意,对于“高斯”,glmnet 在计算其 lambda 序列之前将 y 标准化为具有单位方差(然后对结果系数进行非标准化);如果您希望重现/与其他软件比较结果,最好提供标准化的 y。