岭回归与Lasso回归

岭回归与Lasso回归

为什么引入岭回归

传统的多元线性回归可能存在多重共线性,岭回归可以看作是传统多元线性回归的升级版,可以打破多重共线性的限制。

和多元线性回归相似,岭回归的参数估计也是采用OLS(极大似然估计)原理

多元线性回归的参数估计:
β ^ = a r g min ⁡ β ^ ∑ i = 1 n ( y i − x i ′ β ^ ) 2 \hat{\beta}=\mathrm{arg}\min_{\hat{\beta}}\sum_{i=1}^n(y_i-x_i^{\prime}\hat{\beta})^2 β^​=arg β^​min ​i =1 ∑n ​(y i ​−x i ′​β^​)2
其中,
β ^ = ( β 1 ^ , β 2 ^ , ⋯ , β k ^ ) ′ \hat{\beta}=(\hat{\beta_1},\hat{\beta_2},\cdots,\hat{\beta_k})^{\prime}β^​=(β1 ​^​,β2 ​^​,⋯,βk ​^​)′
岭回归的参数估计:
β ^ = a r g min ⁡ β ^ ∑ i = 1 n ( y i − x i ′ β ^ ) 2 + λ ∑ i = 1 n β i 2 ^ = a r g min ⁡ β ^ ∑ i = 1 n ( Y − X ′ β ^ ) ′ ( Y − X ′ β ^ ) + λ ∑ i = 1 n β ′ ^ β ^ \hat{\beta}=\mathrm{arg}\min_{\hat{\beta}}\sum_{i=1}^n(y_i-x_i^{\prime}\hat{\beta})^2+\lambda\sum_{i=1}^n\hat{\beta_i^2}\\qquad\qquad\qquad=\mathrm{arg}\min_{\hat{\beta}}\sum_{i=1}^n(Y-X^{\prime}\hat{\beta})^{\prime}(Y-X^{\prime}\hat{\beta})+\lambda\sum_{i=1}^n\hat{\beta^{\prime}}\hat{\beta}β^​=arg β^​min ​i =1 ∑n ​(y i ​−x i ′​β^​)2 +λi =1 ∑n ​βi 2 ​^​=arg β^​min ​i =1 ∑n ​(Y −X ′β^​)′(Y −X ′β^​)+λi =1 ∑n ​β′^​β^​
可以得出,λ → 0 \lambda\to0 λ→0时,岭回归趋近于多元线性回归,λ → ∞ \lambda\to\infty λ→∞时,β ^ → 0 k × 1 \hat{\beta}\to0_{k\times 1}β^​→0 k ×1 ​

后面,有了理论推导,我们就知道,岭回归可以破除多重共线性的限制。

岭回归的理论推导

这里需要几个对向量求导的法则,这不需要大家掌握,只是为了方便推导

向量x的求导公式:
{ ∂ A X ∂ X = A T ∂ X T A X ∂ X = ( A + A T ) X \begin{cases}\frac{\partial AX}{\partial X}=A^T\\frac{\partial X^TAX}{\partial X}=(A+A^T)X\end{cases}{∂X ∂A X ​=A T ∂X ∂X T A X ​=(A +A T )X ​

令L = a r g min ⁡ β ^ ∑ i = 1 n ( Y − X ′ β ^ ) ′ ( Y − X ′ β ^ ) + λ ∑ i = 1 n β ′ ^ β ^ L=\mathrm{arg}\min_{\hat{\beta}}\sum_{i=1}^n(Y-X^{\prime}\hat{\beta})^{\prime}(Y-X^{\prime}\hat{\beta})+\lambda\sum_{i=1}^n\hat{\beta^{\prime}}\hat{\beta}L =arg min β^​​∑i =1 n ​(Y −X ′β^​)′(Y −X ′β^​)+λ∑i =1 n ​β′^​β^​

则∂ L ∂ β ^ = − 2 X ′ Y + 2 X ′ X β ^ + 2 λ β ^ = 0 \frac{\partial L}{\partial \hat{\beta}}=-2X^{\prime}Y+2X^{\prime}X\hat{\beta}+2\lambda\hat{\beta}=0 ∂β^​∂L ​=−2 X ′Y +2 X ′X β^​+2 λβ^​=0得出( X ′ X + λ I ) β ^ = X ′ Y (X^{\prime}X+\lambda I)\hat{\beta}=X^{\prime}Y (X ′X +λI )β^​=X ′Y

由于X ′ X X^{\prime}X X ′X半正定,则X ′ X X^{\prime}X X ′X的特征值均为非负数,加上λ I \lambda I λI后,X ′ X + λ I X^{\prime}X+\lambda I X ′X +λI的特征值均为正数,所以
β ^ = ( X ′ X + λ I ) − 1 X ′ Y ( λ > 0 ) \hat{\beta}=(X^{\prime}X+\lambda I)^{-1}X^{\prime}Y\quad(\lambda>0)β^​=(X ′X +λI )−1 X ′Y (λ>0 )

我们可以通过下面几种方法选择λ \lambda λ

岭迹分析

岭迹:λ \lambda λ从0到+ ∞ +\infty +∞变化,得到的β ^ = ( β 1 ^ , β 2 ^ , ⋯ , β k ^ ) ′ \hat{\beta}=(\hat{\beta_1},\hat{\beta_2},\cdots,\hat{\beta_k})^{\prime}β^​=(β1 ​^​,β2 ​^​,⋯,βk ​^​)′中每个分量的变化曲线

这是我用Matlab跑出来的一个岭迹

岭回归与Lasso回归

岭迹法选择λ \lambda λ的一般原则是:
(1)各回归系数的岭估计基本稳定
(2)用最小二乘估计时符号不合理的回归系数,其岭估计的符号变得合理
(3)回归系数没有不合乎经济意义的绝对值
(4)残差平方和增大不太多

可以选择λ = 50 \lambda=50 λ=50

; VIF法(方差膨胀因子)

VIF是方差膨胀因子,定义如下

假设现在有k k k个自变量,那么第m m m个自变量的V I F m VIF_m V I F m ​定义为
V I F m = 1 1 − R 1 ∼ k \ m VIF_m=\frac{1}{1-R_{1\sim k\backslash m}}V I F m ​=1 −R 1 ∼k \m ​1 ​
其中,R 1 s i m k \ m R_{1\sim k\backslash m}R 1 s imk \m ​是将第m m m个自变量作为因变量,对剩下的k − 1 k-1 k −1个自变量回归得到的拟合优度,V I F m VIF_m V I F m ​越大。说明第m m m个变量和其他k − 1 k-1 k −1个自变量相关性越强

回归模型的V I F VIF V I F定义为
V I F = max ⁡ { V I F 1 , V I F 2 , ⋯ , V I F k } VIF=\max {VIF_1,VIF_2,\cdots,VIF_k}V I F =max {V I F 1 ​,V I F 2 ​,⋯,V I F k ​}
如果V I F > 10 VIF>10 V I F >10,可以认为存在多重共线性

可以不断增加λ \lambda λ,直到所有的β ^ < 0 \hat{\beta}

可以使用stata计算VIF

例1:对下列数据进行多元回归,检验多重共线性

年份单产种子费化肥费农药费机械费灌溉费19901017106.05495.15305.145.956.119911036.5113.55561.45343.868.5593.31992792104.55584.8541473.2104.551993861132.75658.35453.7582.95107.551994901.5174.3904.05625.05114152.11995922.5230.41248.75834.45143.85176.41996916.5238.21361.55720.75165.15194.251997976.5260.11337.4727.65201.9291.7519981024.5270.61195.8775.5220.5271.3519991003.5286.21171.8610.95195284.5520001069.5282.91151.55599.85190.65277.3520011168.5317.851105.8553.8211.05290.120021228.5319.651213.05513.75231.6324.1520031023368.41274.1567.45239.85331.820041144.5466.21527.9487.35408336.1520051122449.851703.25555.15402.3358.820061276.55371888.5637.2480.75428.420071233565.52009.85715.65562.05456.9

先导入数据

岭回归与Lasso回归

需要勾选”将第一行作为变量名”

岭回归与Lasso回归
进行多元线性回归可以输入语句
reg &#x5355;&#x4EA7; &#x79CD;&#x5B50;&#x8D39; &#x5316;&#x80A5;&#x8D39; &#x519C;&#x836F;&#x8D39; &#x673A;&#x68B0;&#x8D39; &#x704C;&#x6E89;&#x8D39;

在回归完成后输入下列语句

estat vif

结果如下

岭回归与Lasso回归

VIF=68.23,说明多重共线性比较严重,需要剔除变量种子费,再继续回归。直到无多重共线性为止。

岭回归的Matlab实现

例2:对下列数据进行分析

序号需求量本品价格竞品价格平均收入水平广告投入1128906569.224343.17117021285065.970.674347.591162.2631318065.474.774356.441164.0641378565.34754369.711193.1351388066754387.41241.556126806977.294409.511254.157132906979.064436.051149.5781349869.2581.374467.011200.0691198074.56844502.41220.410120857891.614542.21082.7

data=[12890 65.00   69.22   4343.17 1170.00
12850   65.90   70.67   4347.59 1162.26
13180   65.40   74.77   4356.44 1164.06
13785   65.34   75.00   4369.71 1193.13
13880   66.00   75.00   4387.40 1241.55
12680   69.00   77.29   4409.51 1254.15
13290   69.00   79.06   4436.05 1149.57
13498   69.25   81.37   4467.01 1200.06
11980   74.56   84.00   4502.40 1220.40
12085   78.00   91.61   4542.20 1082.70];%数据矩阵

Y=data(:,1);%因变量组成的向量
[size_n,~]=size(data);%size_n表示样本容量
X=[ones(size_n,1),data(:,2:5)];%自变量矩阵左侧拼接全是1的向量
corr=corrcoef(data);%计算相关系数矩阵
Xtag={'需求量','本品价格','竞品价格','平均收入水平','广告投入'};
figure
heatmap(Xtag,Xtag,corr)%绘制相关系数热力图
beta=[];
[~,size_x]=size(X);
One_sq=linspace(0,100,1001);
for lambda=0:0.1:100
    betanew=(X'*X+lambda*eye(size_x))^(-1)*X'*Y;
    beta=[beta,betanew];%对每一个lambda,计算其回归系数
end
figure
for j=2:size_x
    plot(One_sq,beta(j,:))%绘制岭迹图
    hold on
end
legend(['\beta_' num2str(1)],['\beta_' num2str(2)],['\beta_' num2str(3)],['\beta_' num2str(4)])
title('岭迹分析')
xlabel('\lambda')
ylabel('\beta')

运行结果

岭回归与Lasso回归
可以发现,竞品价格与本品价格之间相关性较强,竞品价格与平均收入水平之间相关性较强,平均收入水平与本品价格之间相关性较强。存在多重共线性,应该使用岭回归。
岭回归与Lasso回归

λ = 50 \lambda=50 λ=50时,y = 0.1992 − 107.1376 x 1 − 19.3472 x 2 + 4.4527 x 3 + 1.8729 x 4 y=0.1992-107.1376x_1-19.3472x_2+4.4527x_3+1.8729x_4 y =0.1992 −107.1376 x 1 ​−19.3472 x 2 ​+4.4527 x 3 ​+1.8729 x 4 ​

逐步回归的进化——Lasso回归

Lasso回归的参数估计
β ^ = a r g min ⁡ β ^ ∑ i = 1 n ( y i − x i ′ β ^ ) 2 + λ ∑ i = 1 n ∣ β i ∣ ^ \hat{\beta}=\mathrm{arg}\min_{\hat{\beta}}\sum_{i=1}^n(y_i-x_i^{\prime}\hat{\beta})^2+\lambda\sum_{i=1}^n\hat{|\beta_i|}β^​=arg β^​min ​i =1 ∑n ​(y i ​−x i ′​β^​)2 +λi =1 ∑n ​∣βi ​∣^​

与岭回归相比,Lasso回归的出现也是为了克服多重共线性,最大的优点是可以把不重要的变量回归系数压缩到0,而岭回归的任何回归系数都不会压缩到0,这比较像升级版的逐步回归。

Lasso回归的stata实现

这里用的数据还是例1的数据

先在stata的命令行内输入命令

findit lassopack

岭回归与Lasso回归

选择蓝色链接 lassopack from……

岭回归与Lasso回归

点击click here to install

第一步导入Excel数据

岭回归与Lasso回归

需要勾选”将第一行作为变量名”

岭回归与Lasso回归

输入下列内容

cvlasso 单产 种子费 化肥费 农药费 机械费 灌溉费,lopt seed(520)

tip:可以在变量窗口双击变量名,快速把变量输入到命令窗口

岭回归与Lasso回归

岭回归与Lasso回归

运行结果如下

岭回归与Lasso回归

这说明,除了种子费,农药费,灌溉费,其他的变量均为引起多重共线性的变量,被剔除

我们的回归得出的模型如下:
y = 956.8974544 + 0.3205122 x 1 − 0.3173749 x 3 + 0.6905996 x 5 y=956.8974544+0.3205122x_1-0.3173749x_3+0.6905996x_5 y =956.8974544 +0.3205122 x 1 ​−0.3173749 x 3 ​+0.6905996 x 5 ​

Original: https://blog.csdn.net/C1172440795/article/details/126151963
Author: Logistic..
Title: 岭回归与Lasso回归

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/634447/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球