【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
一、算法简介
1-1、岭回归(Ridge Regression)
上节我们讲到了线性回归,那么思考这么一个问题:
如果数据特征比样本点还多怎么办?
是否还可以使用线性回归和之前的方法来做预测?
答案是:否定的。因为此时输入数据的矩阵不是满秩矩阵,非满秩矩阵在求逆时会出现问题。
为了解决这个问题,引入了岭回归(Ridge Regression)的概念。
缩减方法可以去掉不重要的参数,因此能更好地理解数据。此外,与简单的线性回归相比,缩减法能取得更好的预测效果。
1-2、套索回归(Lasso Regression)
除了Ridge,还有一种正则化的线性回归是Lasso。与岭回归相同,使用Lasso也是约束系数使其接近于0。
二、算法原理
2-1、岭回归原理
Ridge回归通过对系数的大小进行惩罚来解决普通最小二乘的一些问题 。公式如下:
岭回归是加了二阶正则项的最小二乘,主要适用于过拟合严重或各变量之间存在多重共线性的时候,岭回归是有bias的,这里的bias是为了让variance更小。
所以岭回归的关键是找到一个合理的α值来平衡模型的方差和偏差。
α的选择:
- 模型的方差:回归系数的方差
- 模型的偏差:预测值和真实值的差异
2-2、套索回归原理
岭回归无法剔除变量,而LASSO回归模型,将惩罚项由L2范数变为L1范数,可以将一些不重要的回归系数缩减为0,达到剔除变量的目的。
Lasso回归作用:因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。
三、算法要点
过拟合(over-fitting): 在训练数据不够时,或者over-training时,常常会导致over-fitting(过拟合)。会使得对于训练数据准确率高,对于新数据准确率低。
避免过拟合的方法有很多:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)包括L1、L2(L2 regularization也叫weight decay),dropout。
3-1、L1正则化
为什么叫L1正则化?
因为后面加上了||w||的一次幂。
正则(Re) -------> Regularization(规则化)限制,不能让系数无限大。系数波动大,方程不稳定。
比原始的更新规则多出了η * λ * sgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大。
另外,上面没有提到一个问题,当w为0时怎么办?当w等于0时,|W|是不可导的,所以我们只能按照原始的未经正则化的方法去更新w,这就相当于去掉ηλsgn(w)/n这一项,所以我们可以规定sgn(0)=0,这样就把w=0的情况也统一进来了。(在编程的时候,令sgn(0)=0,sgn(w>0)=1,sgn(w<0)=-1)
3-2、L2正则化
为什么叫L2正则化?
因为后面加上了||w||的平方
C0代表原始的代价函数,后面那一项就是L2正则化项,它是这样来的:所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。
对比上面w的更新公式,可以发现后面那一项变了,变成所有导数加和,乘以η再除以m,m是一个mini-batch中样本的个数。
过拟合的时候,拟合函数的系数往往非常大,为什么?
如下图所示,过拟合,就是拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大。
在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
为什么要进行正则化?
正则化是通过约束参数的范数使其不要太大,所以可以在一定程度上减少过拟合情况。正则化:防止过拟合,提高泛化能力。
四、线性回归、岭回归、套索回归异同点
相同点
- 都是基于最小二乘法
不同点
-岭回归:L2正则化
-
缩减系数,防止过拟合。如果线性回归出现过拟合,使用岭回归进行优化。
-
即使没有出现过拟合,也会尝试使用岭回归。
-
加入偏差,得到更好地结果
-
岭回归是数据处理的一种方式
-套索回归:L1正则化
-
适用于方程的解是稀疏矩阵,当属性特别多时,可以采用Lasso去尝试。
-
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;
在实践中,岭回归与套索回归首先岭回归。但是,如果特征特别多,而某些特征更重要,具有选择性,那就选择Lasso可能更好。
scikit-learn还提供了ElasticNet类,结合了Lasso和Ridge的惩罚项。在实践中,这种结合的效果最好,不过代价是要调节两个参数:一个用于L1正则化,一个用于L2正则化。
来源:oschina
链接:https://my.oschina.net/u/3938912/blog/3144496