An adaptive lasso for python
Problems of lasso penalization
让我先简单介绍一下 lasso 回归。想象一下,您正在处理一个数据集,其中您知道只有少数变量与响应变量真正相关,但您不知道哪些变量。也许您正在处理一个变量多于观察值的高维数据集,其中无法求解简单的线性回归模型。例如,由数千个基因组成的遗传数据集,但其中只有少数基因与疾病相关。
因此,您决定使用 lasso,这是一种将 L1 约束添加到回归模型的 β 系数的惩罚。
这样,您可以获得稀疏的解决方案,这意味着许多 β 系数将被发送到 0,并且您的模型将根据少数不为 0 的系数进行预测。
您已经通过降低模型复杂性(变量数量不为 0)潜在地减少了模型的预测误差。但作为副作用,您增加了 β 估计的偏差(这被称为方差偏差权衡)。
Lasso 提供有偏的稀疏解决方案,因此 lasso 选择为有意义的变量可能与真正有意义的变量不同。

其他惩罚,如岭回归和稀疏组套索也面临同样的问题:它们提供有偏差的解决方案,因此可能无法识别我们模型中真正有意义的变量。
The oracle property
我们的目标很明确:我们想要一个没有偏见的解决方案,这样我们就可以从数据集中选择变量,就好像我们事先知道哪些是真正重要的变量一样。就像我们的估算者是一个知道真相的神谕一样。
我知道,将“oracle”称为回归估计器听起来像是我想出的东西,但它实际上有一个由 Fan 和 Li (2001) 提出的数学形式定义。如果一个估计器能够正确地选择模型中的非零系数且概率收敛到 1,并且非零系数是渐近正态分布的,那么它就是预言器。
这意味着给定一组 p 个变量 {β1,…,βp},如果我们考虑两个子集,

预言机估计器选择概率趋于 1 的真正重要的变量。渐近地,两个子集重合。
The adaptive lasso
那么……我们如何获得我们的预言机估计器?例如,我们可以使用自适应套索估计器。这个估计器最初是由 Zou (2006) 提出的,其背后的想法非常简单:添加一些权重 w 来纠正 lasso 中的偏差。

如果一个变量很重要,它应该具有较小的权重。这样,它会受到轻微的惩罚并保留在模型中。如果它不重要,通过使用大权重,我们确保我们摆脱它并将其发送到 0。
但这会产生我们今天将看到的最后一个问题:
How to compute these w weights
计算这些权重有很多替代方法,但今天我将使用最简单的一种:
1.求解一个简单的套索模型

2. 将权重计算为:

3. 插入权重并求解自适应套索

就是这样。现在您的估计器是一个预言机,您将获得比使用简单套索获得的预测更好的预测(无论是在预测误差方面还是在子集选择方面)。
但不要相信我,让我们在 Python 中使用 asgl 包进行测试。
------------
译自https://towardsdatascience.com/an-adaptive-lasso-63afca54b80d

浙公网安备 33010602011771号