八种常见回归算法解析及代码

目录

一、线性回归

1、最小二乘法 -导数/偏导为0求参数

 最小二乘法求解参数​优缺点

2、迭代求解参数​-梯度下降、坐标轴下降、最小角回归

2.1使用梯度下降-对回归系数中w的每个元素分别求偏导并乘以学习率,迭代更新w

2.1.1批量梯度下降:每次迭代依据全体样本的误差结果更新回归系数

2.1.2随机梯度下降:每次迭代依据某个样本的误差结果更新回归系数

2.1.3小批量梯度下降:每次迭代依据部分样本的误差结果更新回归系数

 2.2.1坐标轴下降法和梯度下降法的区别

2.3、使用最小角回归求解

2.4、梯度下降、坐标下降优缺点

3、线性回归特点

二、局部加权线性回归:本质线性回归,局部平滑

 局部加权线性回归与线性回归区别

局部加权线性回归优缺点

三、多项式回归:数据升维+线性回归

多项式回归优缺点

四、逻辑回归:本质线性回归,用于分类

 适用于逻辑回归的场景:

构建目标函数      

逻辑回归正则化

逻辑回归优缺点

五、岭回归:最小二乘法+惩罚项( L2正则化项)

1、使用标准方程求解参数​

2、使用梯度下降求解参数​

 3、回归系数​与log(λ)的关系,平方误差与log(λ)的关系

4、岭回归优缺点

六、Lasso回归:最小二乘法+惩罚项( L1正则化项)

 1、使用标准方程求解参数​

 2、使用坐标下降求解参数​

3、次梯度

 4、回归系数​与log(λ)的关系

5、Lasso回归优缺点

七、弹性网络回归:最小二乘法+L2正则化项+L1正则化项)

1、回归系数​与 log(λ)的关系(β=0.5)  

 2、残差与 log(λ)的关系  

 八、逐步回归

1、向前选择

2、向后剔除

3、逐步回归

4、逐步回归优缺点

九、评价指标

十、代码


一、线性回归

直观地描述就是通过线性方程去拟合数据点,如下图所示

                    

        但是如何使用该线性方程去拟合数据点呢?我们能得到拟合的整体误差,即图中蓝色线段的长度总和。如果某一条直线对应的整体误差值最小,就代表这条直线最能反映数据点的分布趋势:误差如何表示?在线性回归中,使用残差的平方(RSS)和来表示所有样本点的误差,也叫平方损失函数,如下所示:

 m:样本个数,n:特征个数,X:训练集:m*n,xi:第i个样本特征值(自变量)集合,1*n
w:回归系数:n*1,y:因变量:m*1

求出最优参数w^{*}使得,使得平方损失函数J(w^{*})最小时,可以使得线性方差最佳拟合数据点。

如下目标函数所示,如何求解最优参数w*?

1、最小二乘法 -导数/偏导为0求参数

        使用最小二乘法即标准线性回归方程求解,最小二乘法是用于求解线性回归拟合参数 w 的一种常用方法。通过标准方程求出最优参数w^{*},过程解析如下所示:

 注意:标准方程涉及矩阵求逆x^{T}x,如果该矩阵是个奇异矩阵(奇异矩阵==非满秩矩阵),则无法对其进行求解。那么什么情况下该矩阵会有奇异性呢?

1. 数据本身存在线性相关关系(多重共线性), 即非满秩矩阵。如果数据的特征中存在两个相关的变量,即使并不是完全线性相关,但是也会造成矩阵求逆的时候造成求解不稳定。
2. 当数据特征比数据量还要多的时候(高维数据), 即m<n, 这时候矩阵X是一个矮胖型的矩阵,非满秩。

        对于上面的两种情况,我们需要对最初的标准线性回归做一定的变化使原先无法求逆的矩阵变得非奇异(满秩),使得问题可以稳定求解。我们可以通过缩减的方式来处理这些问题例如岭回归和LASSO。

 最小二乘法求解参数w^{*}优缺点

优点

  1. 计算复杂度低,对于小数据集,计算速度快
  2. 简单明了

缺点

  1. 对于普通最小二乘的系数估计问题,其依赖于模型各项特征的相互独立性
  2. 当数据集各列特征是相关的,或者各列近似线性相关,那么矩阵会趋向于奇异矩阵(非满秩),这会导致最小二乘估计对于随机误差非常敏感,产生很大的残差。
  3. 由于每一个样本都对应相同的回归系数,易出现欠拟合现象

 最小二乘法求解参数w^{*} 适用场景:

        适用于数据集较小时,可以通过标准方程一步就能求出参数。但当数据集很大时,计算速度就会变得很慢(因为过程设计求逆)。

2、迭代求解参数w^{*}-梯度下降、坐标轴下降、最小角回归

        当数据集较小时,可以通过标准方程一步就能求出参数w,但当数据集很大时,计算速度就会变得很慢(求逆),这个时候可以通过迭代逐步求解w^{*}

2.1使用梯度下降-对回归系数中w的每个元素分别求偏导并乘以学习率,迭代更新w

        如下所示,对回归系数中w的每个元素分别求偏导乘以学习率(控制参数更新幅度),迭代更新w,直到到达最佳解(最优解/局部最优解)

2.1.1批量梯度下降:每次迭代依据全体样本的误差结果更新回归系数

迭代:,直到迭代次数达到最大要求或者参数集合内的数值更新前后无明显变化则停止迭代。 η:学习率。 

2.1.2随机梯度下降:每次迭代依据某个样本的误差结果更新回归系数

迭代:,直到迭代次数达到最大要求或者参数集合内的数值更新前后无明显变化则停止迭代。 

2.1.3小批量梯度下降:每次迭代依据部分样本的误差结果更新回归系数

迭代:,直到迭代次数达到最大要求或者参数集合内的数值更新前后无明显变化则停止迭代。 

2.2、
使用
坐标轴下降求解:
对回归系数中
w
的每个元素求
偏导为0时的极值点(w_{j}^{*}
)后
迭代更新
回归系数   

w_{j}^{*}计算过程 如下所示 

 迭代:,直到迭代次数达到最大要求或者参数集合内的数值更新前后无明显变化则停止迭代。

 2.2.1坐标轴下降法和梯度下降法的区别

         坐标轴下降法顾名思义,就是沿着坐标轴的方向取下降,这和梯度下降不同,梯度下降是沿着梯度的负方向下降。不过梯度下降和坐标轴下降的共性就都是迭代法,通过启发式的方式一步一步迭代求解函数的最小值。

区别:

每次迭代中:坐标轴下降法逐项更新每个方向(特征):

while 最大次数 或者 w收敛程度

    for j in 方向:

         

          更新w_{j}w

而梯度下降法只沿一个(同步更新所有特征)方向(当前下降最快的方向)

while  最大次数 或者 w收敛程度

     

     更新w

  • 坐标轴下降法在每次迭代中,计算当前点处沿一个坐标方向进行一维搜索 ,固定其它维度的坐标方向,找到一个函数的局部极小值。而梯度下降总是沿着梯度的负方向求函数的局部最小值。
  • 坐标轴下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度下降的迭代
  • 梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值
  • 两者都是迭代算法,且每一轮迭代都需要O(mn)的计算量(m为样本数,n为维度数)
  • 当多个变量之间有较强的关联性时,坐标下降不是一个很好的方法,坐标下降法会使得优化过程异常缓慢。在应用坐标下降法之前可以先使用主成分分析法(PCA)使各变量之间尽可能相互独立

2.3、使用最小角回归求解

待补充......

2.4、梯度下降、坐标下降优缺点

梯度下降

优点:

        梯度下降是一个有逻辑的更新递进求解的过程,前进方向(迭代方向)按照切线方向,可以保证每一次前进以后,Loss值都会降低,对于大部分连续函数和曲线都可以用此方法求解,速度比穷举快。

缺点:

1、梯度只能知道导数方向(切线方向),不能知道到最优点的还有多远,所以我们需要手动建一个固定/不固定步长 *方向导数,好让它在之前参数的基础上进行更新,这个固定步长我们也可以称为学习率,算法对学习率的大小极其敏感,学习率太大:可能直接错过最低点,学习率太小:在求解的过程中相比需要很多次迭代进行求解才能到达最低点。

2、不能保证全局最优性,当函数存在多个波分波谷,使用梯度下降只能定位到当前波谷的最低点,而不能跳出这个范围到另一个波谷中,也就是说当前Loss还不是最小值还可以更低。所以求解逻辑回归问题时,通常需要使代价函数为凸函数。

例如:

        线性回归的代价函数(MSE)通常为凸函数,而在逻辑回归(分类)问题中,采用MSE+sigmoid函数的代价函数为非凸函数,只能找到局部最优解,因此需要保证逻辑回归的代价函数为凸函数,因此采用交叉熵函数作为逻辑回归的代价函数。

坐标下降:待补充

优点:

缺点:

3、线性回归特点

        不具备求解非线性分布问题的能力,如果训练数据不是简单的分布在一条线(直线或曲线)的周围,那么用线性回归求解的分布也会误差很大,从而对未知数据的评估结果也是不准的

适用场景:线性分布数据

二、局部加权线性回归:本质线性回归,局部平滑

线性回归很容易出现欠拟合的现象,如下图所示。

         为了解决这个问题,我们可以使用局部加权线性回归。所谓“加权”,就是给每一个训练数据乘上一个权值Q_{i},而这个权值是根据训练数据点与测试数据点的远近而设定的。训练点离测试点越近,其权值越大;反之则越小-->等同于K-近邻算法KNN:对第i个样本点选取前k个近邻点对应的对角矩阵元素为1,其他对角矩阵元素都为0的权重矩阵Q_{i}

                                

        局部加权线性回归中的权重矩阵Q_{i}使用核函数q_{i},如高斯核,对样本点附近的点基于相对更高的权重。式子中k的值决定了样本点附近的点被赋予多大的权值,且k越小,附近点所占的权值越大。

 注意:局部加权线性回归由于需要对每一个样本赋予一个权重,即对回归系数加权,所以对每个样本点计算权重时都需要使用整个数据集->增加计算量。

 局部加权线性回归与线性回归区别

  • 线性回归每一个样本对应相同的回归系数-->易欠拟合
  • 局部加权线性回归需要计算每一个样本对应加权后的回归系数->每一个样本都有一个自己的回归系数,拟合度好但计算量大
  • 局部加权线性回归本质还是线性回归

局部加权线性回归优缺点

优点:调参少(只有k),拟合好

缺点:计算量大

适用场景:数据集小、其他模型欠拟合,

三、多项式回归:数据升维+线性回归

        低位数据集的线性模型常常出现欠拟合的问题,数据升维后以增加特征,有利于解决欠拟合的问题。多项式回归,采用升维的方式,把x的幂当作新的特征,再利用线性回归方法解决。

下面举个简单的例子:对有两个特征的数据做二阶的多项式特征转换:x_{1}+x_{2}转换为 

  • 特征自身的高阶版:w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{1}^{2}+w_{4}x_{2}^{2}
  • 特征与特征之间的组合特征:w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{1}^{2}+w_{4}x_{2}^{2}+w_{5}x_{1}^{2}x_{2}+w_{6}x_{1}x_{2}^{2}

        与线性回归相比,多项式回归没有增加任何需要推导的东西,唯一增加的是对原始数据进行多项式特征转换( 构建特征自身的高阶版,或者构建特征与特征之间的组合特征)。多项式回归不是一个新的回归算法,只是数据预处理而已,对数据做了一个升维变化,变成更高阶数据。在算法不变的情况下,通过升维,把线性变为非线性.。

多项式回归优缺点

优点:拟合好

缺点:增加计算量,可能增加多重共线性

适用场景:解决欠拟合

四、逻辑回归:本质线性回归,用于分类

 回归与分类的不同在于其目标变量是否是连续的。分类是预测出一个标签,找到一条线或超平面去区分数据,输出是离散的、有限的。回归是预测出一个量,找到一条线去尽可能的拟合逼近这些数据,输出是连续的、无限的。

        逻辑回归本质上是线性回归套用激活函数sigmoid来输出概率值用于分类,如sigmoid(线性回归)=逻辑回归,如下所示

适用于逻辑回归的场景

        已知训练数据线性分布或者采用线性分布模型,但存在一些"异常/极端"值会使整个训练数据远远偏离了原有的正常范围-->会导致评估结果误差大,不准确。如下图黄色样本点为异常点

        这些"极端"值对整体数据的分布影响非常大。在数学中我们通常会采取一些平滑函数去减小这些"极端"值对整体分布的影响,从而使数据整体分布更加集中,比如最常见的Sigmoid函数。如下图所示

        可以看出通过sigmoid函数的映射,我们可以把极端值产生的影响变得非常微小,从而使其造成误判的结果尽可能降低。sigmoid函数表达式如下所示

借助sigmoid函数我们可以把分类(判别属于哪个类别)结果转换为一个计算样本属于某个类别的概率,如下图所示

构建目标函数      

        但是如何使用逻辑回归做分类呢?首先,逻辑回归的本质还是线性回归,我们需要先构建一个线性回归方程用来拟合数据点,如下图所示的红线,观察图中蓝色线段的长度总和就是预测值与真实值之间的整体误差和,如果某一条直线对应的整体误差值最小,也就表示这条直线最能反映数据点的分布趋势。那么误差如何表示?

        在线性回归中,使用残差的平方(RSS)和来表示所有样本点的误差,如下所示:

         根据代价函数计算出线性回归方程表达式

          然后借助激活函数sigmoid将离散值(预测值)映射为概率输出,如下所示

 对于二分类问题,y∈[0,1],对于样本x_{i}:1*(n+1),分类器能够预测其类别为y的概率为

 对于样本X:m*(n+1),分类器能够预测样本X的类别为Y的概率输出为

         如何求解参数w?在求解未知系数向量w的过程中,我们肯定需要有一个依据,那这个依据是什么呢?就是所谓的目标函数,所以每一个模型都对应一个目标函数,也就是我们想最优化的一个函数。基于这样的数据信息,我么可以定义下面的一个最大似然(MLE),我们假定的逻辑回归模型,生成了这些我们所看到的样本数据,最大化样本发生的概率,即计算最具有可能(最大概率)导致这些 样本结果出现的模型参数值w, 因为你手头上的样本已经实现了,其发生概率最大才符合逻辑。然后在逻辑回归模型中,我们通过这种条件概率的方式把它考虑进来,对于每一个样本在最大似然里面,我们需要考虑所有的样本发生概率,通过乘积的方式把他们考虑进来,我们要找出使目标函数最大化的系数向量w。如下所示

注意:概率连乘可能会导致下溢,可以使用对数函数使连乘转换为累加。此外,一般情况下我们优化一个目标函数的时候,更倾向于一个最小化的目标函数,以最小化的方式求出系数向量w,所以如果我们的目标函数是最大化的话,我们通常在目标函数的前面加一个负号,然后使得我们可以找出它的最小值对应的最优解。

注意:对数函数是一个严格递增的函数,取对数后不会改变数据的相对关系,即对数化后,我们仍然可以获得具有相同临界点的最优化目标函数。

       已知激活函数求导公式如下:

        使用梯度下降方法,不断迭代循环更新系数向量w直到目标函数收敛,即达到极值点时我们获取到目标函数取得极值对应的参数w。更多关于梯度下降方法见文章常见迭代优化算法解析及python实现

假设对数函数的底数为e。参数w的偏导数如下:

上述求导过程可矢量化表示为如下

通过梯度下降的方法得到最优参数\textbf{w}^{*},最终得到逻辑回归方程

也可以用其他迭代优化方法求解参数w,见文章常见迭代优化算法解析及python实现

注意:

        在逻辑回归中我们通过极大似然定义了目标函数模型即交叉熵函数,而在线性回归中我们定了平方误差(MSE)的代价函数作为目标函数模型,那么在逻辑回归中能否使用平方误差(MSE)的代价函数作为目标函数模型呢?在线性回归中,我们通过梯度下降的方法不断迭代更新递进系数直到代价函数收敛,得到局部最优解,并且由于线性分布数据的代价函数一般都是凸函数,所以得到的局部最优解就是全局最优解,那么在逻辑回归中如果使用平方误差(MSE)的代价函数作为目标函数模型,那么目标函数是否是凸函数呢? 假设在逻辑回归中如果使用平方误差(MSE)的代价函数作为目标函数模型,目标函数如下所示

         而此时的目标函数其二阶导数不恒大于0,为非凸函数(证明过程待补充),所以在逻辑回归中如果使用平方误差(MSE)的代价函数作为目标函数为非凸函数,无法保证求得全局最优解,不能使用 平方误差(MSE)的代价函数,而要通过极大似然方法定义交叉熵函数为目标函数

逻辑回归正则化

 上述过程得到的目标函数为

        正则项是对现在目标函数的惩罚项,正则项用来惩罚权重大的参数。正则化项可以起到简化模型的作用,通过约束参数的范数来防止过拟合。

加入L2正则化项的逻辑回归目标函数为

加入L2正则化项的逻辑回归目标函数等价于逻辑回归目标函数加约束条件,就是拉格朗日乘子法和KKT条件,约束条件为不等式约束的形式,如下所示

 等价目标函数如下所示

 式中t为某个阈值,只不过这个t有在目标函数里面体现,但是也没什么影响,因为目标函数一求偏导数这些常数就都没有了。

更多关于拉格朗日乘子法内容见文章常见迭代优化算法解析及python实现

 参数w的偏导数如下:

 上述求导过程可矢量化表示之前过程类似,只需要添加2\lambda \mathbf{w}即可

和之前步骤类似,使用梯度下降或其他迭代优化方法,求解参数\textbf{w}^{*} ,最终得到逻辑回归方程

与不加正则化项的逻辑回归目标函数相比,加了正则化项后,\textbf{w}^{*}的每一个元素均被均匀衰减,从而保证了不会出现某列特征的权重参数过大或过小,从而实现防止过拟合效果。

逻辑回归优缺点

优点

  • 输出概率值,可以告诉你一个事件会发生的概率
  • 可以减少一些极端值对整体分布的影响,从而使模型整体决策准确度提高。

缺点
只适合线性分布任务,逻辑回归本质还是线性回归,是根据事务线性分布通过激活函数映射为概率作为判断,也就是说一个事务是非线性分布,那么模型决策结果也不会很理想
适用场景
已知训练数据线性分布或者采用线性分布模型,但存在一些"异常/极端"值会使整个训练数据远远偏离了原有的正常范围-->会导致评估结果误差大,不准确,此时可以尝试逻辑回归,如下图所示:
  

五、岭回归:最小二乘法+惩罚项( L2正则化项)

        上述回归模型本质都是线性回归,在线性回归模型中,都可通过最小二乘法来求解参数,其参数估计公式为

        当x^{T}x不可逆时(特征数大于样本数,|xTx|=0,行非满秩)无法求出回归系数;此外,如果|xTx|越趋近于0(当自变量(特征)之间的相关性较强(多重共线:|xTx|=0,列非满秩)),则可能会导致某些 w 系数很大,而另一些系数变成很小的负数,此时得到的回归系数是无意义的。

        解决这类问题可以使用岭回归和LASSO回归,主要针对自变量之间存在多重共线性或者自变量(特征项)个数多于样本量的情况。

        岭回归可以被看作为一种改良后的最小二乘法,它通过向代价函数中添加L2正则化项,这里通过引入λ来限制所有w之和,通过引入该惩罚项,能够减少/'轻'不重要的参数,如下所示:

         引入惩罚项,使得所有特征对应的参数均接近于0(不抛弃任何一个变量),所有参数比较均衡,模型相对而言比较的稳定,从而使得所有特征的表达能力都差不多。这样就不至于让模型对某个特征特别敏感,也就是说在测试集上运行的时候,即使某个特征上有噪声异常突出,但对于整体模型的输出而言,并不会被这个噪声带偏特别多。此时添加L2正则化项的代价函数求解参数w^{*}的过程如下所示:

1、使用标准方程求解参数w^{*}

        岭回归等价于最小二乘法回归加约束条件,就是拉格朗日乘子法和KKT条件,约束条件为不等式约束的形式,如下所示

 式中t为某个常数阈值,只不过这个t有在代价函数里面体现,但是也没什么影响,因为代价函数一求偏导数这些常数就都没有了。

        上式通过加入L2正则项(惩罚项)进行优化后来限制回归系数w的数值大小。L2正则项是指向量各元素的平方或者也可以描述为对二范数求平方。我们让L2正则项\left \| w \right \|^{2}最小,可以使得w的每个元素都很小(权重衰减),都接近于0,而L1正则项可以使权重衰减为0。

L2正则项为什么不能缩减参数为0?见文章看图就懂:为什么L1正则化比L2正则化更容易得到稀疏解?为什么L2正则化可以用于防止过拟合?

 注意:上式的λ是人为设定的经验参数,称为正则化参数,如果λ选取过大,会把所有参数θ均最小化,造成欠拟合,如果λ选取过小,会导致对过拟合问题,可以使用交叉验证的方法选取一个使预测误差最小的λ。由于使用最小二乘法回归在当两个或多个特征相关时,可能会得出一个很大的正回归系数和一个很小的负回归系数,而线性回归代价函数引入惩罚项\lambda \left \| w \right \|_{2}^{2},可以避免这样的问题。

2、使用梯度下降求解参数w^{*}

 3、回归系数w_{i}与log(λ)的关系,平方误差与log(λ)的关系

        如下图所示:

         在最左边λ系数最小时,可以得到所有系数的原始值(与标准线性回归相同); 随着λ的增加,回归系数趋于不稳定;而在最右边,系数全部缩减至接近0, 从不稳定趋于稳定;

要判断哪些变量对结果的预测最具影响力,可以观察他们的系数大小即可。λ的选择:一般通过观察,选取喇叭口附近的值,以及对照残差大小,为了定量的找到最佳参数值,还需要进行交叉验证。

4、岭回归优缺点

 优点

  • 可以使所有参数比较均衡(接近于零),使得模型相对而言比较的稳定,从而使得所有特征的表达能力都差不多。这样就不至于让模型对某个特征(噪声)特别敏感。
  • 可以有效防止模型出现过拟合,且有助于解决非满条件下求逆困难的问题

缺点
岭回归不能很好的收缩参数为0。
性质

  • 当岭参数λ=0时,得到的解是最小二乘解,即标准回归函数解
  • 当岭参数λ趋向更大时时,岭回归系数wi趋向于0,惩罚项很小

适用场景

  1. 主要针对自变量之间存在多重共线性或者自变量个数多于样本量的情况,即非满秩
  2. 防止过拟合(非满秩或满秩矩阵均适用)

六、Lasso回归:最小二乘法+惩罚项( L1正则化项)

        与岭回归相似,Lasso 回归同样是通过添加正则项来改进普通最小二乘法,不过这里添加的是 L1 正则项,等价于普通最小二乘法加约束条件,约束条件如下所示

所以,Lasso 回归代价函数如下所示

 1、使用标准方程求解参数w^{*}

 2、使用坐标下降求解参数w^{*}

         Lasso回归使得一些特征对应的回归系数变为0,适用于特征选择,因而常用来估计稀疏参数的线性模型。

为什么可以回归系数缩减为0?见文章看图就懂:为什么L1正则化比L2正则化更容易得到稀疏解?为什么L2正则化可以用于防止过拟合?

3、次梯度

        Lasso回归有一个很大的问题,由于L1正则化是参数的绝对值之和,导致它的代价函数不是连续可导的,也就是无法使用最小二乘法、梯度下降法,牛顿法等求解参数,这是就需要引用次梯度思想,对于可导的凸函数,我们通常使用常规的梯度下降法处理,但当目标函数不可导(在某些点上导数不存在)时,我们就没法使用常规的梯度下降法处理。于是引入次梯度(Subgradient)用于解决此类目标函数并不总是处处可导的问题。

设函数f在点x_{0}处不一定可导,以一维情况为例,按高等数学中我们对导数的定义,可以求出:f在点x_{0}处的左导数:

  f在点x_{0}处的右导数:

 凸函数f的次微分等于闭区间,中任何一个取值都是次梯度。

  • 如果凸函数f在点x处是可导的,即a=b,次微分中只有一个元素,此时次梯度就是梯度,即f^{'}就等于\bigtriangledown f(x)
  • 如果凸函数f在点x处是不可导的,即a≠b,此时次梯度是其次微分中的任意一个取值,它是不唯一的。

例如,f(x)=\left | x \right |,则,f^{'}=\left\{\begin{matrix} sgn(x),x\neq 0\\ any\in [-1,1],x=0 \end{matrix}\right.,其中sgn(x)为符号函数, any表示任意一个元素。

由上得,Lasso回归求解回归方程中参数w^{*}时,可使用迭代求解+次梯度的方法求解。本例使用坐标轴下降+次梯度的方法求解参数w^{*},过程如下所示: 

代价函数:

坐标轴下降法:

简化表达

 注意:|w|是个分段函数,进行如下的分类讨论

 4、回归系数w_{i}与log(λ)的关系

 

 观察 在Lasso中,当λ很小的时候,一些系数会随着变为0而岭回归却很难使得某个系数恰好缩减为0.同时可以看出相对岭回归,Lasso回归不太稳定。

 当原始数据的当特征之间相关性较强时,Lasso回归和岭回归如下图所示

  

观察,当特征之间相关性较强时,对于一组高度相关的变量(特征),Lasso倾向于选择其中的一个变量,而忽视其他所有的变量(缩减为0)。相对岭回归,Lasso回归不太稳定。

综上:  

Lasso回归(L1正则化):生成稀疏参数,用于特征选择

回归(L2正则化):平衡化各个参数,使每个参数均接近0,用于防止过拟合。

5、Lasso回归优缺点

优点

Lasso倾向于完全消除最不重要特征的权重(置为0),就是说Lasso会自动执行特征选择,并输出一个稀疏模型。

缺点

  1. 相比岭回归可以直接通过标准回归方程得到回归系数,LASSO的计算变得相对复杂。由于惩罚项中含有绝对值,此函数的导数是连续不光滑的,所以无法直接进行求导、使用梯度下降优化。
  2. Lasso在特征数量超过训练实例的数量时(高维数据:比如10条数据20个特征),或者特征之间相关性(多重共线性->非满秩)比较强,Lasso就会很不稳定(如果存在一组高度相关的变量时,Lasso倾向于选择其中的一个变量,而忽视其他所有的变量。这样可能会导致结果的不稳定)

适用场景

适用于特征选择(特征对应的回归系数变为0),因而常用来估计稀疏参数的线性模型

注意

Lasso可进行特征选择,不代表不需要人为进行筛选,需要去掉相关性较强的特征

七、弹性网络回归:最小二乘法+L2正则化项+L1正则化项)

弹性网络是一种同时使用L1,L2正则化作为惩罚项训练的线性回归模型。模型特点如下所示:

  • 这种组合允许学习到一个只有少量参数的非零稀疏模型,就像Lasso一样,但是它仍然能保持一些像Ridge的正则性质(稳定性、各个特征较均衡)
  • 弹性网络在多个变量之间有较强的关联性时是非常有用的。 Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。
  • 弹性网络回归继承了岭回归的稳定性。

代价函数:

 提取wj

 由于|w|是分段函数,所以需要进行一下判断

1、回归系数w_{j}与 log(λ)的关系(β=0.5)  

 

 2、残差与 log(λ)的关系  

 

         观察得,弹性网络回归综合了Lasso回归和岭回归特点(稀疏性强+稳定)。相对于岭回归,弹性回归能够较早收敛,相对于Lasso回归,弹性回归比较稳定。

 当原始数据的当特征之间相关性较强时,弹性回归、Lasso回归和岭回归如下图所示

 

         观察,当特征之间相关性较强时,在一组高度相关的变量时,Lasso倾向于选择其中的一个变量,而忽视其他所有的变量,而弹性网络更倾向于选择1个以上。

3、弹性网络回归优缺点

优点:综合了Lasso回归的稀疏性强和岭回归的稳定性强的特点即可用于特征选择+平衡特征(防止过拟合)

缺点:

适用场景:

 八、逐步回归

       逐步回归是一种线性回归模型自变量选择方法,其基本思想是将变量一个一个引入,引入的条件是其偏回归平方和经验是显著的。同时,每引入一个新变量后,对已入选回归模型的老变量逐个进行检验,将经检验认为不显著的变量删除(归零),以保证所得自变量子集中每一个变量都是显著的。此过程经过若干步直到不能再引入新变量为止。这时回归模型中所有变量对因变量都是显著(显著减小残差)的。

         我们知道多元回归中的元是指自变量,多元就是多个自变量,即多个x。这多个x中有一个问题需要我们考虑,那就是是不是这多个x都对y有作用。答案就是有的时候都管用,有的时候部分管用。那对于那些没用的部分我们最好是不让它加入到回归模型里面。我们把这个筛选起作用的变量或者剔除不起作用变量的过程叫做变量选择。
         如何评判一个自变量到底有用没用呢?判断依据就是对自变量进行显著性检验。具体方法是将一个自变量加入到模型中时,有没有使残差平方和显著减少,如果有显著减少则说明这个变量是有用的,可以把这个变量加入到模型中,否则说明时无用的,就可以把这个变量从模型中删除。有没有显著减少的判断标准就是根据F统计量来判断。
        变量选择主要有:向前选择、向后剔除、逐步回归(向前选择+向后剔除)、最优子集等。

1、向前选择

向前选择可以理解成从零开始选择,因为模型最开始的时候是没有自变量的,具体的步骤如下:
  1. 拿现有的k个变量分别和y建立回归模型,最后会得到k个模型以及每个模型中变量对应的F统计量和其p_value,然后从显著的模型中挑选出F统计量最大模型对应的自变量,将该自变量加入到模型中,如果k个模型都不显著,则选择结束。
  2. 通过第一步我们已经得到了一个显著性变量,并把这个变量加入到了模型中。接下来再在已经加入一个变量的模型里面继续分别加入剩下的变量,能够得到k-1个模型,然后在这k-1个模型里面挑选F值最大且显著的变量继续加入模型。如果没有显著变量,则选择结束。
  3. 重复执行上面两步,直到没有显著性变量可以加入到模型为止

2、向后剔除

向后剔除是与向前选择相对应的方法,是向前选择的逆方法,具体的步骤如下:
  1. 将所有的自变量都加入到模型中,建立一个包含k个自变量的回归模型。然后分别去掉每一个自变量以后得到k个包含k-1个变量的模型,比较这k个模型,看去掉哪个变量以后让模型的残差平方和减少的最少,即影响最小的变量,就把这个变量从模型中删除。
  2. 通过第一步我们已经删除了一个无用的变量,第二步是在已经删除一个变量的基础上,继续分别删除剩下的变量,把使模型残差平方和减少最小的自变量从模型中删除。
  3. 重复上面的两个步骤,直到删除一个自变量以后不会使残差显著减少为止。这个时候,留下来的变量就都是显著的了。
         向前选择和向后剔除都有明显的不足。向前选择可能存在这样的问题:它不能反映引进新的自变量值之后的变化情况。因为某个自变量开始被引入后得到回归方程对应的AIC最小,但是当再引入其他变量后,可能将其从回归方程中提出会是的AIC值变小,但是使用前进法就没有机会将其提出,即一旦引入就会是终身制的。这种只考虑引入而没有考虑剔除的做法显然是不全面的。类似的,向后剔除中一旦某个自变量被剔除,它就再也没有机会重新进入回归方程。
  根据向前选择和向后剔除的思想及方法,人们比较自然地想到将两种方法结合起来,这就产生了逐步回归。

3、逐步回归

        逐步回归是向前选择和向后踢除两种方法的结合。是这两种方法的交叉进行,即一遍选择,一边剔除。
逐步回归法选择变量的过程包含两个基本步骤:
  1. 是引入新变量到回归模型中(向前回归)
  2. 从回归模型中剔出经检验不显著的变量(向后剔除
        逐步回归在每次往模型中增加变量时用的是向前选择,将F统计量最大的变量加入到模型中,将变量加入到模型中以后,针对目前模型中存在的所有变量进行向后剔除,一直循环选择和剔除的过程,直到最后增加变量不能够导致残差平方和变小为止。

4、逐步回归优缺点

优点:唯一需调整参数:迭代步长。                                              

缺点:

适用场景:

九、评价指标

回归预测结果,通常会有平均绝对误差、平均绝对百分比误差、均方误差等多个指标进行评价

平均绝对误差(MAE)就是绝对误差的平均值,它的计算公式如下:

均方误差(MSE)它表示误差的平方的期望值,它的计算公式如下:

 平均绝对百分比误差 (MAPE),如果 MAPE 为 55,则表示预测结果较真实结果平均偏离 5:

如何正确选择回归模型?
 待补充

十、代码

代码见Github


版权声明:本文为qingtianhaoshuai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>