数学建模学习:岭回归和lasso回归

这篇具有很好参考价值的文章主要介绍了数学建模学习:岭回归和lasso回归。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

线性回归

在多元线性回归模型中,估计回归系数使用的是OLS,并在最后讨论异方差和多重共线性对模型的影响。事实上,回归中自变量的选择大有门道,变量过多可能会导致多重共线性问题导致回归系数不显著,甚至造成OLS估计失效。

岭回归和lasso回归在OLS回归模型的损失函数上加上了不同的惩罚项,该惩罚项由回归系数的函数组成,一方面,加入的惩罚项能够识别出模型中不重要的变量,对模型起到简化作用,可以看作逐步回归法的升级版,另一方面,加入的惩罚项让模型变得可估计,即使原数据矩阵不满足列满秩。

线性回归模型

在标准线性回归中,通过最小化真实值( y i y_{i} yi)和预测值( y ^ i \hat{y}_{i} y^i)的平方误差来训练模型,这个平方误差值也被称为残差平方和(RSS, Residual Sum Of Squares):
R S S = ∑ i = 1 n ( y i − y ^ i ) 2 R S S=\sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2} RSS=i=1n(yiy^i)2
最小二乘法即最小残差平方和,为:
J β ( β ) = arg ⁡ min ⁡ β ∑ i = 1 p ( y i − x i β i − β 0 ) 2 J_{\beta}(\beta)=\underset{\beta}{\arg \min } \sum_{i=1}^{p}\left(y_{i}-x_{i} \beta_{i}-\beta_{0}\right)^{2} Jβ(β)=βargmini=1p(yixiβiβ0)2
将其化为矩阵形式:
J β ( β ) = arg ⁡ min ⁡ β ( Y − X β ) T ( Y − X β ) J_{\beta}(\beta)=\underset{\beta}{\arg \min }(Y-X \beta)^{T}(Y-X \beta) Jβ(β)=βargmin(YXβ)T(YXβ)
求解为:
β = ( X T X ) − 1 X T Y \beta=\left(X^{T} X\right)^{-1} X^{T} Y β=(XTX)1XTY
由于求解 β \beta β,需要假设矩阵 X T X X^{T} X XTX是满秩矩阵
然而 X T X X^{T} X XTX往往不是满秩矩阵或者某些列之间的线性相关性比较大,例如会出现变量数(属性数)远超过样例数,导致 X X X的列数多于行数, X T X X^{T} X XTX显然不满秩,可解出多个 β \beta β,使得均方误差最小化,即在多元回归中,特征之间会出现多重共线问题,使用最小二乘法估计系数会出现系数不稳定问题,缺乏稳定性和可靠性。

岭回归

在矩阵 X T X X^{T} X XTX的对角线元素加一个小的常数值 λ \lambda λ,取其逆求得系数:
β ^ ridge  = ( X T X + λ I n ) − 1 X T Y \hat{\beta}_{\text {ridge }}=\left(X^{T} X+\lambda I_{n}\right)^{-1} X^{T} Y β^ridge =(XTX+λIn)1XTY
I n I_{n} In为单位矩阵,对角线全为1,类似山岭
λ \lambda λ是岭系数,改变其数值可以改变单位矩阵对角线的值

随后代价函数 J β ( β ) J_{\beta}(\beta) Jβ(β) R S S RSS RSS基础上加入对系数值的惩罚项:
J β ( β ) = R S S + λ ∑ j = 0 n β j 2 = R S S + λ ∥ β ∥ 2 \begin{aligned} J_{\beta}(\beta) &=R S S+\lambda \sum_{j=0}^{n} \beta_{j}^{2} \\ &=R S S+\lambda\|\beta\|^{2} \end{aligned} Jβ(β)=RSS+λj=0nβj2=RSS+λβ2
矩阵形式为:
J β ( β ) = ∑ i = 1 p ( y i − X i β ) 2 + λ ∑ j = 0 n β j 2 = ∑ i = 1 p ( y i − X i β ) + λ ∥ β ∥ 2 \begin{aligned} J_{\beta}(\beta) &=\sum_{i=1}^{p}\left(y_{i}-X_{i} \beta\right)^{2}+\lambda \sum_{j=0}^{n} \beta_{j}^{2} \\ &=\sum_{i=1}^{p}\left(y_{i}-X_{i} \beta\right)+\lambda\|\beta\|^{2} \end{aligned} Jβ(β)=i=1p(yiXiβ)2+λj=0nβj2=i=1p(yiXiβ)+λβ2
λ \lambda λ是超参数,用来控制对 β J \beta_{J} βJ的惩罚强度, λ \lambda λ值越大,生成的模型就越简单

λ \lambda λ的选择方法

1.岭迹分析法(主观性强)
(1)各回归系数的岭估计稳定
(2)用最小二乘法估计时符号不合理的回归系数,其岭估计的符号变得合理
(3)回归系数没有不合乎经济意义的绝对值
(4)残差平方和增长不太多

2.VIF法(方差膨胀因子)
β \beta β V I F VIF VIF>10,数据列与列指标之间存在多重共线性,因此我们可以不断增加 λ \lambda λ的值来不断减少 V I F VIF VIF,知道所有的 β \beta β V I F VIF VIF>10,确定理想的 λ \lambda λ的值

3.最小化均方预测误差(最广泛,最准确)
我们使用K折交叉验证的方法,来选择最佳的调整参数。所谓的k折交叉验证,就是把样本数据随机分为k等份,将第1个子样本作为验证集而保留不用,剩余k-1个子样本作为训练集来估计模型,再以此预测第1个子样本,并计算第1个子样本的均方预测误差(MSPE)。之后,将第2个子样本作为验证集,剩余k-1个子样本作为训练集来预测第2个子样本,并计算第二个子样本的MSPE。以此类推,将所有子样本的MSPE加总,可以获得整个样本的MSPE,最后选择调整参数,使得整个样本的MSPE最小,从而确定最理想的 λ \lambda λ的值,具有最佳的预测能力。
需要保证数据的量纲一致,若量纲不一致应对数据进行标准化处理。

Lasso回归

代价函数 J β ( β ) J_{\beta}(\beta) Jβ(β) R S S RSS RSS基础上加入对系数值的惩罚项:
J β ( β ) = R S S + λ ∑ j = 0 n ∣ β j ∣ = R S S + λ ∣ β ∣ \begin{aligned} J_{\beta}(\beta) &=R S S+\lambda \sum_{j=0}^{n} |\beta_{j}| \\ &=R S S+\lambda|\beta| \end{aligned} Jβ(β)=RSS+λj=0nβj=RSS+λβ
岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项,Lasso回归引入的是L1范数惩罚项。
矩阵形式为:
J β ( β ) = ∑ i = 1 p ( y i − X i β ) 2 + λ ∑ j = 0 n ∣ β j ∣ = ∑ i = 1 p ( y i − X i β ) + λ ∣ β ∣ \begin{aligned} J_{\beta}(\beta) &=\sum_{i=1}^{p}\left(y_{i}-X_{i} \beta\right)^{2}+\lambda \sum_{j=0}^{n} |\beta_{j}| \\ &=\sum_{i=1}^{p}\left(y_{i}-X_{i} \beta\right)+\lambda|\beta| \end{aligned} Jβ(β)=i=1p(yiXiβ)2+λj=0nβj=i=1p(yiXiβ)+λβ
其中 λ \lambda λ称为正则化参数,如果 λ \lambda λ选取过大,会把所有参数θ均最小化,造成欠拟合,如果 λ \lambda λ选取过小,会导致对过拟合问题解决不当。
岭回归与Lasso回归最大的区别在于岭回归引入的是L2范数惩罚项,Lasso回归引入的是L1范数惩罚项。Lasso回归能够使得损失函数中的许多 β \beta β均变成0,这点要优于岭回归,因为岭回归是要所有的 β \beta β均存在的,这样计算量Lasso回归将远远小于岭回归。(升级版的逐步回归
Lasso的缺点也很明显,Lasso没有显示解,只能使用近似估计算法(坐标轴下降法和最小角回归法)

案例分析

分析棉花年产量与种子费,化肥费,农药费,机械费,灌溉费之间的关系
数学建模学习:岭回归和lasso回归
因为数据量纲一致,所以不需要对数据进行标准化处理,我们可以使用stata来对数据进行回归处理,在回归处理结束后,计算 β \beta β的方差膨胀因子检验变量之间是否存在多重共线性

数学建模学习:岭回归和lasso回归

我们可以明显看到回归系数的 V I F VIF VIF明显大于10,因此变量之间有较强的多重共线性。
由于lasso回归的计算量显著小于岭回归,因此我们在处理多重共线性回归分析中大多使用lasso回归,在选择 λ \lambda λ时,岭迹分析法具有较强的主观性,不利于准确的测定,而 V I F VIF VIF法在实际中几乎不用,因为岭回归基本筛选不出变量,所以在实际生活大多使用最小化均方预测误差方法

数学建模学习:岭回归和lasso回归
通过对数据进行最小化均方预测误差,stata会在最小的MSPE的一栏中标注*号,以此确定合适的 λ \lambda λ的值。
数学建模学习:岭回归和lasso回归
上表右边第1列即为Lasso所估计的变量系数。其中,除常数项外,只有3个变量的系数为非零,而其余变量(未出现在表中)的系数则为 0。考虑到作为收缩估计量的Lasso存在偏差(bias),上表右边第2列汇报了“Post Lasso”估计量的结果,即仅使用Lasso进行变量筛选,然后扔掉 Lasso 的回归系数,再对筛选出来的变量进行OLS回归。
注意:以上结果可能随着我们之前设置的随机数种子变化,因为lasso回归的估计是近似算法,且剔除的多重共线性变量是相对的。

总结

岭回归在stata使用中会存在bug,如遇到需要岭回归计算的问题,最好使用python实现
何时使用lasso回归:
我们首先使用一般的OLS对数据进行回归,然后计算方差膨胀因子 V I F VIF VIF,如果 V I F VIF VIF>10时,变量之间存在多重共线性,此时我们需要对变量进行筛选。
我们可以使用逐步回归法来筛选自变量,让回归中仅留下显著的自变量来抵消多重共线性的影响,在学习lasso后可以把lasso回归视为逐步回归法的进阶版,我们可以使用lasso回归来帮我们筛选出不重要的变量,步骤如下:
(1)判断自变量的量纲是否一样,如果不一样则首先进行标准化的预处理;(2)对变量使用lasso回归,记录下lasso回归结果表中回归系数不为0的变量,这些变量就是最终我们要留下来的重要变量,其余未出现在表中的变量可视为引起多重共线性的不重要变量。
在得到了重要变量后,我们实际上就完成了变量筛选,此时我们只将这些重要变量视为自变量,然后进行回归,并分析回归结果即可。(注意:此时的变量可以是标准化前的,也可以是标准化后的,因为lasso只起到变量筛选的目的)文章来源地址https://www.toymoban.com/news/detail-473281.html

岭回归python代码

def reg_model_Ridge(x,y,alphas,dim):
    '''
    ;岭回归估计
    :param x:
    :param y:
    :param alphas: 随机生成多个模型参数Lambda
    :param dim:维度
    :return: ridge_B 最优模型的系数
    '''
    model_coff=[]
    for alpha in alphas:
        ridge = Ridge(alpha=alpha,normalize=True)
        ridge.fit(x,y)
        model_coff.append(ridge.coef_)
    # if dim<=10:
    #plot_data(alphas, model_coff, 'Log Alpha', 'Cofficients', 'alpha系数与岭回归系数的关系 ,dim='+str(dim))
    # 交叉验证,找到模型最优的Lambda值
    ridge_cv= RidgeCV(alphas=alphas,normalize=True,scoring="neg_mean_absolute_error", cv=5)
    ridge_cv.fit(x,y)
    ridge_best_lambda = ridge_cv.alpha_
    # 建立最优模型
    ridge = Ridge(alpha=ridge_best_lambda,normalize=True)
    ridge.fit(x,y)
    # 得到最优模型的系数
    ridge_B = ridge.coef_
    return ridge_B

到了这里,关于数学建模学习:岭回归和lasso回归的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模matlab实现多元线性回归

            多元线性回归是统计学中一种常用的回归分析方法,用于研究多个自变量对一个连续因变量的关系。它基于线性假设,假设因变量与自变量之间存在线性关系。         在多元线性回归中,我们考虑多个自变量的影响,并试图找到一条最佳拟合直线(或超平面

    2024年02月02日
    浏览(48)
  • 【数学建模】多元线性回归(Python&Matlab代码实现)

    目录 1 概述 2 算例1 2.1 算例 2.2 Python代码实现  2.3 结果 3 算例2  3.1 算例 3.2 Python代码 3.3 结果 4 算例3 4.1 算例 4.2 Python代码 4.3 结果 5 算例4——Matlab代码实现 5.1 算例 5.2 Matlab代码实现 5.3 结果  6 写在最后 一元线性回归模型研究的是一个因变量与一个自变量之间呈直线趋势的

    2023年04月15日
    浏览(48)
  • 数学建模学习:岭回归和lasso回归

    线性回归 在多元线性回归模型中,估计回归系数使用的是OLS,并在最后讨论异方差和多重共线性对模型的影响。事实上,回归中自变量的选择大有门道,变量过多可能会导致多重共线性问题导致回归系数不显著,甚至造成OLS估计失效。 岭回归和lasso回归在OLS回归模型的损失函

    2024年02月08日
    浏览(49)
  • 数学建模【基于清风】:相关系数法与多元线性回归

    个人理解为:如果当X增加时,Y趋向于减少,斯皮尔曼,皮尔逊相关系数则为负。斯皮尔曼,皮尔逊相关系数为零表明当X增加时Y没有任何趋向性。当X和Y越来越接近完全的单调相关时,斯皮尔曼相关系数会在绝对值上增加。 如 但是,对于相关系数来说,相关系数的大小与其

    2024年02月08日
    浏览(58)
  • 【数学建模笔记】【第七讲】多元线性回归分析(二):虚拟变量的设置以及交互项的解释,以及基于Stata的普通回归与标准化回归分析实例

    温馨提示: 本文共有9683字,阅读并理解全文需要半小时左右 书接上文,上文谈到内生性的解决之后,我们对回归问题的探究还没有完。 比如下面这个问题: 我们说线性回归他的表达式可以是广义的,可以含有二次项,可以含有对数项,那么含有对数项的模型中的β怎么解释

    2023年04月25日
    浏览(55)
  • 数学建模常用模型(五):多元回归模型

    由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型。所以在遇到有些无法用机理分析建立数学模型的时候,通常采取搜集大量数据的办法,基于对数据的统计分析去建立模型,其中用途最为广泛的一类随

    2024年02月13日
    浏览(44)
  • 多元线性回归-Lasso

    目录 1.Lasso与多重共线性 2. Lasso的核心作用:特征选择 3. 选取最佳的正则化参数取值          Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator),由于这个名称过于复杂所以简称为Lasso,和岭回归一样,Lasso是用来作用于多重共线性的算法,不过Lass

    2024年02月16日
    浏览(49)
  • 数学建模-线性回归

    回归分析: 通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。 本次主要学习线性回归。(划分依据是因变量Y的类型) ps. other 0-1回归,定序回归,计数回归,生存回归 a. : 相关性 , Y , X 相关性 != 因果性 Y 是需

    2023年04月09日
    浏览(47)
  • 数学建模matlab实现一元线性回归

            一元线性回归是统计学中用于建立一个自变量(或称为解释变量、预测变量)和一个因变量(或称为响应变量、被预测变量)之间的线性关系的回归模型。它假设两个变量之间存在一个直线关系,通过拟合这条直线,可以用自变量的值来预测因变量的值。     

    2024年01月21日
    浏览(51)
  • 数学建模学习---非线性规划

    目录 前言 一、非线性规划问题是什么? 二、非线性规划的数学模型 1.一般形式 三、线性规划的 Matlab 解法 Matlab 中非线性规划的数学模型: 2.Matlab 中的命令: 本篇讲述非线性规划问题极其matlab解法 如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包