LASSO是否会遭受逐步回归的相同问题?


18

逐步算法变量选择方法趋向于选择对回归模型中的每个估计或多或少有偏见的模型( s及其SE,p值F统计等),并且与排除真实预测变量的可能性差不多根据相当成熟的模拟文献,包括错误的预测变量。β

LASSO用于选择变量时是否会遭受相同的特定方式折磨?


3
我认为是的。我认为,弗兰克·哈雷尔(Frank Harrell)对此发表了一些文章,他的《回归建模策略》一书中可能有相关材料。
理查德·哈迪

2
@RichardHardy +1如果FrankHarrell会转身并发表评论或回答,我将感到非常高兴。:)
Alexis

5
我有一个新的演讲可以解决这个问题。底线:套索选择“正确”变量的可能性很小。幻灯片在fharrell.com/talk/stratos19
Frank Harrell

4
与“底线:套索获得选择的可能性很低‘正确的’变量”:有关于统计学习与稀疏(同一主题的一个部分web.stanford.edu/~hastie/StatLearnSparsity_files/...),11.4.1 Variable-Selection Consistency for the Lasso
阿德里安

2
也与“底线:套索选择'正确'变量的可能性很小”有关:请参阅statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf案例研究1和2
Adrian

Answers:


3

对于LASSO模型,概率论的可能性表达,p值等的概率解释和逐步回归是正确的。

这些表达式高估了概率。例如,某个参数的95%置信区间应该表示您有95%的概率该方法将导致一个区间,且该区间内包含真实的模型变量。

但是,拟合模型不是由典型的单个假设得出的,而是当我们进行逐步回归或LASSO回归时,我们选择了樱桃(从许多可能的替代模型中选择)。


  1. 评估模型参数的正确性几乎没有意义(尤其是当模型可能不正确时)。

    在下面的示例(稍后说明)中,该模型适用于许多回归变量,并且受到多重共线性的影响。这使得很有可能在模型中选择了一个相邻的回归变量(具有很强的相关性),而不是在模型中真正选择了一个回归变量。较强的相关性导致系数具有较大的误差/方差(与矩阵XŤX-1个)。

    然而,这种高方差由于multicollionearity不是像p值或系数的标准误差诊断“看到”,因为这些都是基于一个较小的设计矩阵X较少回归量。(并且没有直接的方法来为LASSO计算这些类型的统计信息)

    示例:下图显示了某些信号的玩具模型的结果,该信号是10条高斯曲线的线性和(例如,这类似于化学分析,其中光谱信号被认为是线性的和)。几个组件)。使用LASSO,将10条曲线的信号与100个分量的模型拟合(具有不同平均值的高斯曲线)。信号得到了很好的估计(比较红色和黑色曲线,它们相当接近)。但是,实际的底层系数不是很好估计,可能是完全错误的(与不是相同点比较红,黑条)。另请参阅最后10个系数:

                  91     91     92     93     94     95     96     97     98     99     100
     true model   0      0      0      0      0      0      0      142.8  0      0      0
     fitted       0      0      0      0      0      0      129.7  6.9    0      0      0

    LASSO模型确实选择了非常近似的系数,但是从系数本身的角度来看,当应将非零系数估计为零而将邻域系数应估计为零时,这意味着较大的误差。非零。系数的任何置信区间都几乎没有意义。

    LASSO配件

    示例套索/ glmnet

    逐步拟合

    作为比较,同一条曲线可以使用逐步算法进行拟合,得出下面的图像。(存在系数接近但不匹配的类似问题)

    示例nnls

  2. 即使考虑曲线的精度(而不是参数,在上一点中已明确指出它没有意义),也必须处理过度拟合问题。当您使用LASSO进行拟合过程时,您将使用训练数据(以使用不同参数拟合模型)和测试/验证数据(以调整/查找最佳参数),但还应使用第三单独的数据集测试/验证数据以找出数据的性能。

    一个p值或类似的值将不起作用,因为您正在使用的是经过精挑细选且与常规线性拟合方法不同(更大的自由度)的调整模型。


遭受同样的问题逐步回归吗?

[R2

我认为使用LASSO代替逐步回归的主要原因是LASSO允许较少的贪婪参数选择,因此较少受到多共性的影响。(LASSO和逐步方法之间的更多差异:就模型的交叉验证预测误差而言,LASSO优于正向选择/反向消除


示例图片的代码

# settings
library(glmnet)
n <- 10^2        # number of regressors/vectors
m <- 2         # multiplier for number of datapoints
nel <- 10        # number of elements in the model
set.seed(1)   
sig <- 4
t <- seq(0,n,length.out=m*n)

# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))

# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)

# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE, 
                 alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])

# non negative least squares 
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)


# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))


plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",bty="n")      
#lines(t,Yfit,col=2,lwd=2)                        # fitted mean
lines(t,X %*% coef,lwd=2)                        # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2)           # 2nd fit

  # add coefficients in the plot
for (i in 1:n) {
  if (coef[i] > 0) {
    lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
    points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
#    points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
    points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
  }

}

#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)

text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)



plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
     xaxt = "n", yaxt = "n", 
     ylab="", xlab = "",
     ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n") 
#lines(t,X %*% coef,lwd=2,col=2)      

for (i in 1:n) {
  if (coef[i] > 0) {
    lines(t,X[,i]*coef[i],lty=1)
  }
  if (coef(fit)[i+1] > 0) {
#    lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
  }
  if (coef(fit2)[i+1] > 0) {
    lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
  }

}

text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)

+1谢谢Martjin Wterings。您可以放大一下图吗?轴上显示什么,代表什么颜色,等等?
Alexis

实际上,该图不是LASSO的情况。但是,这是一个示例,模型如何可能是多个分量的总和,例如高斯曲线(均值略有不同的曲线非常相关),并且这些分量的均值发生漂移意味着系数发生较大变化但曲线变化不大。
Sextus Empiricus

1
条形是真实模型和拟合模型的系数值。这是我记得这个原理发生的图像。我自己做一个例子,可能会更清楚地显示出来(我怀疑LASSO贪婪程度较低,在表示真实系数方面可能会表现得更好)。
Sextus Empiricus

0

我有一个新的演讲可以解决这个问题。底线:套索选择“正确”变量的可能性很小。幻灯片位于 http://fharrell.com/talk/stratos19

–弗兰克·哈雷尔

与“底线:套索选择“正确”变量的可能性低”相关:在具有稀疏性的统计学习(https://web.stanford.edu/~hastie/StatLearnSparsity_files/SLS_corrected_1。 4.16.pdf), 11.4.1 Variable-Selection Consistency for the Lasso

–阿德里安

也与“底线:套索选择'正确'变量的可能性很小”有关:请参见 https://statweb.stanford.edu/~candes/stats300c/Lectures/Lecture24.pdf 案例研究1和2

–阿德里安


1
我将这些评论复制为社区Wiki答案,因为它们或多或少是该问题的答案。答案和问题之间存在巨大差距。问题的至少一部分是在评论中回答了一些问题:如果回答问题的评论改为回答,那么未回答的问题就会更少。
mkt-恢复莫妮卡

1
这些是评论,即使合计也不能提供CV标准的答案(例如,链接不是答案)。另外:由于您对问题的回答率不满意,因此我强烈不同意将完全有效的问题放入社区Wiki。
Alexis

1
另外:我已经接受了有关社区Wiki和社区Wiki答案的教育,并且在那儿撤回了我的分歧(尽管我仍然不认为这是答案:)。
亚历克西斯

1
@Alexis Fair-我本人以为这是一个灰色区域,但可能会误判了这一点。
恢复莫妮卡

1
我们都在学习。:)
Alexis
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.