• 回归方法及其拓展


    回归,探讨的是自变量与因变量的关系(因果关系)。
    通过回归技术,可知道自变量与因变量存在关系,且知道自变量对因变量的影响强度如何。
    常见的有一元线性、多元线性回归方程,但因为存在不满足模型基本假设问题,我们的大神们陆续推出了岭回归、Lasso回归等等。

    目录

    • 一.线性回归
    • 二.多项式回归
    • 三.逐步回归
    • 四.岭回归Ridge Regression
    • 五.Lasso回归
    • 六.ElasticNet回归
    • 七.总结:如何选取回归方法?
    • 八.sklearn中的线性回归算法

    一.线性回归

    自变量类型:连续OR离散型
    因变量类型:连续型
    keys:

    • 独立变量与因变量之间必须存在线性关系
    • 线性回归对异常值很敏感,可能会影响最终的回归效果
    • 在多元回归中,警惕:多重共线性、自相关、异方差性
    • 在自变量很多时,我们可以通过逐步回归法(前进法、后退法、逐步回归法)来选择最重要的自变量
      python用法:from sklearn.linear_model import LinearRegression,再用from sklearn import metrics里的MSE、RMSE来选择评价模型:metrics.mean_squared_error()、np.sqrt(metrics.mean_squared_error())

    拓:
    多重共线性带来的问题

    • 当自变量存在多重共线性时,利用普通最小二乘估计得到的回归参数的估计值表现很不稳定,回归系数的方差随着多重共线性强度的增加而加速增长。
    • 会造成回归方程高度显著的情况下,有些回归系数不能通过显著性检验。
    • even回归系数的正负得不到合理的经济解释。

    二.多项式回归

    自变量的幂不再局限于1,有2次、3次等出现,此时建立多项式方程。
    图形不再是一条直线,变成了一条曲线。

    %E5%A4%9A%E6%AC%A1%E9%A1%B9.PNG

    在应用中,要注意过拟合问题,因为更高次项可能带来拟合优度更高的模型,但是泛华能力不高,实际没用呀。下图形象表示:

    %E8%BF%87%E6%8B%9F%E5%90%88.PNG

    三.逐步回归

    把所有的变量选入模型中,做回归的话,这叫全模型。而抽出部分自变量来建模,那模型就叫选模型,可谓少而精。此时,可根据自由度调整复决定系数(达到最大)、赤池信息量AIC(达到最小)、Cp统计量(达到最小)等来选择模型。但是,这是在自变量不太多时应用,因为假设有m个自变量时,将要计算(2的m次方)-1个回归方程,然后根据上述的选元准则来挑选出最佳模型。那么,在自变量很多时,该怎么办?
    可选用逐步回归法:

    • 前进法:每次加入一个自变量(用到F检验)
    • 后退法:先建立全模型,然后逐次剔除一个变量(同样用F检验)
    • 逐步回归:自变量有进有出,保证了最后是最优回归子集

    四.岭回归Ridge Regression

    出现原因:多重共线性,即自变量之间存在高度相关,使得即使我们用最小二乘得到回归参数的无偏估计值,but 它们的方差很大,使得观察值远离真实值。

    L2%E7%90%86%E8%AE%BA.PNG

    从上面看到,在一般的线性回归方程中,我们的损失函数仅坐了偏差的考虑。但是,一般的线性模型易过拟合,为了防止模型的过拟合,我们在基础的损失函数的基础上,加入L2正则化项,这就变成了Ridge 回归。
    Ridge回归通过收缩参数lambda来解决多重共线性问题。

    L2.PNG

    这时候,损失函数由两个组成,一部分是偏差,一部分是方差。通过lambda系数,计算后将被添加到最小二乘项来收缩较低的方差参数。
    Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数(永远不会达到零,没有做特征选择),使得模型相对而言比较的稳定,但和Lasso回归比,这会使得模型的特征留的特别多,模型解释性差。

    五.Lasso回归

    与Ridge回归出现的原因类似,都是为了防止过拟合。
    但是它引入的是L1范数,惩罚回归系数的绝对大小。使得一些回归系数变小,如果惩罚系数够大,它可能会使回归系数收缩为零,相当于在做特征选择了,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。
    在一批自变量高度相关的情况下,Lasso会选择保留其中一个变量,然后将其他自变量的回归系数缩减为零。
    损失函数如下:

    L1.PNG

    回归系数可用坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression, LARS)求出来。

    六.ElasticNet回归

    它是Lasso和Ridge回归技术的混合模型,同时加入了L1和L2的正则项。当自变量之间存在相关关系时,Lasso回归可能随机地选择其中一个,而ElasticNet回归很可能选择两个。它能继承部分Ridge回归的稳定性。它对所选变量的数量没有限制,可能会遭受双倍的收缩率。

    EM.PNG

    七.总结:如何选取回归方法?

    • 建模前,先了解数据的自变量与因变量之间的关系、自变量之间是否存在多重共线性
    • 为了比较不同模型的拟合程度,我们可以分析不同的指标,如:参数的重要性统计、R方、adjusted R方、AIC、BIC和误差项。还有一个是Cp标准。将全模型与所有的子模型拿来比较,看其中的偏差大小对比
    • 交叉验证是评估用来预测的模型的最佳方式。将原始数据划分为训练集和测试集,然后一般用MSE均方误差来比较模型的建模效果
    • 如果数据集中存在多个混淆变量(与因变量存在相关关系,但可能只是虚假的、影响建模效果的自变量),那么就不应该选择自动选择自变量的算法,因为建模没用呀
    • 那也取决于你的建模目的。你可以需选择建立一个拟合能力不太高的模型,因为这样更易实现。当然也可以逐步优化,达到一个高精度的模型
    • 正则化方法(Lasso,Ridge和ElasticNet)在高维度和存在多重共线性的数据集上表现更好

    八.sklearn中的线性回归算法

    求解回归系数的过程中,我们定义不同的损失函数、不同的最小化损失函数的方法、不同的验证算法的方法.Thus,产生了一系列不同的算法:

    1.LinearRegression

    • 损失函数:最普通的线性回归,对应只含有偏差项的损失函数。
    • 最小化损失函数的方法:它有两种极小化损失函数的方法:最小二乘法、梯度下降法。sklearn中LinearRegression类用的是最小二乘法。
    • 验证方法:手动划分训练集、测试集,然后逐步优化。
    • 一般来说,只要我们觉得数据有线性关系,就可以先用这个基本版来建模。如果效果不佳,再继续选择后面的方法。

    2.Ridge

    • 损失函数:在原始版损失函数中,加入L2正则化项,这时正则化项中包含一个常数系数,要对它进行调优。Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数,使得模型相对而言比较的稳定,不至于过拟合。
    • 最小化损失函数的方法:它有两种极小化损失函数的方法:最小二乘法、梯度下降法。sklearn中Ridge类用的是最小二乘法。
    • 验证方法:手动划分训练集、测试集,然后需要手动设置正则化项里的常数系数。
    • 一般来说,只要我们觉得数据有线性关系,并且LinearRegression出来的效果不佳,那你就要用Ridge回归。要自己不断设置正则化项里的常数系数,然后评估这个常数系数的好坏。

    3.RidgeCV

    • 损失函数:同Ridge。
    • 最小化损失函数的方法:同Ridge。
    • 验证方法:可以通过交叉验证来寻找最佳的正则化项里的常数系数,不用再一个一个试啦。可以一次性输入多个常数系数,让该类去计算最佳的常数系数。
    • RidgeCV用起来比Ridge方便。但是如果遇到特征非常多,且是稀疏数据时,请用下面介绍的Lasso系列。

    4.Lasso

    • 损失函数:在基础版损失函数的基础上,增加L1正则项,需要调整正则化里的惩罚系数
    • 最小化损失函数的方法:最常用:坐标轴下降法和最小角回归法,该类用坐标下降法
    • 验证方法:手动划分训练集、测试集,然后设置惩罚系数,不断找最佳惩罚系数,不断优化建模效果
    • 如果遇到特征非常多,且是稀疏数据时,一般会用这个类。如果你想找出其中关键影响因素,剔除没什么作用的自变量,那么请用这个类吧。不过,需要手动调参,设置惩罚系数

    5.LassoCV

    • 损失函数:在基础版损失函数的基础上,增加L1正则项,需要调整正则化里的惩罚系数
    • 最小化损失函数的方法:最常用:坐标轴下降法和最小角回归法,该类用坐标下降法
    • 验证方法:运用交叉验证来选择范围内最佳的惩罚系数
    • 如果遇到特征非常多,且是稀疏数据时,一般会用这个类。如果你想找出其中关键影响因素,剔除没什么作用的自变量,那么请用这个类吧。不用多次设置惩罚系数,省时省力

    6.LassoLars

    • 损失函数:在基础版损失函数的基础上,增加L1正则项,需要调整正则化里的惩罚系数
    • 最小化损失函数的方法:最小角回归法(Least Angle Regression)
    • 验证方法:手动划分训练集、测试集,然后设置惩罚系数,不断找最佳惩罚系数,不断优化建模效果
    • 用最小角回归法什么时候比坐标轴下降法好呢?
      • 场景一:如果我们想探索超参数α更多的相关值的话,由于最小角回归可以看到回归路径,此时用LassoLarsCV比较好
      • 场景二: 如果我们的样本数远小于样本特征数的话,用LassoLarsCV也比LassoCV好。其它一般用基本版本的Lasso

    7.LassoLarsCV

    • 损失函数:在基础版损失函数的基础上,增加L1正则项,需要调整正则化里的惩罚系数
    • 最小化损失函数的方法:最小角回归法(Least Angle Regression)
    • 验证方法:运用交叉验证来选择范围内最佳的惩罚系数
    • 同6

    8.LassoLarsIC

    • 损失函数:在基础版损失函数的基础上,增加L1正则项,需要调整正则化里的惩罚系数
    • 最小化损失函数的方法:最小角回归法(Least Angle Regression)
    • 验证方法:基于AIC、BIC自动选择惩罚系数,完全不用自己选择设置
    • 这个类要求比较严格,需要大样本(样本数最好远大于特征数),并且是由假设的模型产生的,所以比较少用。

    9.ElasticNet

    • 损失函数:在基础版损失函数的基础上,同时增加L1、l2正则项
    • 最小化损失函数的方法:常用:坐标轴下降法和最小角回归法,该类用坐标轴下降法
    • 验证方法:手动划分训练集、测试集,自己设置惩罚系数,不断优化
    • 如果用前面的LassoCV、RidgeCV时,你发觉LassoCV回归太多,把太多特征剔除了;而RidgeCV回归系数衰减太慢,那么就用ElasticNet来用。但是更推荐下面的用交叉验证来选择惩罚系数的类

    10. ElasticNetCV

    • 损失函数:在基础版损失函数的基础上,同时增加L1、l2正则项
    • 最小化损失函数的方法:常用:坐标轴下降法和最小角回归法,该类用坐标轴下降法
    • 验证方法:用交叉验证的方法来选择最佳惩罚系数,方便
    • 比9更方便

    参考资料
    -《应用回归分析》 第四版

  • 相关阅读:
    CSS3实现3D木块旋转动画
    灰色大气企业html5模板
    同程联盟景点门票动态程序 beta1.0源码
    java 创建 HMAC 签名
    左侧浮动html网页模板
    农业公司flash动画模板
    纯CSS3左右滑动开关按钮
    jQuery移动光标改变图像
    四叶草与动感线条背景矢量图
    看过的bootstrap书籍(附下载地址)
  • 原文地址:https://www.cnblogs.com/wyy1480/p/10501938.html
Copyright © 2020-2023  润新知