首页 > 编程知识 正文

lasso回归系数解读,lasso—logistic模型

时间:2023-05-05 17:25:39 阅读:49765 作者:3995

LASSO回归和Ridge回归的线性回归算法一般采用最小二乘法Ordinary Least Squares进行参数估计,这种方法在进行参数估计时依赖于特征的独立性。 样本特征相关,设计矩阵各列接近线性相关时,设计矩阵接近奇异,采用常规最小二乘法估计模型参数对观测目标随机误差敏感,参数估计方差过大,求解模型不稳定。 具体而言,取值和真值之间存在较大偏差时,可能会出现与实际意义不同的符号。 在线性回归中,如果参数过大或特征过多,如图所示,容易发生拟合现象。 给定的数据往往含有噪声,用模型直接拟合这些有噪声的数据会导致过拟合,模型在学习噪声特性、增加模型复杂度的同时,降低了模型的泛化能力。

线性回归中的参数由求得,LASSO回归和Ridge回归是为了解决线性回归中的两类问题:1.拟合问题2 .用正规方程方法求解参数过程中出现的不可逆问题。 如果样本的特征数多于样本数,则线性回归中容易出错。 Ridge回归最初用于特征多于样本数的情况,但现在也用于通过对估计进行偏倚来获得更好的估计,通过引入惩罚项来减少不重要的参数在统计学上也称为削减(shrinkage )

为了避免参数过大,在目标函数后添加正规项,即罚项防止过拟合。 LASSO回归中使用的正则项为L1-norm,Ridge回归中使用的正则项为L2-norm,ElasticNet回归由L1-norm和L2-norm组合而成。 在线回归中他们目标函数的表现形式分别如下:

对于没有正规项的线性回归问题,使用Ordinary Least Squares求解。 Ridge回归,因此岭回归中的“岭”是矩阵对角线加上大于0的常数。

1 LASSO回归和Ridge回归问题提出考虑一般线性回归问题,给出n个数据样本点,其中每个为n维向量,每个为实数。 根据得到的输入,找到了映射,使误差平方和最小。 优化的目标是:

其中是要优化的参数。 现在,假设固定值,从一次导数为0的地方开始寻找的最小值。 求导于上式:

将得到的优化结果代入原优化目标:

给定样本点的平均值为零,即,上式的优化目标可以写为

可以用矩阵形式表示如下。

LASSO回归和Ridge回归分别在上式中加入L1正则项和L2正则项,分别用下式表示。

2 LASSO回归和Ridge回归的原理2.1几何解释L1和L2正则化项分别在目标函数中加入L1-norm和L2-norm项,即和。 针对Ridge回归的等价优化问题,将L2正则化项从目标函数中剔除并转化为约束条件,将参数限制为半径为t的超球.

要利用Lagrangian乘法器将上述约束问题转换为无约束问题,必须:

求解的问题是线性回归是凸优化问题,因此给出后可以看出是具有L2正则化项的Ridge回归。 因为常数项和参数没有关系,所以不管有没有。 因为是凸最优化问题,所以可以从强对偶性中得到两者的等价性。 同样,LASSO回归不受约束的问题包括:

以两个参数为例说明L1和L2正则化的几何含义,左图为L1正则化,右图为

L2正则化。

       图中红色椭圆线条是优化目标关于参数的等值线,假设没有约束没有约束条件,则最小值时椭圆的中心点,加入正则化项后相当于对参数施加约束,L1正则化参数被限制在菱形中,L2正则化参数被限制在圆中。两个区域的切点就是所求目标函数的最优值点。从图中可以看出L1正则化施加的约束会使得最优值在菱形顶点处取得,即。L2正则项则是容易在圆周上任意点相切。因此,L1正则项的结果容易产生稀疏解,常用来做特征选择。再次提醒,这个坐标轴和特征(数据)没关系,它完全是参数的坐标系,每个红色椭圆等值线上,可以取无数个,,这些, 有个共同的特点:用它们计算的目标函数值是相等的。

L2则是权重衰减,考虑一般优化问题:

       利用梯度下降求解上述问题:

       可以看出t+1步的参数在第t步的参数与相乘,所以会使得权重趋于0,即权重衰减。

       正则化可以降低模型复杂度,减少模型过拟合的风险,在回归问题中的解释是:当特征之间存在高度相关关系的时候,假设有两个特征高度负相关,那么不带正则化的回归问题可能会赋予二者近似相等的很大权重,这样加权起来的结果仍然较小,但是由于权重很大,就导致了过拟合问题。Ridge Regression会倾向于在相关特征之间均匀分布权重,Lasso则倾向于从相关特征中选取出一个,其余特征权值衰减为零。另外,正则化的目的也可以理解为使模型权重之间的方差较小。

2.2 贝叶斯解释

       贝叶斯学派中任何随机变量包括参数都是需要服从一定的分布,例如回归问题中给定参数和自变量后,观测值会服从kfdxg分布。假定参数也服从一个分布,即先验信息,那么回归问题就变为最大化后验概率,利用贝叶斯公式有:

       根据观测值会服从kfdxg分布,所以,可以看出已经得到线性回归问题的目标函数损失部分,这是利用kfdxg分布解决回归问题得到的。容易从wxdbm分布和kfdxg分布的表达式中看出来,假设参数服从的分布是wxdbm分布,可以得到LASSO回归,如果服从kfdxg分布,可以得到Ridge回归。若假设L1和L2中参数服从的是均值为0的分布,那么它们的表达式为:

       需要注意的一点是,上面给出的是单个参数的分布,而不是向量参数的分布

3 LASSO的求解方法 3.1 LARS

       最小角回归法(Least Angle Regression,LARS)算法是对前向梯度算法和前向选择算法的折中方法,保留前向梯度算法一定精确性的同时简化了前向梯度算法的迭代过程。具体算法如下。

       首先找到与因变量相关度最高的自变量,使用类似于前向梯度算法中的残差计算方法,得到新的目标,此时不用像前向梯度算法那样一步一步前进,而是直接前向走到下一个,使得和的相关度和与的相关度相同,此时残差就在和的角平分线方向上,沿着该方向继续走,直到第三个特征与的相关度和与、和的相同,将这些、等称为逼近特征集合,用该逼近特征集合的共同角分线作为新的逼近方向。以此循环直到足够小或者所有变量取完,算法停止,此时对应的系数为最终结果。

       该算法适合的情况有:1、特征数量远高于样本数量的情况;2、可以产生分段线性结果的完整路径,这在模型的交叉验证中极为有用;3、算法的最坏计算复杂度和最小二乘法类似,但是其计算速度几乎和前向选择算法一样。缺点是迭代方向根据目标的残差而定,对噪声极为敏感。

3.2坐标下降法

       梯度下降法是以梯度的负方向为下降方向进行迭代求得最优值的,坐标下降法则是以坐标轴方向,通过启发式的方式一步步迭代求解目标函数最小值。算法目标就是使得参数集在n个坐标轴上对目标函数做迭代下降,当n个坐标轴上的参数都收敛时目标函数最小,得最佳参数集。坐标下降法适合在单个维度上有闭式解,在整体维度上没有闭式解的问题,算法流程如下。

首先初始化参数,初始化迭代次数k;对于第k轮迭代,对n个参数依次进行迭代,每次迭代时以单个参数为变量求得目标函数的最小值,其余固定为常量,最小值可以通过求导得到。迭代的公式如下:

如果和在各个维度上的变化都足够小,取为最终结果,否则转入2继续迭代。

       由于Lasso的目标函数是凸的,根据优化理论,只要函数可以收敛即可得到全局最小值,但是由于Lasso不是严格凸的,所以可以会得到多个局部最小值,有时候得到的解会不同。在迭代过程中可能会得到稀疏解,即可能会被迭代为0。

4 使用Scikit-learn进行LASSO变换

       使用Scikit-learn进行LASSO变换时可以使用多种函数,它的目标函数为:

       使用时惩罚参数需要预置,和分别是数据集的特征向量和类别。Scikit-learn提供以下函数供进行LASSO变换。因为篇幅所限,这里仅对函数作用做以陈述,不解释函数中的各项参数,实际使用前推荐阅读Scikit-learn的官方文档,非常详细。

sklearn.linear_model.Lasso:基于坐标下降法求解LASSO模型,需要自己调节惩罚参数;sklearn.linear_model.lasso_path:基于坐标下降法计算LASSO系数路径;sklearn.linear_model.LassoCV:基于坐标下降法,通过交叉验证法来选择LASSO变换最佳惩罚参数,在初始化类的时候可以设置多个待选值,最终LassoCV会选出最合适的惩罚参数;sklearn.linear_model.lars_path:基于最小角回归法来计算LASSO系数路径;sklearn.linear_model.LassoLars:基于最小角回归法求解LASSO模型;sklearn.linear_model.LassoLarsCV:基于最小角回归法,通过交叉验证法来选择LASSO变换最佳惩罚参数,如果样本数量相对于特征数量少很多,它的速度要高于LassoCV。如果想探索惩罚参数更多相关值的话,由于最小角回归可以看到回归路径,此时适合使用LassoLarsCV;sklearn.linear_model.LassoLarsIC:基于Akaike信息准则(AIC)和贝叶斯信息准则(BIC)寻找最佳惩罚参数,不需要预置参数。使用K折交叉验证法需要K+1轮才能找到最佳参数,而LassoLarsIC只需一轮,相比于前面的方法更快。但是该方法使用条件是估计是来自大样本,并假设该模型是正确的(即这些数据确实是由假设的模型产生的)。当待求解的问题的条件数很差的时候(比如特征个数大于样本数量的时候),这些准则就会有崩溃的风险。所以除非我们知道数据是来自一个模型确定的大样本,并且样本数量够大,我们才能用LassoLarsIC,所以实际中使用较少;sklearn.linear_model.MultiTaskLasso:基于坐标下降法拟合多元线性回归模型,多个线性回归模型共享样本特征,回归系数和输出不同。线性回归模型为,是n×k矩阵,是m×n矩阵,是m×k矩阵,m为样本个数,n为样本的特征数量,k为线性回归模型的数量。使用的目标函数形式为:

其中,是的Frobenius范数,是各列的跟平方和之和。使用时需要自行设置惩罚参数;

sklearn.linear_model.MultiTaskLassoCV:基于坐标下降法,通过交叉验证法来选择最佳惩罚参数,在初始化类的时候可以设置多个待选值,最终MultiTaskLassoCV会选出最合适的惩罚参数。

 

参考:

https://www.biaodianfu.com/ridge-lasso-elasticnet.html

https://zhuanlan.zhihu.com/p/46999826

https://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares

https://scikit-learn.org/stable/modules/linear_model.html#lasso

https://www.cnblogs.com/pinard/p/6026343.html

https://www.cnblogs.com/pinard/p/6018889.html

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。