线性回归(Linear Regression)是利用数理统计中回归分析,来确定数种变量间相互依赖的定量关系的一种统计分析方法。
一.问题描述回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析,一元线性模型描述如下:
如回归分析中包括两个或两个以上的自变量,且因变量与自变量之间是线性关系,则称为多元线性回归分析,多元线性模型描述如下:
不失一般性,线性回归问题可描述为:
利用样本数据点样本点
求取线性模型参数
使得实际值与预测值之间的平方和误差最小,即线性回归损失函数为:
二.求解方法1.最小二乘法不论一元还是多元线性回归,都可用矩阵形式表示,固本文统一用矩阵方式讲解。
矩阵X的每一行的前n个元素代表一条数据标签,共有m个数据。最后一行元素恒置为1。
loss为:
上式可改写成矩阵相乘的方式:
要求loss最小时w的取值,loss对w求偏导,使其为0。
注:求导熟记两个公式:
求偏导过程:
固得:
W为最优解。
这种方法存在的问题:
矩阵求逆不是一个必然成功的行为(矩阵X存在不可逆情况),对于那些不能直接求矩阵的逆,在工程实践中发现有个Trick(技巧),结果发现性能效果要比上面的还要好些,这完全是实践出来的。
这个先发现的,接下来发现岭回归损失函数求偏导正好也是这个。
2.梯度下降法损失函数为:
损失函数 对 求偏导,可得:
在上式中梯度大小实际上是和样本数量m相关,m越大,累加之和越大,这是不合理的。为了使与m无关,对损失函数 J 除以m,那么损失函数变为:
那么偏导数为:
写成矩阵形式,偏导数改写为:
其中为:
3.梯度下降类型目标函数:
由于目标函数是由m个样本累加得到的,因此可以求一个平均得到损失函数:
3.1全量梯度下降批量梯度下降法,(Batch Gradient Descent),通过下面这个公式可以看出,如果想要求出梯度,每一项都要对所有的样本进行一次计算。这种计算方式一定能精确地求出最优梯度。但如果样本量m比较大的时候,计算梯度那是相当耗时的。因此,基于这个问题就有了随机梯度下降。
m为样本个数,j为特征个数
3.2随机梯度下降 随机梯度下降,(Stochastic Gradient Descent),根据批量梯度下降算法,能不能每次只对一个样本进行求梯度,这样也就不用除以m了。基于这样的想法就出现了随机选择样本求梯度的方法,并且使其向量化,使用下面这个式子作为搜索的方向。这个式子已经不是目标函数的梯度方向了。
m为样本个数,j为特征个数
3.3小批量梯度下降 小批量梯度下降法,mini-batch Gradient Descent,就是将批量梯度下降和随机梯度下降的两种结合,在深度学习的图像领域,会经常使用这种方法,因为相对一张图片来说假如是100*100=10000,因此如果直接使用批量梯度下降显然是不太现实的,所以结合随机梯度下降的思想,每次从样本中随机抽取一个mini-batch进行梯度求解,从而寻找搜索方向,进而找到最优解。
m为样本个数,j为特征个数
三.正则化1.岭回归岭回归是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法。通过损失最小二乘法的无偏性,以损失部分信息、降低精度为代价,提升数值稳定性泛化能力,获得回归系数更为符合实际、更可靠的回归方法。
对于数据集中的数据(包含这些病态数据:训练样本数量少,甚至少于样本维数,这样将导致数据矩阵无法求逆;又比如样本特征中存在大量相似的特征,导致很多参数所代表的意义重复。其本质是考虑到数据一定有偏差,使得这些特征相关系数变小了),做到一定的特征选择。
岭回归:消除共线性;模的平方处理
岭回归等于线性回归 + L2范数 (L2是高斯分布。)
2.lasso回归岭回归的正则化因子上使用模型参数向量的二范数形式。如果使用一范数形式,那就是lasso回归了。lasso回归相比于岭回归,会比较极端。它不仅可以解决过拟合问题,而且可以在参数缩减过程中,将一些重复的没必要的参数直接缩减为零,也就是完全减掉了。这可以达到提取有用特征的作用。但是lasso回归的计算过程复杂,毕竟一范数不是连续可导的。
比岭回归好的是可以方便删除无效变量(系数为零即无效),因此不用靠人眼去主观筛选变量。它不仅可以解决过拟合问题,而且可以在参数缩减过程中,将一些重复的没必要的参数直接缩减为零,也就是完全减掉了。这可以达到提取有用特征的作用。用Lasso作为删选变量的工具更有可实际操作性。
Lasso回归:压缩变量,起降维作用;模处理
Lasso回归等于线性回归 + L1范数(L1是拉普拉斯分布)
3.弹性网络回归(ElasticNetRegression) ElasticNet 回归,即岭回归和Lasso技术的混合。弹性网络是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型。 这种组合允许学习到一个只有少量参数是非零稀疏的模型,就像 Lasso 一样,但是它仍然保持一些像 Ridge 的正则性质。我们可利用 l1_ratio 参数控制 L1 和 L2 的凸组合。
弹性网络在很多特征互相联系的情况下是非常有用的。Lasso 很可能只随机考虑这些特征中的一个,而弹性网络更倾向于选择两个。
在实践中,Lasso 和 Ridge 之间权衡的一个优势是它允许在循环过程(Under rotate)中继承 Ridge 的稳定性。
当α接近0时,ElasticNet表现接近lasso, 当α从1变化到0时,目标函数的稀疏解(系数为0的情况)从0增加到Lasso的稀疏解。
参考文章:
https://www.jianshu.com/p/aadad14db00e
https://www.cnblogs.com/xiugeng/p/12977373.html
https://www.jianshu.com/p/7a3d98dd7c97
https://zhuanlan.zhihu.com/p/48255611
https://www.jianshu.com/p/c7e642877b0e