机器学习(一)~模型评估与选择 之 *正则化
目的: 正则化是为了防止过拟合,选择经验风险和模型复杂度同时较小的模型,进而增强泛化能力(能够很好的解释数据并且十分简单的模型就是最好的模型<奥卡姆剃刀原理>)
在分析正则化之前,需要先了解下面两个问题:
1)参数变稀疏有何优点?
- 实现参数稀疏帮助模型进行特征选择,避免不重要特征对数据的干扰,增强泛化能力
- 参数变少可以使整个模型获得更好的可解释性
2)参数值变小变均匀有利于缓解过拟合吗?
参数值较大,结果随特征变化敏感,会使得预测值在较小的空间产生较大的波动,因此参数值变小有利于缓解过拟合
1.加入正则化的代价函数公式
其中,J(w,b) 代表原始代价函数,后面一项为正则化项,m 为训练集样本大小,1/2 便于之后求导无实义,λ 是正则项系数,用于权衡正则项与原始代价函数(经验误差)项的比重,λ 值一般通过交叉验证来选定
2. L1 正则化与L2 正则化
L1正则化表示各个特征参数绝对值之和:
L2正则化表示各个特征参数的平方的和的开方值:
- 在回归模型中加入L1正则称Lasso回归;在回归模型中加入L2正则称Ridge回归
蓝色圆心表示经验风险最小的点(此时过拟合),红色区域为正则化,计算损失函数最小同时,正则化项也小,即求两者相交点为两者之和最小处w*为最佳参数,相当于正则化将损失函数拉大(防止过拟合,提升泛化能力);从图中可以看出,L2正则化时蓝红相交处更大概率为靠近w1=0,使特征参数趋向于0而非0,达到权重衰减的效果;L1正则化时更可能相较于w1=0,使特征参数为0,达到筛选特征的效果 - 两者均是将所有特征参数考虑进去,L1适用于特征选择(参数变稀疏),L2适用于权重衰减(参数变小)
L1 与 L2 权重更新过程
这两者具体如何实现特征选择或权重衰减呢?
L1正则化权重更新过程:
sign(x) 为符号函数根据正负性取值1,0,-1;若w为正数,则每次更新会减去一个常数;若w为负数,则每次更新会加上一个常数,所以很容易产生特征的系数为 0 的情况,特征系数为 0 表示该特征不会对结果有任何影响,因此L1正则化会让特征变得稀疏,起到特征选择的作用
L2正则化权重更新过程:
w前面系数为1-ηλ/m,因为η、λ、m 都是正的,所以 1-ηλ/m 小于1,它的效果是比例化缩放w ,这会让系数绝对值变小趋向于0而不会变为 0,因此正则化会让模型变得更简单,达到权重衰减的结果,而不会起到特征选择的作用
L1 与 L2 对比分析:
优化角度:
由于L1范数用的是绝对值,导致LASSO的优化目标不是连续可导的,也就是说,最小二乘法,梯度下降法,牛顿法,拟牛顿法都不能用
L1正则化问题求解可采用近端梯度下降法(Proximal Gradient Descent,PGD)
L2正则化处处可微,易于优化
实用角度:
- L1正则化在确实需要稀疏化模型的场景下(如提前已知相关特征很少需要筛选),才能发挥很好的作用并且效果远胜于L2
- L2正则化在面对大量无关特征并且特征不是由高斯分布产生时,误差很大,需要提前进行特征筛选
- 当相关特征数远大于训练样本数时,无论是L1还是L2,都无法取得很好的效果
- 在不用特征筛选时,L2更有优势:训练数据里的特征很多是共线性的,有的多个共线性特征对于分类很重要,这时L1的做法是随机选择其中一个特征,而扔掉其它的特征。这将使模型失去很多有用的特征,进而导致模型误差较大。L2正则化的特点是,在面对几个存在共线性的特征时,它会将权值平分给这些特征,从而使得这些有用的特征都得以留下,改进了模型的准确率
解决方法: 特征工程+L2或者L1+L2:
3. 其他正则化方法:
增大数据集: 如在目标识别领域将图片进行旋转、缩放等(图片变换的前提是通过变换不能改变图片所属类别,例如手写数字识别,类别6和9进行旋转后容易改变类目)、语音识别中对输入数据添加随机噪声、NLP中进行近义词替换、噪声注入等
dropout: 适用于神经网络中每次通过屏蔽部分神经元,就可以构建出不同的神经网络模型,通过这样的方式降低节点之间的关联性以及模型的复杂度,从而达到正则化的效果。这要求数据集够大,在增大数据集的情况下,使用 dropout 需要使用的计算代价可能会比他带来正则化效果更高
Earlystopping: 提前终止可能是最简单的正则化方式,他适用于模型的表达能力很强的时候。在验证误差不在提升后,提前结束训练;而不是一直等待验证误差到最小值
- 对于二次优化目标和线性模型,提前停止策略相当于L2正则化;可以用L2正则化代替earlystopping,因为只要训练的时间足够长,多试几个lambda,总可以得到比较好的结果
- 优点:只运行一次梯度下降,我们就可以找出w的较小值,中间值和较大值,而无需尝试L2正则化超级参数lambda的很多值。
- 缺点:不能独立地处理训练误差最小和训练误差最小这两个问题,使得要考虑的东西变得复杂