R语言深度学习-3-过拟合问题(无监督正则化/Lasso回归/岭回归/集成和平均算法)
温馨提示:这篇文章已超过378天没有更新,请注意相关的内容是否还可用!
本教程参考《RDeepLearningEssential》
我们从上一个教程看到,我们看到在我们训练迭代或者训练更大神经网络的时候,往往会产生过拟合,而且越来越严重,它可能会把训练它的数据拟合的很好,但是未必能把新数据做的很好。
因此本次介绍一下提升模型泛化能力而防止模型过拟合的方法,称为无监督正则化,通常训练是减少训练误差来优化模型,但是正则化是关注减少测试或训练误差,使得模型在新数据上的效果和训练数据上一样好。
3.1 L1罚函数
3.1.1 Lasso概念
L1罚函数,又称最小绝对值收缩和选择算子(Least Absolute Shrinkage and Selection Operator)是我们熟知的Lasso算法,基本思想是把权重向0收缩,最好淘汰一些不重要的系数,比如一个八元一次方程,描述多种生活习惯对寿命的影响,其中有一个每天刷牙应该属于被去掉的项。
除了防止过拟合之外,它还可以作为一种 变量选择的方法。惩罚的力度是由一个超参数λ所控制的,它乘以权重绝对值的和, 可以被预先设定,或者就像其他超参数那样,使用交叉验证或者一些类似的方法来优化。
首先,很明显惩罚的影响依赖于权重的大小,而权重的大小依赖于数据的规模。因此,我们通常先把数据标准化为带有单位方差(或者起码是每个变量的方差相等)的形式。
我们用 X 表示输入,Y 表示输出或者因变量,B 是参数,F 是为了求出 B 而要优化的目标函数。特别地有:F(B;X,Y)。在 神经网络中,参数可以是偏差或者偏移(本质上是来自回归的截距)以及权重。L1 罚函数把目标函数修正为其中 w 仅代表权重(就是说,偏移通常是被忽略的)。考 虑梯度,我们可以将这个增加的惩罚项表示为
3.1.2 Lasso代码示例
我们通过一个模拟线性回归问题来看一下L1罚函数的工作原理:
我们创建一个具有特定均值和相关性的多元正态分布数据集X,然后根据这些数据和给定的线性模型参数生成了一个响应变量y。
library("glmnet")
library("MASS")
set.seed(1234)
X 