解释-L1-正则化如何执行特征选择-
解释:L1 正则化如何执行特征选择?
towardsdatascience.com/explained-how-does-l1-regularization-perform-feature-selection/
当使用过滤或包装方法执行时,特征选择可以是一个手动或相对明确的过程。在这些方法中,特征是根据一个固定度量值迭代地添加或删除的,该度量值量化了特征在做出预测中的相关性。这些度量可以是信息增益、方差或卡方统计量,算法会根据固定阈值在度量上做出接受/拒绝特征的决策。请注意,这些方法不是模型训练阶段的一部分,而是在它之前执行的。
嵌入式方法隐式地执行特征选择,不使用任何预定义的选择标准,而是从训练数据本身推导出来。这个内在的特征选择过程是模型训练阶段的一部分。模型学习同时选择特征和做出相关预测。在后面的章节中,我们将描述正则化在执行这种内在特征选择中的作用。
正则化和模型复杂性
正则化是惩罚模型复杂性的过程,以避免过拟合并在任务上实现泛化。
在这里,模型的复杂性与其适应训练数据中模式的能力相似。假设一个以‘x’为变量,次数为‘d’的简单多项式模型,当我们增加多项式的次数‘d’时,模型在捕捉观察到的数据中的模式方面获得了更大的灵活性。
过拟合和欠拟合
如果我们试图将d = 2的多项式模型拟合到一组由具有一些噪声的三次多项式派生出的训练样本上,该模型将无法充分捕捉样本的分布。该模型简单地缺乏灵活性或复杂性来模拟由三次(或更高阶)多项式生成的数据。这样的模型在训练数据上被认为是欠拟合。
在同一个例子上继续工作,假设我们现在有一个d = 6的模型。现在随着复杂性的增加,模型应该很容易估计出用于生成数据的原始三次多项式(例如,将所有指数大于 3 的项的系数设置为 0)。如果训练过程没有在正确的时间终止,模型将继续利用其额外的灵活性来进一步减少误差,并开始在噪声样本中捕捉。这将显著降低训练误差,但模型现在过拟合了训练数据。在现实世界的设置(或测试阶段)中,噪声将发生变化,任何基于预测它们的知识的破坏都将导致高测试误差。
如何确定最优模型复杂度?
在实际设置中,我们对数据生成过程或数据的真实分布几乎没有了解。找到具有正确复杂性的最优模型,以避免欠拟合或过拟合是一个挑战。
一种技术可能是从一个足够强大的模型开始,然后通过特征选择来降低其复杂性。特征越少,模型的复杂性就越低。
如前文所述,特征选择可以是显式的(过滤、包装方法)或隐式的。对于在确定响应变量值时具有不显著相关性的冗余特征应该被消除,以避免模型学习到其中的不相关模式。正则化也执行类似的任务。那么,正则化和特征选择是如何联系在一起以实现最优模型复杂度的共同目标的呢?
L1 正则化作为特征选择器
继续使用我们的多项式模型,我们将其表示为一个函数 f,其中输入为x,参数为θ,次数为d,

(图片由作者提供)
对于一个多项式模型,每个输入x_i的幂可以被视为一个特征,形成一个形如的向量,

(图片由作者提供)
我们还定义了一个目标函数,最小化它将引导我们得到最优参数θ,并包括一个惩罚模型复杂度的正则化项。

(图片由作者提供)
为了确定这个函数的极小值,我们需要分析其所有的临界点,即导数为零或未定义的点。
关于一个参数的偏导数,θj,可以写成,

(图片由作者提供)
其中函数sgn定义为,

(图片由作者提供)
注意:绝对函数的导数与上面定义的 sgn 函数不同。原始导数在 x = 0 处未定义。我们扩展定义以消除 x = 0 处的拐点,并使函数在整个定义域内可导。此外,这种扩展函数也被 ML 框架在涉及绝对函数的底层计算时使用。请查看 PyTorch 论坛上的这个帖子。
通过计算目标函数关于单个参数θj的偏导数,并将其设为零,我们可以构建一个方程,将θj的最佳值与预测、目标和特征联系起来。

(图片由作者提供)

(图片由作者提供)
让我们检查上面的方程。如果我们假设输入和目标值围绕均值中心(即数据在预处理步骤中已经标准化),LHS 上的项实际上代表了 jth特征与预测值和目标值之间差异的协方差。
两个变量的统计协方差量化了一个变量对第二个变量值的影响程度(反之亦然)。
右侧的符号函数迫使 LHS 上的协方差只取三个值(因为符号函数只返回-1、0 和 1)。如果第 j 个特征是冗余的,并且不影响预测,协方差将几乎为零,将相应的参数θj**降到零。这导致特征从模型中消除。
将符号函数想象成一条河流雕刻的峡谷。你可以在峡谷(即河床)中行走,但要走出峡谷,你有这些巨大的障碍或陡峭的斜坡。L1 正则化对损失函数的梯度产生类似的“阈值”效应。梯度必须足够强大,才能突破障碍或变为零,这最终将参数降到零。
为了一个更具体的例子,考虑一个包含由两条直线(由两个系数参数化)导出的样本数据集,并添加了一些噪声。最佳模型应不超过两个参数,否则它将适应数据中存在的噪声(增加了多项式的自由/权力)。改变多项式模型中高次项的参数不会影响目标值与模型预测之间的差异,从而减少它们与特征的协方差。
在训练过程中,一个常数步长会被加到/减去损失函数的梯度上。如果损失函数(均方误差)的梯度小于常数步长,参数最终会达到 0 的值。观察下面的方程,描述了参数如何通过梯度下降进行更新,

(图片由作者提供)

(图片由作者提供)
如果上面的蓝色部分小于 λα(它本身是一个非常小的数),Δθj 几乎是一个常数步长 λα。这个步长的符号(红色部分)取决于 sgn(θj),其输出取决于 θj。如果 θj 是正的,即大于 ε,sgn(θj) 等于 1,因此使 Δθj 大约等于 –λα,推动它向零靠近。
为了抑制使参数变为零的常数步长(红色部分),损失函数的梯度(蓝色部分)必须大于步长。对于较大的损失函数梯度,特征值必须显著影响模型的输出。
这就是特征被消除的方式,或者更准确地说,其对应的参数,其值与模型输出不相关,在训练过程中通过 L1 正则化被置零。
进一步阅读和结论
-
为了对这一主题有更深入的了解,我在 r/MachineLearning 子版块上发了一个问题,并得到的帖子包含了不同的解释,你可能想阅读一下。
-
Madiyar Aitbayev 也有一个有趣的博客,讨论了相同的问题,但提供了几何解释。
-
Brian Keng 的博客从概率的角度解释了正则化。
-
这篇在 CrossValidated 上的帖子解释了为什么 L1 范数会鼓励稀疏模型。Mukul Ranjan 写的详细博客解释了为什么 L1 范数鼓励参数变为零而不是 L2 范数。
“L1 正则化执行特征选择”是一个大多数机器学习学习者都同意的简单陈述,但没有深入探讨其内部工作原理。这篇博客试图将我的理解和心理模型带给读者,以便以直观的方式回答这个问题。对于建议和疑问,你可以在我的网站上找到我的电子邮件。继续学习,祝你有美好的一天!

浙公网安备 33010602011771号