LASSO回归(L1回归L1正则化)举例说明:正则化项使不重要的特征系数逐渐为零0的过程

详细步骤说明β₃如何在LASSO回归中变为零

为了深入理解LASSO回归如何将回归系数β₃缩减为零,我们将通过更详细的步骤,结合数学推导和计算,来演示这一过程。

1. 问题描述

我们有一个用于预测房屋价格 y y y 的数据集,包含以下特征:

  • 面积 ( x 1 x_1 x1)
  • 卧室数量 ( x 2 x_2 x2)
  • 距市中心距离 ( x 3 x_3 x3)

数据集如下:

样本编号 面积 ( x 1 x_1 x1) 卧室数量 ( x 2 x_2 x2) 距市中心距离 ( x 3 x_3 x3) 价格 ( y y y)
1 50 2 10 200
2 60 3 9 250
3 70 3 7 300
4 80 4 6 350
5 90 4 4 400

我们希望建立一个线性回归模型:
y = β 0 + β 1 x 1 + β 2 x 2 + β 3 x 3 y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 y=β0+β1x1+β2x2+β3x3

并使用LASSO回归来估计参数,使得β₃被缩减为零。

2. 数据标准化

在进行LASSO回归前,我们需要对数据进行标准化,以确保各特征在同一尺度上,防止正则化项对不同量级的特征产生不平衡影响。

2.1 计算均值和标准差

计算均值:

  • x ˉ 1 = 50 + 60 + 70 + 80 + 90 5 = 70 \bar{x}_1 = \frac{50 + 60 + 70 + 80 + 90}{5} = 70 xˉ1=550+60+70+80+90=70
  • x ˉ 2 = 2 + 3 + 3 + 4 + 4 5 = 3.2 \bar{x}_2 = \frac{2 + 3 + 3 + 4 + 4}{5} = 3.2 xˉ2=52+3+3+4+4=3.2
  • x ˉ 3 = 10 + 9 + 7 + 6 + 4 5 = 7.2 \bar{x}_3 = \frac{10 + 9 + 7 + 6 + 4}{5} = 7.2 xˉ3=510+9+7+6+4=7.2
  • y ˉ = 200 + 250 + 300 + 350 + 400 5 = 300 \bar{y} = \frac{200 + 250 + 300 + 350 + 400}{5} = 300 yˉ=5200+250+300+350+400=300

计算标准差:

  • s x 1 = ∑ ( x 1 i − x ˉ 1 ) 2 n = 14.1421 s_{x_1} = \sqrt{\frac{\sum (x_{1i} - \bar{x}_1)^2}{n}} = 14.1421 sx1=n∑(x1i−xˉ1)2 =14.1421
  • s x 2 = ∑ ( x 2 i − x ˉ 2 ) 2 n = 0.7483 s_{x_2} = \sqrt{\frac{\sum (x_{2i} - \bar{x}_2)^2}{n}} = 0.7483 sx2=n∑(x2i−xˉ2)2 =0.7483
  • s x 3 = ∑ ( x 3 i − x ˉ 3 ) 2 n = 2.1360 s_{x_3} = \sqrt{\frac{\sum (x_{3i} - \bar{x}_3)^2}{n}} = 2.1360 sx3=n∑(x3i−xˉ3)2 =2.1360
  • s y = ∑ ( y i − y ˉ ) 2 n = 70.7107 s_{y} = \sqrt{\frac{\sum (y_i - \bar{y})^2}{n}} = 70.7107 sy=n∑(yi−yˉ)2 =70.7107

2.2 标准化数据

对于每个特征和目标变量,计算标准化值:
x i j std = x i j − x ˉ j s x j x_{ij}^{\text{std}} = \frac{x_{ij} - \bar{x}j}{s{x_j}} xijstd=sxjxij−xˉj

y i std = y i − y ˉ s y y_i^{\text{std}} = \frac{y_i - \bar{y}}{s_y} yistd=syyi−yˉ

标准化后的数据如下:

样本编号 x 1 std x_1^{\text{std}} x1std x 2 std x_2^{\text{std}} x2std x 3 std x_3^{\text{std}} x3std y std y^{\text{std}} ystd
1 -1.4142 -1.6036 1.3093 -1.4142
2 -0.7071 -0.2673 0.8433 -0.7071
3 0 -0.2673 -0.0937 0
4 0.7071 1.0690 -0.5619 0.7071
5 1.4142 1.0690 -1.4970 1.4142

3. 建立LASSO回归模型

标准化后,我们的模型为:
y std = β 1 x 1 std + β 2 x 2 std + β 3 x 3 std y^{\text{std}} = \beta_1 x_1^{\text{std}} + \beta_2 x_2^{\text{std}} + \beta_3 x_3^{\text{std}} ystd=β1x1std+β2x2std+β3x3std

由于数据已中心化,截距项为零。

LASSO的目标函数为:
min ⁡ β { 1 2 n ∑ i = 1 n ( y i std − ∑ j = 1 3 β j x i j std ) 2 + λ ∑ j = 1 3 ∣ β j ∣ } \min_{\beta} \left\{ \frac{1}{2n} \sum_{i=1}^{n} \left( y_i^{\text{std}} - \sum_{j=1}^{3} \beta_j x_{ij}^{\text{std}} \right)^2 + \lambda \sum_{j=1}^{3} |\beta_j| \right\} βmin⎩ ⎨ ⎧2n1i=1∑n(yistd−j=1∑3βjxijstd)2+λj=1∑3∣βj∣⎭ ⎬ ⎫

4. 选择正则化参数 λ

为了使β₃缩减为零,需要选择合适的λ值。为了演示,我们将尝试不同的λ值,观察β₃的变化。

5. 使用坐标下降法求解

由于LASSO的目标函数是凸的且可分离,我们可以使用坐标下降法逐步更新每个参数。

5.1 计算必要的量

首先,计算每个特征与目标变量的相关性(即协方差):
z ~ j = 1 n ∑ i = 1 n x i j std y i std \tilde{z}j = \frac{1}{n} \sum{i=1}^{n} x_{ij}^{\text{std}} y_i^{\text{std}} z~j=n1i=1∑nxijstdyistd

  • 计算 z ~ 1 \tilde{z}_1 z~1:
    z ~ 1 = 1 5 ( ( − 1.4142 ) ( − 1.4142 ) + ( − 0.7071 ) ( − 0.7071 ) + 0 + 0.7071 × 0.7071 + 1.4142 × 1.4142 ) = 1 \tilde{z}_1 = \frac{1}{5} \left( (-1.4142)(-1.4142) + (-0.7071)(-0.7071) + 0 + 0.7071 \times 0.7071 + 1.4142 \times 1.4142 \right) = 1 z~1=51((−1.4142)(−1.4142)+(−0.7071)(−0.7071)+0+0.7071×0.7071+1.4142×1.4142)=1
  • 计算 z ~ 2 \tilde{z}_2 z~2:
    z ~ 2 = 1 5 ( ( − 1.6036 ) ( − 1.4142 ) + ( − 0.2673 ) ( − 0.7071 ) + 0 + 1.0690 × 0.7071 + 1.0690 × 1.4142 ) ≈ 0.946 \tilde{z}_2 = \frac{1}{5} \left( (-1.6036)(-1.4142) + (-0.2673)(-0.7071) + 0 + 1.0690 \times 0.7071 + 1.0690 \times 1.4142 \right) \approx 0.946 z~2=51((−1.6036)(−1.4142)+(−0.2673)(−0.7071)+0+1.0690×0.7071+1.0690×1.4142)≈0.946
  • 计算 z ~ 3 \tilde{z}_3 z~3:
    z ~ 3 = 1 5 ( 1.3093 × ( − 1.4142 ) + 0.8433 × ( − 0.7071 ) + 0 + ( − 0.5619 ) ( 0.7071 ) + ( − 1.4970 ) ( 1.4142 ) ) ≈ − 0.993 \tilde{z}_3 = \frac{1}{5} \left( 1.3093 \times (-1.4142) + 0.8433 \times (-0.7071) + 0 + (-0.5619)(0.7071) + (-1.4970)(1.4142) \right) \approx -0.993 z~3=51(1.3093×(−1.4142)+0.8433×(−0.7071)+0+(−0.5619)(0.7071)+(−1.4970)(1.4142))≈−0.993

5.2 更新公式

对于每个参数βₖ,更新公式为:
β k = S ( z ~ k , λ ) 1 \beta_k = \frac{S\left( \tilde{z}_k, \lambda \right)}{1} βk=1S(z~k,λ)

其中 S ( z , λ ) S(z, \lambda) S(z,λ) 是软阈值函数:
S ( z , λ ) = { z − λ , if z > λ 0 , if ∣ z ∣ ≤ λ z + λ , if z < − λ S(z, \lambda) = \begin{cases} z - \lambda, & \text{if } z > \lambda \\ 0, & \text{if } |z| \leq \lambda \\ z + \lambda, & \text{if } z < -\lambda \end{cases} S(z,λ)=⎩ ⎨ ⎧z−λ,0,z+λ,if z>λif ∣z∣≤λif z<−λ

5.3 尝试不同的 λ 值

5.3.1 λ = 0.5
  • 更新 β₁:
    β 1 = S ( 1 , 0.5 ) = 1 − 0.5 = 0.5 \beta_1 = S(1, 0.5) = 1 - 0.5 = 0.5 β1=S(1,0.5)=1−0.5=0.5
  • 更新 β₂:
    β 2 = S ( 0.946 , 0.5 ) = 0.946 − 0.5 = 0.446 \beta_2 = S(0.946, 0.5) = 0.946 - 0.5 = 0.446 β2=S(0.946,0.5)=0.946−0.5=0.446
  • 更新 β₃:
    β 3 = S ( − 0.993 , 0.5 ) = − 0.993 + 0.5 = − 0.493 \beta_3 = S(-0.993, 0.5) = -0.993 + 0.5 = -0.493 β3=S(−0.993,0.5)=−0.993+0.5=−0.493

结果: β₃未缩减为零。

5.3.2 λ = 0.993
  • 更新 β₁:
    β 1 = S ( 1 , 0.993 ) = 1 − 0.993 = 0.007 \beta_1 = S(1, 0.993) = 1 - 0.993 = 0.007 β1=S(1,0.993)=1−0.993=0.007
  • 更新 β₂:
    β 2 = S ( 0.946 , 0.993 ) = 0 ( 因为 ∣ 0.946 ∣ < 0.993 ) \beta_2 = S(0.946, 0.993) = 0 \quad (\text{因为 } |0.946| < 0.993) β2=S(0.946,0.993)=0(因为 ∣0.946∣<0.993)
  • 更新 β₃:
    β 3 = S ( − 0.993 , 0.993 ) = − 0.993 + 0.993 = 0 \beta_3 = S(-0.993, 0.993) = -0.993 + 0.993 = 0 β3=S(−0.993,0.993)=−0.993+0.993=0

结果: β₃被缩减为零,但β₂也被缩减为零,β₁非常小。

5.3.3 λ = 0.7
  • 更新 β₁:
    β 1 = S ( 1 , 0.7 ) = 1 − 0.7 = 0.3 \beta_1 = S(1, 0.7) = 1 - 0.7 = 0.3 β1=S(1,0.7)=1−0.7=0.3
  • 更新 β₂:
    β 2 = S ( 0.946 , 0.7 ) = 0.946 − 0.7 = 0.246 \beta_2 = S(0.946, 0.7) = 0.946 - 0.7 = 0.246 β2=S(0.946,0.7)=0.946−0.7=0.246
  • 更新 β₃:
    β 3 = S ( − 0.993 , 0.7 ) = − 0.993 + 0.7 = − 0.293 \beta_3 = S(-0.993, 0.7) = -0.993 + 0.7 = -0.293 β3=S(−0.993,0.7)=−0.993+0.7=−0.293

结果: β₃仍未缩减为零。

5.3.4 λ = 0.993

此时λ等于β₃的绝对值。

  • 更新 β₃:
    β 3 = S ( − 0.993 , 0.993 ) = 0 \beta_3 = S(-0.993, 0.993) = 0 β3=S(−0.993,0.993)=0

结果: β₃被缩减为零。

5.4 结论

当 λ ≥ 0.993 时,β₃会被缩减为零。然而,过大的 λ 也会导致其他参数缩减过多,模型可能无法很好地拟合数据。

6. 验证模型性能

为了验证模型性能,我们可以计算残差平方和(RSS):
RSS = ∑ i = 1 n ( y i std − ∑ j = 1 3 β j x i j std ) 2 \text{RSS} = \sum_{i=1}^{n} \left( y_i^{\text{std}} - \sum_{j=1}^{3} \beta_j x_{ij}^{\text{std}} \right)^2 RSS=i=1∑n(yistd−j=1∑3βjxijstd)2

对于 λ = 0.993,参数为:

  • β₁ = 0.007
  • β₂ = 0
  • β₃ = 0

代入计算,可以发现模型无法很好地拟合数据。

7. 权衡与选择

为了在变量选择和模型拟合之间取得平衡,我们需要选择一个合适的 λ,使得:

  • β₃被缩减为零,达到变量选择的目的。
  • 其他参数(β₁和β₂)仍能保持较大的值,保证模型的拟合能力。

通过尝试 λ = 0.8,我们得到:

  • β₁ = 1 - 0.8 = 0.2
  • β₂ = 0.946 - 0.8 = 0.146
  • β₃ = -0.993 + 0.8 = -0.193

此时 β₃ 仍未为零,但值已经较小。

8. 最终选择

根据模型的实际需求,我们可能接受一个较小但非零的 β₃,或者通过交叉验证等方法找到最佳的 λ。

9. 总结

通过以上详细的计算步骤,我们可以得出:

  • LASSO回归通过增加正则化参数 λ,逐渐缩减回归系数的值。
  • 当 λ 达到某个阈值时,特定的系数(如 β₃)会被精确地缩减为零,实现变量选择。
  • 选择合适的 λ 需要在模型的复杂度和拟合效果之间进行权衡,通常通过交叉验证来确定。

10. 结论

通过更详细的步骤,我们展示了在LASSO回归中,如何通过调整正则化参数 λ,使得回归系数 β₃ 精确地缩减为零。这一过程体现了LASSO回归在变量选择和模型稀疏性方面的独特优势。

相关推荐
萌宠心语几秒前
宠物智能化听诊器的健康管理!
大数据·人工智能·科技·宠物
sp_fyf_20245 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23
论文阅读·人工智能·科技·语言模型·自然语言处理
Hoper.J24 分钟前
11. DPO 微调示例:根据人类偏好优化LLM大语言模型
人工智能·语言模型·自然语言处理·微调·dpo
jndingxin25 分钟前
OpenCV特征检测(12)检测图像中的潜在角点函数preCornerDetect()的使用
人工智能·opencv·计算机视觉
明志刘明1 小时前
基于MindSpore实现Transformer机器翻译(下)
人工智能·深度学习·自然语言处理·transformer·机器翻译
张小生1802 小时前
《深度学习》—— 神经网络中常用的激活函数
人工智能·深度学习·神经网络
俏皮舌大烟佬2 小时前
NLP基础
人工智能·深度学习·自然语言处理·nlp
Kenneth風车2 小时前
【第十二章:Sentosa_DSML社区版-机器学习之回归】
人工智能·算法·低代码·机器学习·数据挖掘·数据分析·回归
you_are_my_sunshine*3 小时前
解决方案:TypeError: no numeric df to plot
python·机器学习