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

版权声明:转载请注明出处: https://blog.csdn.net/weixin_42398658/article/details/83511409

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

岭回归:

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

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

2.数据中中存在共线性

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

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

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

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

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

                                                     \hat{\beta }=(X^TX)^{-1}X^Ty

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

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

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

                                                          \mathbf{\hat{\beta }(k) = (X^TX+kI)^{-1}X^Ty}

                                                     其中\hat{\beta }是 \beta的岭回归估计,k称为岭参数

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

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

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

惩罚函数

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

我们发现形式和前面很类似,只是后面多了一项\lambda \sum_{j=1}^{p}\beta _j^2,这一项叫做惩罚项,这一项怎么来的呢?其实是根据我们要解决的问题来的,如下:

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

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

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

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

从上图中我们可以看出,当岭参数\lambda(图中为k,一样的)为0时,两个\beta很大,可以很清楚的说明数据存在多重共线性,因此可以适当的增大岭参数\lambda,会使的\beta急剧下降,在岭参数\lambda=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语言进行选择岭参数\lambda,如下:

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

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

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 ,这本书讲得很深,大家可以看看。

猜你喜欢

转载自blog.csdn.net/weixin_42398658/article/details/83511409
今日推荐