线性回归多重共线性优化

线性回归终极优化

Posted by yougth on September 12, 2017

问题引入

之前分析了线性回归问题的解法,最小二乘回归法,但是对于大多数的实际问题,由于我们要用有限的观测值去估计模型的分布,比如在之前讲线性回归中的例子,给出的样例有100对,而我们建立的模型是一条直线,我们都知道两点确定一条直线,这里有100个点,这种称作过度确定估计,同时很多样例由于各种原因本身存在误差,另一个方面是特征之间相关性很大,说白了就是两个特征之间存在关系,本身可以用一个变量来表示,这样既简化了模型,同时减少特征意味着减小误差,我们现在在线性回归中去想办法优化这个问题。

多重共线性:是指多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。比如虚拟变量陷阱即有可能触发多重共线性问题。

如果样本存在很大误差,那么我们估计到的结果变化就会非常大,估计到的参数的方差也会很大,导致估计不准确。


LASSO回归

LASSO回归的思路是既然会导致 变化很大,以及方差很大,那么我们在最小二乘估计的时候把 也作为损失函数中优化的一项,然后让 的值不能过大

同时在这一项中给一个系数k,就能够调节它的影响,k值越大,则 的变化影响很大,然后误差导致共线性的影响减小,我们在不断增大惩罚系数的过程中,画出参数 的变化曲线,这个曲线被称为岭迹 然后如果某个特征参数导致岭迹波动很大,说明这个变量参数有共线性,我们可以考虑剔除这个变量

步骤

  1. 对数据做标准化,从而方便以后对 的岭迹的比较,否则不同变量的参数大小没有比较性。 2.构建惩罚函数,对不同的k,画出轨迹图
  2. 根据轨迹图,选择剔除掉哪些变量。

目标函数 这里写图片描述

我们通过不断增大惩罚系数k,然后看看它的参数各个 的变化 这里写图片描述

上面右图是LASSO回归图像,可以看到从右到左随着k值的增大,很多 会出现变为0的情况,这种变量就是导致共线性的变量,我们可以剔除

为什么出现0的就是导致共线性的变量呢? 这里写图片描述

看看上面这个图,假设现在是一个两个参数的直线模型,有两个参数 需要估计,而按照LASSO对 的约束条件就是上面蓝色正方形, 使我们的自变量系数,需要估计的结果,可以看到红色的圆形总是先喝举行的角相交,而这个点正好 ,说明传统的最小二乘回归中 是具有共线性的,我们可以剔除,LASSO回归得到的是只有 对模型有用。

其实除了常用LASSO回归之外,还有一个岭回归,差别在于约束条件是 ,对应到上面的图中就是蓝色区域是个圆形,所以他不能直接让 值为0,应为相交的区域肯定不是在坐标轴上 ,但是它也能通过增大惩罚系数k观察 轨迹的波动去剔除共线性变量, 但是很明显发现LASSO更简单。

总结

岭回归(Ridge回归)能够优化点是通过调整惩罚系数$ 0< k < 1 $的大小,然后抑制过数据误差导致的拟合 而LASSO回归通过调整惩罚系数观察结果 先变为0,然后剔除共线性特征,从而达到简化模型作用 目前最好拟合广义线性模型的是glmnet,是LASSO回归的发明人开发的,它通过一系列不同的惩罚系数 $k$ 值去拟合模型,每次拟合都用上一次拟合的结果,从而达到抑制过拟合以及选择变量的效果,有兴趣可以研究下,有开源的库。 当然这些优化都可以用在逻辑回归上,逻辑回归只是在线性回归的模型上套了一个logit函数,数据本身误差和共线性的问题同样存在。