详细步骤说明β₃如何在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回归在变量选择和模型稀疏性方面的独特优势。