上一节我们讲了线性回归的一元线性回归和多元线性回归,其中多元线性回归在求解的过程中又分为满秩和非满秩的情况,进而引出了的最大释然估计进行处理,后面详细的对回归误差进行了分析,最后误差来源于平方偏置、方差和不可消除的误差三个方面,详细对比了前两个的关系,然后我们又引出了正则化回归,其实就是岭回归,原因也简单的提了一下,本节将详细的对此进行分析,吃透原理,在遇到问题时才知道如何处理它,废话不多说,下面开始:

岭回归:

岭回归算法的提出是为了解决多元线性回归中的矩阵不可逆的问题,而矩阵不可逆的原因是矩阵非满秩,引起非满秩有两种可能:

1.数据样本少于数据样本的特征

2.数据中中存在共线性

其实这两种情况他们之间是共通的,如果数据中存在共线性,会导致数据样本数量降低,进而达到第一种情况,因此岭回归是为了解决数据中的共线性问题。既然已经知道岭回归是解决共线性问题,那么什么是岭回归?他除了具有解决共线性问题还具有哪些功能?还具有哪些功能?岭回归是不是很完美的解决方案?还有没有其他的解决方法?本节将详细进行分析,下面从最简单的多元线性回归的定义出发,一步步引出岭回归:

多元线性回归通常写成矩阵形式,大家要习惯这样的写法,使用矩阵来写,一方面是具有简洁性,另一方面利用矩阵的性质可以探索数据的内部关系,请不要对矩阵反感,因为矩阵是计算机和数学联系的强力纽带,如果对矩阵不熟悉的,建议有时间多看看,废话不多说,下面开始正式开始本篇的探索之旅:

这些我们在上一篇都详细的说了,那么大家知道的意义吗?我们都知道这是误差函数,推倒可以按照上篇的一元线性回归进行推倒,还可以从更形象的几何意义说明,下面我们从几何方面进行说明一下,这样大家共容易理解,同时为后面的lasso算法做一些铺垫:

在这里举得例子是二维的即 ,其中x1、x2、y都是样本向量,x为特征,大家这样理解,那么我们知道,x1、x2的向量如上图所画,而是变化的量,为什么变化呢,是因为找到使误差最小的,我们的目标大家别忘了,那么我们看看等式的右边,会发现此时随着的变化会张成一个平面,而我们的y向量是平面外一点,现在,其实表示的就是在平面确定的一点到y的距离d,这个式子的物理意义没忘吧?內积呀,别忘了啊,那么现在我们要找到最短的距离其实就是投影,而投影的点就是要确定的,因此这一点就是拟合点,而y和这一点的距离就是残差或者误差了,如上图所示,好这个式子的几何意义大家尽量理解,这为后面的lasso的证明有关,因为后面会发现岭回归并没有那么强大,为了解决岭回归的缺点就引出了lasso算法,这个后面讲。

好,现在我们回到刚开始,为什么需要引入岭回归,此时和这个式子有关:

推倒图最开始的那个图,我们发现在求时存在求逆项即,在矩阵中我们都知道,矩阵求逆是有条件的,需要是满秩,或者矩阵的行列式不等于0才能求逆,但是如果一个矩阵存在共线性,则不会是满秩,就无法求逆,这是针对非奇异矩阵而言,奇异和非奇异简单来说就是非奇异是方阵即nxn的矩阵,此时只要是满秩即秩为n则就可以求逆,反之无法求逆,奇异简单来说不是方阵,但是也是可以求逆的,此时的逆称为广义逆(违逆),但是需要满足一些条件,在这里就不展开说了,不懂得建议多学习一下矩阵知识。但是在这里我们要想求出回归函数,就必须求出啊,所以必须可逆,大家会不会问如果不可逆利用计算机能不能求出呢?能求出只是这个结果很奇怪,例如求出的为几千,上万的数量级,而且不稳定,就是相差很大,例如1/0.0001和1/0.0005,他们相差很多倍,这就是不稳定,所以得想办法,这个矩阵可逆,此时岭回归应运而生,我们来看看:

1962年由Heer首先提出,1970年后他与肯纳德合作进一步发展了该方法

先对数据做标准化,为了记号方便,标准化后的学习集仍然用X表示

其中是 的岭回归估计,k称为岭参数

当自变量间存在共线性时,||≈0,我们设想给加上一个正常数矩阵kI,(k>0),那么接近奇异的程度就会比接近奇异的程度小得多。
岭回归做为β的估计应比最小二乘估计稳定,当k=0时癿岭回归估计就是普通的最小二乘估计。

从上式我们不很容易就看出来,他是如何处理共线性问题,在原来的基础上加一个kI矩阵,其中I为单位矩阵,k为系数,这样就可以很好的处理共线性问题,下面我们使用更形象的方式来看一下:

岭为对角矩阵,我们在XTX矩阵上加上这一对角矩阵,以确保我们能得到一个常规矩阵

惩罚函数

上面我们可以很形象的看出为什么可以有效的解决共线性问题,但是从数学中怎么解释呢?下面我们从数学上进行解释:

我们发现形式和前面很类似,只是后面多了一项,这一项叫做惩罚项,这一项怎么来的呢?其实是根据我们要解决的问题来的,如下:

我们前面说了,如果矩阵不可逆,但是计算机无法达到完全不可逆的地步,只是接近不可逆,此时求出的值很大,很奇怪的一个值,如果我们此时对值做一个约束,让他小于某个数,那么他就可以求出稳定的值,从这里大家能感觉到,这样做的目的确实把不可逆的问题解决了,但是也会使的不是最优解,因此从这里也说明了岭回归是有偏估计,好,上面的两个式子的形式大家是不是很熟悉呢?本来是有约束条件的,到上面就没有约束条件了,这个处理方法不就是支持向量机中的拉格朗日乘子法嘛,是的,就是使用这个方法,如果还不知这个方法的同学,建议看看我的这篇文章,那篇文文章我主要解释了拉格朗日乘子法的合理性,在这里就不详细说了,从这里也可以看出,各个知识都是相连的,所以遇到问题不要积累不要脱,要彻底掌握它,只有这样当你遇到类似的问题就会想到这个解决问题的方法,我觉的这才是我们学习算法的关键所在,至于实现,牛人早都做好了,我们现在要做的就是深入理解,在前人的基础上进行修改,或者在前人的基础上进一步优化算法,好吧,又扯远了,回到正题,我们再来看看这个约束条件,为什么说不是最优解呢?我们看个图:

从上图中我们看到,理想的取值是在那里,此时的是无偏估计的,但是呢因为共线问题导致不可逆,因此加入约束条件的取值就在两者的相切的地方,从这里更能看出此时的不是最优的(这里如果看不懂上图的意义,建议你停下来去看看拉格朗日乘子法的物理意义,搞明白,看我的这篇文章完全可以让你搞明白的),因此岭回归系数是有偏估计,好到这里,我们知道了约束条件是怎么来的,也知道了岭回归是有偏的,但是我们还是不知道什么是岭回归,或者怎么使用岭回归,我们下面就开始进行解释为什么叫岭回归,以及如何使用岭回归。

什么是岭回归?如何使用它?

我们发现上式是需要求极小值的,那么如果很大,那么对应的岭参数会很小,因为需要保证整体最小,所以为了减小,我们通过增大岭参数即可,如果岭参数=0,则说明还是原来的最优值(无偏估计)。下面我们看一个岭迹图的例子:

从上图中我们可以看出,当岭参数(图中为k,一样的)为0时,两个很大,可以很清楚的说明数据存在多重共线性,因此可以适当的增大岭参数,会使的急剧下降,在岭参数=1的时候就差不多稳定了,那么为什么叫岭呢?因为上图中的线走势和山坡的岭是一样的,因此叫岭迹图,那么岭迹图有什么性质呢?我们来看看:

讲性质前,我们先看一个例子:

这时我们使用岭回归消除共线性

岭迹图:

当岭参数为0,得到最小二乘解,当岭参数趋向更大时,岭回归系数估计趋向于0 。

当不存在奇异性时,岭迹应是稳定地逐渐趋向于0,通过岭迹图观察岭估计的情况,可以判断出应该剔除哪些变量

岭回归估计的性质

注:这些性质来源复杂数据统计方法

这里就不过多解释了,都是很容易的性质,最后一个挺有用的,结合上一篇的误差分析进行理解效果更好。

利用岭回归进行变量的选择

我们以一个岭迹图为例:

分析:

把15个回归系数的岭迹画到图中,我们可看到,当k=0.20时岭迹大体上达到稳定。按照岭迹法,应取k=0.2。

若用方差扩大因子法,因k=0.18时,方差扩大因子接近于1,当k在0.02~0.08时,方差扩大因子小于10,故应建议在此范围选取k。由此也看到不同的方法选取k值是不同的。

选择:

在用岭回归进行变量选择时,因为从岭迹看到自变量x4,x7,x10,x11和x15有较稳定且绝对值比较小的岭回归系数,根据变量选择的第一条原则,这些自变量可以去掉。

又因为自变量x12和x13的岭回归系数很不稳定,且随着k的增加很快趋于零,根据上面的第二条原则这些自变量也应该去掉。

再根据第三条原则去掉变量x3和x5。

这个问题最后剩的变量是x1,x2,x6,x8,x9,x14。

通过R语言进行选择岭参数,如下:

有时发现不同的选择办法,其 一般不同,这里以多数为主。

总结一下,虽然岭回归可以处理共线性问题,但是剔除变量和选择合适的岭参数是难点,具有不可控,这也是岭回归应用受限的原因:

1、岭参数计算方法太多,差异太大

2、根据岭迹图进行变量筛选,随意性太大

3、岭回归返回的模型(如果没有经过变量筛选)包含所有的变量

为了解决这方面,人们又提出了一种方法lasso。

lasso:

Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and Selectionator operator)算法,通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些指标(变量)的,系数为零(岭回归估计系数等于0的机会微乎其微,造成筛选变量困难),解释力很强,擅长处理具有多重共线性的数据,不岭回归一样是有偏估计。

lasso是在惩罚函数上进行了改变,我们先来对比一下岭回归和lasso:

岭回归数学表达式:

lasso 的数学表达式:

从上面我们可以看到岭回归和lasso最大的区别就是惩罚项了,岭回归是二阶的,lasso是一阶的,我们再从几何图对比一下:

左图为lasso,右图为岭回归约束图。从图中我们可以看出,lasso额约束更容易是回归系数直接为0,因为是正方形,所以容易在四个角相连,这也是比岭回归好的原因,下面我们对比看看岭迹图:

大家看这个岭迹图是时,需要小心的是这里的参数是我们上面说的岭参数的倒数的方式,因此需要从右往左看,最右边代表我们上面的岭参数的最小值,随着往左,会发现岭迹会收敛就和我们前面的分析一样了。

这时候我们看看岭回归和lasso有什么区别,岭回归中参数在增大时,特征不会出现消失的现象,最终岭参数不断增大,回归参数一起消失了,这也是导致岭回归无法很好的选择参数的原因,我们看看lasso的岭迹图,发现,最终岭参数的变化,有些回归系数直接消失了(为0),因此具有很好的选择特性。

到这里我们知道了 lasso 和岭回归的区别,导致这样的结果本质是惩罚函数的阶数不同,那么可不可以设置其他的阶呢?当然可以了,所以更一般的式子就出来了,而岭回归和lasso只是他的一个类型,我们看看更一般的式子:

看看几何图形:

从上面我们可以看到q不同这图形不同,这时候选择q就需要根据应用了,和使用者的经验有关了。

后来又提出了岭回归和lasso的结合体弹性网:

Zou and Hastie (2005)提出 elasticnet

我们发现它具有岭回归和lasso共同的优点。

到这里我们知道了,lasso具有很好的选择变量的特性而且也可以很好的处理共线性问题,因此lasso得到了大量的使用。那么lasso怎么计算呢?虽然现在都有代码包,但是搞清楚怎么计算的对我们将大有好处,因为学习算法的最高境界莫过于算法的思想,这个思想我们可以使用到其他的难题上,因此了解如何计算还是很有必要的,下一节我们将开始详谈lasso的计算过程,只想说,这个计算过程你会耳目一新的,把数学用到了极致,很漂亮的一个算法。

注:上面的图来源一本书:The Elements of Statistical Learning ,这本书讲得很深,大家可以看看。

机器学习--线性回归2(共线性问题、岭回归、lasso算法)相关推荐

  1. 机器学习(七)线性回归与岭回归Lasso回归与弹性网络与正则化

    机器学习(七) 线性回归 最小二乘法(Least Squares Method,简记为LSE)是一个比较古老的方法,源于天文学和测地学上的应用需要.在早期数理统计方法的发展中,这两门科学起了很大的作用 ...

  2. 普通线性回归/岭回归/lasso回归[x.T/np.dot/lrg.coef_/lrg.intercept_/Xw = y/r2_score]

    基础运算 导包 import numpy as np 随机产生数据集 a = np.random.randint(0,10,size = (2,3)) a Out: array([[2, 8, 2], ...

  3. 多元线性回归算法: 线性回归Linear Regression、岭回归Ridge regression、Lasso回归、主成分回归PCR、偏最小二乘PLS

    0. 问题描述 输入数据:X=(x1,x2,....,xm)\mathbf{X} = (x_1, x_2,...., x_m)X=(x1​,x2​,....,xm​), 相应标签 Y=(y1,y2,. ...

  4. 【sklearn】线性回归、最小二乘法、岭回归、Lasso回归

    文章目录 机器学习的sklearn库 一.回归分析 <1.1>线性回归 1.1.1.Python实现线性回归 <1.2>最小二乘法 1.2.1.MATLAB实现最小二乘法 1. ...

  5. 线性回归(三)---岭回归

    岭回归 岭回归是一种用于共线性数据分析的有偏估计回归方法,是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息.降低精度为代价从而获得更符合实际.更可靠的回归系数,对病态数据(这样的 ...

  6. 机器学习之局部加权、岭回归和前向逐步回归

    都说万事开头难,可一旦开头,就是全新的状态,就有可能收获自己未曾预料到的成果.记录是为了更好的监督.理解和推进,学习过程中用到的数据集和代码都将上传到github 回归是对一个或多个自变量和因变量之间 ...

  7. 岭回归Lasso回归

    转自:https://blog.csdn.net/dang_boy/article/details/78504258 https://www.cnblogs.com/Belter/p/8536939. ...

  8. python lasso做交叉验证法_标准方程法_岭回归_LASSO算法_弹性网

    程序所用文件:https://files.cnblogs.com/files/henuliulei/%E5%9B%9E%E5%BD%92%E5%88%86%E7%B1%BB%E6%95%B0%E6%8 ...

  9. 机器学习 -- 线性回归(Linear Regression)原理及算法实现

    借鉴至:LionKing数据科学专栏 1. 线性回归的原理 假设有一个数据集,希望通过一些特征 x 1 x_{1} x1​,-, x p x_{p} xp​预测目标变量 y y y.最简单的模型是假设 ...

  10. 【机器学习实战 第九章】树回归 CART算法的原理与实现 - python3

    本文来自<机器学习实战>(Peter Harrington)第九章"树回归"部分,代码使用python3.5,并在jupyter notebook环境中测试通过,推荐c ...

最新文章

  1. 2.2 vivi虚拟视频驱动测试
  2. OpenAI及DeepMind两团队令未来的AI机器更安全
  3. 在jenkins上配置 sonar 两种方式的区别
  4. vb.net 如何文件指定打印机打印文件_使用Dropbox文件请求配合Canon Inkjet实现多用户文件打印...
  5. apple mac 下使用机械键盘的办法,键盘映射工具软件,apple mac Mechanical keyboard
  6. rabbitmq 消息长度_Spring Boot教程(29) – RabbitMQ必备基础
  7. GCD(Grand Central Dispatch)
  8. Intel 旗下 Habana Labs 遭勒索软件 Pay2Key 攻击,数据被盗
  9. 下载安装Redis+使用
  10. 在数据库WSEDSQLDB中检测到一个可能的数据库一致性问题。|解决方法
  11. Android so 文件全部报错:Duplicate resources
  12. java poi 替换word,POI替换Word中的mark标记(指定字符串)
  13. 腹腰部肌肉锻炼(腰会变粗)
  14. IPA (苹果应用程序文件格式)
  15. 给开发兄弟上难度,一周内上线likeadmin的官网
  16. 深拷贝和浅拷贝的区别(必须掌握)
  17. 【最新】CUDA Toolkit版本及可用PyTorch对应关系(参考官网)
  18. android 混淆后的机制,Android 代码混淆机制
  19. 9月英语——Power English
  20. protues仿真技巧——元件制作

热门文章

  1. javascript基础知识总结
  2. stl中stacks的基本用法
  3. .NET Framework 托管与非托管代码
  4. 蓝筹股、红筹股的含义
  5. 问题三十四:怎么用ray tracing画任意长方体(generalized box)
  6. 使用大数据可视化平台有什么好处
  7. 大数据平台目前存在的问题
  8. python constructor_Python学习札记(2)——搭建Boa-constructor
  9. 智乃的01串打乱(思维+暴力)
  10. Hive压缩存储(以Parquet为例)