L1、L2 正则项详解 - 解空间、先验分布、最大似然估计 and 最大后验估计

L1、L2 正则项详解(解空间、先验分布)

  • 引入

    在线性回归或其他模型中,我们经常使用正则项,例如:对普通线性回归添加 L1 正则项后就变为 Lasso 回归,对普通线性回归添加 L2 正则项后就变为 Ridge 回归。对于正则项,我们都知道 L2 正则项具有缩放型效应,可以让模型参数更加平滑;L1 正则项具有截断型效应,使得模型参数更加稀疏。那么本文就对这现象的背后原理进行讲解。

  • 直观看

    首先对平滑与稀疏建立一个直观的概念,稀疏意味着使模型参数等于 0,从而在模型内部嵌入式地进行特征选择,;而平滑则会尽量使参数小,但不等于 0,从而嵌入式地对特征进行缩小。

    举一个不严谨但直观简单的例子,方便理解:设 f ( x ; w ) f(x;w) f(x;w)为经验损失, L L L 代表正则项, l ( x ; w ) = f ( x ; w ) + L l(x;w)=f(x;w)+L l(x;w)=f(x;w)+L 为结构损失。假设此时使用梯度下降更新参数, μ μ μ 为学习率,则梯度为 μ ∂ f ( w ) ∂ w i − μ ∗ ∂ L ∂ w i μ\frac{\partial f(w)}{\partial w_i}-μ*\frac{\partial L}{\partial w_i} μwif(w)μwiL,对于不同的正则项 μ ∂ f ( w ) ∂ w i μ\frac{\partial f(w)}{\partial w_i} μwif(w) 是相同的,我们暂时忽略,所以:

    1. 使用 L1 正则项,梯度为: μ ∂ ∑ i = 1 n ∣ w i ∣ ∂ w i = μ ∗ 1 = μ μ\frac{\partial \sum_{i=1}^{n}|w_i|}{\partial w_i}=μ*1=μ μwii=1nwi=μ1=μ, 梯度更新参数的表达式为: w i : = w i − μ ∗ 1 w_i:=w_i-μ*1 wi:=wiμ1,假设 μ = 0.5 μ=0.5 μ=0.5,则 w i : = w i − 0.5 w_i:=w_i-0.5 wi:=wi0.5,所以 L1 意味着在更新参数时相当于一直减去一个定值,那么终会有一时刻将 w i w_i wi 减为 0,那么此时参数为 0,所以稀疏。
    2. 使用 L2 正则项,梯度为: 1 2 μ ∂ ∑ i = 1 n ( w i ) 2 ∂ w i = μ w i \frac{1}{2}μ\frac{\partial \sum_{i=1}^{n}(w_i)^2}{\partial w_i}=μw_i 21μwii=1n(wi)2=μwi, 梯度更新参数的表达式为: w i : = w i − μ w i w_i:=w_i-μw_i wi:=wiμwi,假设 μ = 0.5 μ=0.5 μ=0.5,则 w i : = w i − 1 2 w i : = 1 2 w i w_i:=w_i-\frac{1}{2}w_i:=\frac{1}{2}w_i wi:=wi21wi:=21wi,相当于每次的更新都是折半,则更新的图像为 log ⁡ 2 w i \log_2w_i log2wi,所以只会趋近于 0,不会等于 0,趋于平滑。

    通过上面不正规的例子,我们对稀疏性与平滑型有了直观的理解,下面就开始正式的通过公式证明。

  • 解空间

    在优化过程中,我们希望在优化经验损失 ∑ i = 1 n ( y i − w T x i ) 2 \sum_{i=1}^{n}(y_i-w^Tx_i)^2 i=1n(yiwTxi)2 的同时,还希望对模型的复杂度进行限制,约束参数的取值空间,从而达到防止过拟合的效果,那么我们可以为优化问题加上一个约束,即参数 w w w 的范数不能大于 C:

    对于 Lβ 范数: { m i n ∑ i = 1 n ( y i − w T x i ) 2 s . t . ∣ ∣ w ∣ ∣ β − C ≤ 0 , β = 1 , 2 \begin{cases} min\sum_{i=1}^{n}(y_i-w^Tx_i)^2\\ s.t. ||w||_β-C \le 0,β=1,2\\ \end{cases} {mini=1n(yiwTxi)2s.t.wβC0β=1,2

    为了求解带约束条件的凸优化问题,写出拉格朗日函数:

    L ( x , w , λ ) = ∑ i = 1 n ( y i − w T x i ) 2 + λ ( ∣ ∣ w ∣ ∣ β − C ) L(x,w,λ)=\sum_{i=1}^{n}(y_i-w^Tx_i)^2+λ(||w||_β-C) L(x,w,λ)=i=1n(yiwTxi)2+λ(wβC)

    假设此时 w ∗ , λ ∗ w^*,λ^* w,λ 为原始问题与对偶问题的最优解,则根据 K K T KKT KKT 条件,应分别满足:

    { ∇ w L ( x ∗ ; w ∗ ; λ ∗ ) = 0 ∇ λ L ( x ∗ ; w ∗ ; λ ∗ ) = 0 λ ( ∣ ∣ w ∣ ∣ β − C ) = 0 λ ∗ ≥ 0 ∣ ∣ w ∣ ∣ β − C ≤ 0 ⟹ 其 中 { ∇ w [ ∑ i = 1 n ( y i − w ∗ T x i ∗ ) 2 + λ ∗ ( ∣ ∣ w ∗ ∣ ∣ β − C ) ] = 0 λ ∗ ≥ 0 \begin{cases} \nabla_{w}L(x^*;w^*;λ^*)=0\\ \nabla_{λ}L(x^*;w^*;λ^*)=0\\ λ(||w||_β-C)=0\\ λ^*\ge0\\ ||w||_β-C\le0 \end{cases}\mathop{}_{\Longrightarrow}^{其中}\begin{cases} \nabla_{w}[\sum_{i=1}^{n}(y_i-{w^*}^Tx_i^*)^2+λ^*(||w^*||_β-C)]=0\\ λ^*\ge0\\ \end{cases} wL(x;w;λ)=0λL(x;w;λ)=0λ(wβC)=0λ0wβC0{w[i=1n(yiwTxi)2+λ(wβC)]=0λ0

    回头看, ∇ w [ ∑ i = 1 n ( y i − w ∗ T x i ∗ ) 2 + λ ∗ ( ∣ ∣ w ∗ ∣ ∣ β − C ) ] = 0 \nabla_{w}[\sum_{i=1}^{n}(y_i-{w^*}^Tx_i^*)^2+λ^*(||w^*||_β-C)]=0 w[i=1n(yiwTxi)2+λ(wβC)]=0 表示的就是: w ∗ , λ ∗ w^*,λ^* w,λ 为带有正则项的优化问题的最优解的条件,且 λ ∗ λ^* λ 为正则项前的正则参数。与我们通常使用的结构损失正好对应!

    对于正则项前的系数 λ λ λ,用来控制经验损失与正则项的相对重要性, λ λ λ 值越大,表明正则项越严格,更倾向于获得稀疏模型。

    由以上我们可以得出:加入正则项就相当于对经验损失加上约束条件,从而变成约束优化问题。对应于解空间来讲,有下图:
    不同正则对应的解空间

    对于解空间我们可以想象到 2 维的情景,假设在 w 1 , w 2 w_1,w_2 w1,w2 的解空间中,菱形与圆形分别对应 L1 与 L2 w 1 , w 2 w_1,w_2 w1,w2 取值范围, w ∗ w^* w w w w 的最优解(L1 正则是绝对值之和,可以认为是一次函数类似 a w 1 + b w 2 = 0 aw_1+bw_2=0 aw1+bw2=0 围城的图形,所以是菱形;L1 正则是平方之和,可以认为是二次函数类似 ( w 1 ) 2 + ( w 2 ) 2 = 0 (w_1)^2+(w_2)^2=0 (w1)2+(w2)2=0 围城的图形,所以是圆形)。

    如果原问题目标函数的最优解不是恰好落在解空间内,那么约束条件下的最优解必然在解空间与约束空间的交点处。L1 “棱角分明”的约束空间更容易与解空间在角点碰撞,且 L1 中两个参数值倾向于一个较大另一个为 0,L2 中两个参数倾向于均为非零的较小数(使用 L2 正则项时,只有当解空间的中心与 L2 约束空间的中心垂直或平行时才能得到一个参数为 0,另一个参数较大,而 L1 的约束空间则不然)。所以就有 L1 稀疏,L2 平滑的效果。

  • 先验分布

    如果在概率估计的范畴,则可以通过先验分布解释 L1 与 L2 的稀疏性与平滑性。

    在从先验分布角度介绍 L1,L2 之前,我们先了解一下最大似然估计与最大后验估计(参考链接)。

    1. 最大似然估计

      对于函数 P ( x ∣ θ ) P(x|θ) P(xθ),有两个输入, x x x 表示已知数据, θ θ θ 表示条件参数,那么这个条件概率可以从两个方面理解:

      ∙ \bullet 如果 θ θ θ 已知, x x x 未知,这个函数称为概率函数,用于计算对于不同 x x x 发生的概率;

      ∙ \bullet 如果 x x x 已知, θ θ θ 未知,这个函数称为似然函数,用来描述,当样本数据发生的经验概率(可从数据中统计)是已知,计算使它产生这样经验概率的参数是多少(似然,可以认为是接近真实,近似它自然拥有的参数)。

      最大似然估计的计算过程:

      例:此时抛硬币10次,其中正面 7 次,反面 3 次,设 硬币正面出现的概率为 θ θ θ, 请估计硬币正面出现的概率。

      ① 写出 似然函数 f ( x ) = θ 7 ( 1 − θ ) 3 f(x)=θ^7(1-θ)^3 f(x)=θ7(1θ)3

      ② 转换成 对数似然函数 ln ⁡ f ( x ) = ln ⁡ ( θ 7 ( 1 − θ ) 3 ) = 7 ln ⁡ θ + 3 ln ⁡ ( 1 − θ ) \ln f(x)=\ln (θ^7(1-θ)^3)=7\ln θ + 3\ln(1-θ) lnf(x)=ln(θ7(1θ)3)=7lnθ+3ln(1θ)

      ③ 对 θ θ θ 求导,并令导数等于 0: 7 θ − 3 1 − θ = 0 \frac{7}{θ}-\frac{3}{1-θ}=0 θ71θ3=0,解得 θ = 0.7 θ=0.7 θ=0.7

      (④ 对于更加复杂的函数形式可使用梯度下降)

    2. 最大后验估计

      最大后验估计运用贝叶斯公式: P ( w ∣ X ) = P ( X ∣ w ) P ( w ) P ( X ) P(w|X)=\frac{P(X|w)P(w)}{P(X)} P(wX)=P(X)P(Xw)P(w),是在最大似然估计的基础上加入了先验概率。

      其中 X X X 作为已知的训练数据出现,最大似然估计的目的是最大化 P ( w ∣ X ) P(w|X) P(wX),即在已知数据的基础上既最大化似然函数 P ( X ∣ w ) P(X|w) P(Xw),又要最大化 P ( w ) P(w) P(w)。意味着要考虑先验概率 P ( w ) P(w) P(w) 。与之前文章讲的贝叶斯公式(机器学习 - 朴素贝叶斯(上)- 概率论基础)可视为一样的:我们先对参数 w w w 计算先验概率,而后通过数据计算条件概率 P ( X ∣ w ) P(X|w) P(Xw) 对先验概率进行修正。

    现在我们可以根据最大后验估计对 L1 与 L2 的稀疏与平滑进行解释了。

    对于机器学习模型,我们都是已知数据对参数进行学习,相当于对 w w w 进行估计,此过程可用最大后验估计表示,其中 X , Y X,Y X,Y 为数据及其标签:

    P ( w ∣ X , Y ) = P ( X , Y ∣ w ) P ( w ) P ( X , Y ) P(w|X,Y)=\frac{P(X,Y|w)P(w)}{P(X,Y)} P(wX,Y)=P(X,Y)P(X,Yw)P(w)

    根据最大后验估计,我们的目标是最大化 P ( X , Y ∣ w ) P(X,Y|w) P(X,Yw) 以及 P ( w ) P(w) P(w),而对于同一个任务,所使用的数据是不变的,所以 P ( X , Y ) P(X,Y) P(X,Y) 可以视为常数忽略,此时最大后验估计可表示为:

    P ( w ∣ X , Y ) = P ( X , Y ∣ w ) P ( w ) P(w|X,Y)=P(X,Y|w)P(w) P(wX,Y)=P(X,Yw)P(w)

    同样取对数,得对数后验函数:

    f ( x ) = log ⁡ ( P ( X , Y ∣ w ) P ( w ) ) = log ⁡ P ( X , Y ∣ w ) + log ⁡ P ( w ) f(x)=\log (P(X,Y|w)P(w))=\log P(X,Y|w)+\log P(w) f(x)=log(P(X,Yw)P(w))=logP(X,Yw)+logP(w)

    从中可以发现:对数后验函数是在对数似然函数的基础上增加了 log ⁡ P ( w ) \log P(w) logP(w),其中 P ( w ) P(w) P(w) 的意义是对参数 w w w 的概率分布做出的先验假设,在收集到训练数据 X , Y X,Y X,Y 后,则可根据 w w w X , Y X,Y X,Y 下的条件概率对 w w w 进行修正,从而做出对 w w w 进行更好地估计。

    ∙ \bullet 若假设 w j w_j wj 的先验分布为 0均值 的高斯分布,即: w j ∼ N ( 0 , σ 2 ) w_j\sim N(0,σ^2) wjN(0,σ2)

    log ⁡ P ( w ) = log ⁡ ∏ j P ( w j ) = log ⁡ ∏ j [ − 1 2 π σ 2 e − ( w j ) 2 2 σ 2 ] = − 1 2 σ 2 ∑ j w j 2 + C ′ \log P(w)=\log \prod_{j} P(w_j)=\log \prod_{j}[-\frac{1}{\sqrt{2π}σ^2}e^{-\frac{(w_j)^2}{2σ^2}}]=-\frac{1}{2σ^2}\sum_{j}w_j^2+C' logP(w)=logjP(wj)=logj[2π σ21e2σ2(wj)2]=2σ21jwj2+C

    很巧,在高斯分布下, log ⁡ P ( w ) \log P(w) logP(w) 具有 ∑ j w j 2 \sum_{j}w_j^2 jwj2 项 ,与 L2 正则项是效果等价的。

    所以使用 L2 正则项相当于对模型参数 w w w 引入了高斯先验。

    ∙ \bullet 若假设 w j w_j wj 服从 均值为0,参数为 a a a 的拉普拉斯分布,即: P ( w j ) = 1 2 a e − ∣ w j ∣ a P(w_j)=\frac{1}{\sqrt{2a}}e^{\frac{-|w_j|}{a}} P(wj)=2a 1eawj

    log ⁡ P ( w ) = log ⁡ ∏ j P ( w j ) = log ⁡ ∏ j 1 2 a e − ∣ w j ∣ a = − 1 a ∑ j ∣ w j ∣ + C ′ \log P(w)=\log \prod_{j} P(w_j)=\log \prod_{j}\frac{1}{\sqrt{2a}}e^{\frac{-|w_j|}{a}}=-\frac{1}{a}\sum_{j}|w_j|+C' logP(w)=logjP(wj)=logj2a 1eawj=a1jwj+C

    很巧,在拉普拉斯分布下, log ⁡ P ( w ) \log P(w) logP(w) 具有 ∑ j ∣ w j ∣ \sum_{j}|w_j| jwj 项 ,与 L1 正则项是效果等价的。

    所以使用 L1 正则项相当于对模型参数 w w w 引入了拉普拉斯先验。

    但是高斯先验为什么会使参数更平滑而拉普拉斯为什么会使参数更稀疏呢?

    首先来看阿门两个分布函数的图像:
    分布图像
    (左图为拉普拉斯分布,右图为高斯分布,图片来自网络。)

    对于拉普拉斯分布,大部分概率分布都聚集在 0 附近,而对于值较大的概率较小,所以获得 w = 0 w=0 w=0 的概率更高,从而更倾向于稀疏;而对于高斯分布,其中取值较大的概率的分布相比拉普拉斯分布更大,而在 0 附近的概率分布较小,所以对于 w = 0 w=0 w=0 的概率更小,所以更倾向于平滑。

<think>我们正在讨论XGBoost中L1和L2正则项的经验参数值。根据之前的对话,用户已经了解了XGBoost的基本参数,现在特别关注正则项参数(reg_alpha和reg_lambda)的常用设置。 在XGBoost中,L1正则项由参数`reg_alpha`(也称为alpha)控制,L2正则项由参数`reg_lambda`(也称为lambda)控制。这两个参数的作用是向损失函数添加正则化项,以控制模型的复杂度,防止过拟合。 引用[1]和[2]提供了关于L1和L2正则化的背景知识:L1正则化可以产生稀疏权重矩阵(即许多权重为0),适用于特征选择;L2正则化则使权重参数整体变小,产生平滑的效果。引用[3]提到从贝叶斯角度看,L1相当于拉普拉斯先验,L2相当于高斯先验。引用[4]则指出XGBoost使用一阶和二阶导数,并且将损失函数的选取和模型优化分开,正则项是目标函数中的一部分。 根据XGBoost的官方文档和实际应用经验,这两个参数的常用经验值范围如下: - **`reg_alpha` (L1正则化权重,alpha)**: - 作用:增加该值会使得更多权重变为0,从而减少模型复杂度,并可能提高泛化能力。 - 经验值范围:通常设置在0到1之间,但也可以更高。常用起始值为0(即不使用L1正则化),如果特征数量非常多且希望进行特征选择,可以尝试从0.1开始,逐步增加。 - 具体建议:在特征数量很大(例如成千上万)且怀疑很多特征不相关时,使用L1正则化。例如,在点击率预测或文本分类中,可以设置`reg_alpha=0.1`。如果效果不明显,可以尝试增加到0.5或1,但要注意不要设置得太大,以免模型欠拟合。 - **`reg_lambda` (L2正则化权重,lambda)**: - 作用:增加该值会使得权重整体变小,从而减少模型的波动性(方差),提高泛化能力。 - 经验值范围:通常设置在0.110之间。默认值为1(XGBoost的默认设置),这是一个比较合理的起点。 - 具体建议:在大多数情况下,L2正则化比L1更常用,因为L2通常能更好地防止过拟合。如果模型出现过拟合(训练集表现很好,验证集表现差),可以尝试逐步增加`reg_lambda`(例如1, 2, 5, 10)。如果模型欠拟合,可以减小`reg_lambda`(例如0.1或0.01)。 注意:这两个参数可以同时使用,即同时添加L1和L2正则化。但一般情况下,我们不会同时设置较大的值,因为这样可能会过度约束模型。 调参建议: 1. 首先,设置`reg_lambda=1`(默认值),`reg_alpha=0`(即不使用L1),然后调整其他参数(如树的深度、学习率等)。 2. 如果模型仍然过拟合,再考虑增加`reg_lambda`(例如增加到5或10)或者尝试使用`reg_alpha`(例如0.1)。 3. 使用交叉验证来评估不同参数组合的效果。 示例参数设置: ```python params = { 'objective': 'binary:logistic', 'learning_rate': 0.1, 'n_estimators': 1000, 'max_depth': 6, 'subsample': 0.8, 'colsample_bytree': 0.8, 'reg_alpha': 0, # 初始不使用L1 'reg_lambda': 1, # 默认L2 'seed': 42 } ``` 如果发现模型过拟合,可以调整正则化参数: ```python # 尝试增加L2正则化权重 params['reg_lambda'] = 5 # 或者尝试加入L1正则化 params['reg_alpha'] = 0.1 ``` 总结: | 参数 | 作用 | 常用经验值范围 | 调优建议 | |------|------|----------------|----------| | reg_alpha (alpha) | L1正则化权重,产生稀疏权重 | 0~1(或更高) | 特征多且需要特征选择时使用,从0.1开始 | | reg_lambda (lambda) | L2正则化权重,压缩权重 | 0.1~10 | 默认1,过拟合时增加(如5或10) | 注意:这些值都是经验性的,具体问题需要具体分析。实际应用中,建议使用网格搜索(GridSearch)或随机搜索(RandomizedSearch)来寻找最优值。 如果用户需要更具体的建议,可以提供数据集的细节(如样本量、特征数、任务类型等)。</think>### XGBoost中L1/L2正则项参数详解及经验值 在XGBoost中,L1和L2正则项是控制模型复杂度的关键参数,可有效防止过拟合。根据引用[1][2][3][4]的数学原理,结合实践应用经验,以下是详细解析: #### 1. L1正则项(`reg_alpha`) - **数学定义**: $ \Omega(\theta)_{\text{L1}} = \alpha \sum_{j=1}^{T} |w_j| $ - **作用机制**: - 添加拉普拉斯先验(引用[3]),产生**稀疏解** - 将不重要特征的权重压缩至0(特征选择) - 适用于高维特征且存在冗余的场景 - **经验参数值**: - **常用范围**:$ 0 \leq \alpha \leq 1 $ - **起始值**:`0`(默认值) - **调优建议**: - 特征维度 > 1000时:尝试 $ \alpha = 0.1 \sim 0.5 $ - 需要特征选择时:$ \alpha = 0.5 \sim 1 $ - 示例:文本分类中常设 $ \alpha = 0.3 $ #### 2. L2正则项(`reg_lambda`) - **数学定义**: $ \Omega(\theta)_{\text{L2}} = \frac{1}{2} \lambda \sum_{j=1}^{T} w_j^2 $ - **作用机制**: - 添加高斯先验(引用[3]),产生**平滑压缩** - 使所有权重均匀减小,避免极端权重值 - 适用于噪声较多、特征相关性强的场景 - **经验参数值**: - **常用范围**:$ 1 \leq \lambda \leq 10 $ - **起始值**:`1`(默认值) - **调优建议**: - 低噪声数据:$ \lambda = 1 \sim 3 $ - 高噪声数据:$ \lambda = 5 \sim 10 $ - 示例:金融风控模型中常设 $ \lambda = 3 $ #### 3. 联合使用建议 | 场景 | L1 (`reg_alpha`) | L2 (`reg_lambda`) | 效果 | |---------------------|------------------|-------------------|--------------------------| | **高维特征选择** | 0.3~0.8 | 1~3 | 稀疏解+适度平滑 | | **噪声数据抑制** | 0~0.2 | 5~10 | 强压缩避免过拟合 | | **平衡泛化能力** | 0.1 | 3~5 | 折中方案(推荐起始点) | | **默认配置** | 0 | 1 | XGBoost原始设置 | #### 4. 调参策略 1. **初始设置**: ```python params = { 'reg_alpha': 0, # L1正则项 'reg_lambda': 1, # L2正则项 } ``` 2. **诊断过拟合**: - 训练误差 << 验证误差 → 增加 $ \lambda $ - 特征重要性差异大 → 增加 $ \alpha $ 3. **网格搜索示例**: ```python param_grid = { 'reg_alpha': [0, 0.1, 0.5, 1], 'reg_lambda': [1, 3, 5, 10] } ``` > **关键原理**:L1通过绝对值惩罚实现特征选择(引用[1]),L2通过平方惩罚实现权重平滑(引用[2])。XGBoost将正则项融入损失函数的二阶泰勒展开(引用[4]),使优化更高效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值