正则化技术(lasso, 岭回归, 弹性网络)-特征筛选

最后发布时间:2022-03-25 14:48:41 浏览量:

正则化技术

  • 对于高维数据,普通的变量筛选方法并不见效,或者可能需要消耗高昂的计算机算力成本。
  • 普通方法难以避免模型的过拟合,及多重共线性问题。
  • 通过正则化,我们会在残差平方和(RSS)最小化过程中,加入一个正则化项,称为收缩惩罚。这个惩罚项包含了一个希腊字母λ以及对系数β和权重的规范化。(RSS+收缩惩罚最小化)
  • 因此,正则化对于高维数据,可以对系数进行限制,避免多重共线性,甚至将其缩减到0。同时由于增加了正则化项,可以有效避免过拟合。
  • 正则化技术可以分为三种类型:
    • 岭回归
    • Lasso
    • 弹性网络

岭回归

在岭回归中,正则化项是所有变量系数的平方和,称为L2-norm。在我们的模型中就是试图使RSS+λ(sumβ_j^2)最小(残差平方和+(λ * 变量系数的平方和) )。当λ 增加时,系数β_j 会缩小,趋于0,但永远不会是0。也就是说岭回归可以解决多重共线性问题,但是不具有筛选自变量的功能。

lasso回归

在lasso回归中,正则化项是变量系数的绝对值的和,称之为L1-norm。在我们的模型中试图使RSS+λ(sum|β_j|)最小。这里收缩惩罚项可以使β_j收缩到0 。因此lasso回归具有筛选变量的功能。

图片alt

图片alt

每条曲线对应一个变量,

## 
## Call:  glmnet(x = x, y = y) 
## 
##    Df  %Dev  Lambda
## 1   0  0.00 1.63100
## 2   2  5.53 1.48600
## 3   2 14.59 1.35400
## 4   2 22.11 1.23400
## 5   2 28.36 1.12400
## 6   2 33.54 1.02400
....

非零系数的数量 ( Df)、解释的偏差百分比 ( %dev) 和?( Lambda)。尽管默认情况下glmnet适合 100 个值的模型,但如果从一个 lambda 到下一个 lambda 没有充分变化(通常在路径的末端附近) lambda,它会提前停止%dev

glmnet返回一系列模型供用户选择。在许多情况下,用户可能更喜欢软件来选择其中之一。交叉验证可能是该任务最简单和最广泛使用的方法。cv.glmnet是这里进行交叉验证的主要功能,以及绘图和预测等各种支持方法

图片alt

图片alt

这绘制了交叉验证曲线(红色虚线)以及沿上下标准偏差曲线?序列(误差线)。两个特殊值?的垂直虚线表示:lambda.min是的价值?给出最小平均交叉验证误差,而lambda.1se是?这给出了最正则化的模型,使得交叉验证的误差在最小值的一个标准误差内

岭回归存在的原因?

当自变量存在高度共线性或者高度两两相关时,Lasso回归可能会将某个自变量强制删除,这损失了模型预测能力。

弹性网络

在弹性网络中,我们的目的是使RSS+λ[ (1-α)(sumβ_j^2)/2 + α(sum|β_j|) ]/N最小化
当α等于0时,弹性网络等假于岭回归;当α等于1时,弹性网络等价于Lasso回归。
弹性网络的优势在于,它既能做到岭回归不不能做的变量筛选,又能实现Lasso不能做的变量分组

glmnet Commonly used function arguments

  • nlambda is the number of ? values in the sequence (default is 100).
  • alpha is for the elastic net mixing parameter ?, with range ?∈[0,1]. ?=1 is lasso regression (default) and ?=0 is ridge regression.
  • lambda can be provided if the user wants to specify the lambda sequence, but typical usage is for the program to construct the lambda sequence on its own. 10^seq(5,-1,length=100)