第九十一篇 机器学习正则化

心得:

一、过拟合怎么产生的?

模型训练之初,你压根不知道哪些特征会有用,于是你找了很多特征,以此来尽可能精确地去拟合训练数据。结果是你用上了一些其实不重要的特征,虽然加上这些特征,会在训练集中表现很好,但我们的目的是在测试集上的要效果也要好。

分析发现,我们在模型中使用的某些特征,本身就不具备普适性。但你通过训练集,还是学习到它了,因为你的模型,想法设法地拟合了所有的样本点,自然而然地就会出来很多特征参数。第三幅图的模型复杂程度远大于第一幅。
在这里插入图片描述

在这种不具备普遍性的情况下学习到它,自然会影响你测试集的效果,自然就做不出泛化能力强的模型,就产生了过拟合。

二、如何消除过拟合

方法一:尽量减少选取变量的数量

具体而言,我们可以人工检查每一项变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。至于,哪些变量应该舍弃,我们以后在讨论,这会涉及到模型选择算法,这种算法是可以自动选择采用哪些特征变量,自动舍弃不需要的变量。这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

方法二:正则化

正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。

这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

接下来我们会讨论怎样应用正则化和什么叫做正则化均值,然后将开始讨论怎样使用正则化来使学习算法正常工作,并避免过拟合。

我们有两个图形,想办法来削弱图2的参数 θ3 和 θ4 :在这里插入图片描述
下面的式子是我们的优化目标,也就是说我们需要尽量减少代价函数的均方误差
在这里插入图片描述

于这个函数我们对它添加一些项,加上 1000 乘以 θ3 的平方,再加上 1000 乘以 θ4 的平方
在这里插入图片描述
1000 只是我随便写的某个较大的数字而已。现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让 θ3 和 θ4 尽可能小。因为,如果你在原有代价函数的基础上加上 1000 乘以 θ3 这一项 ,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时, 我们将使 θ3 的值接近于 0,同样 θ4 的值也接近于 0,就像我们忽略了这两个值一样。如果我们做到这一点( θ3 和 θ4 接近 0 ),那么我们将得到一个近似的二次函数。

在这里插入图片描述
因此,我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3、 θ4 非常接近于0)。显然,这是一个更好的假设。

三、L1 和 L2 正则化的数学原理

L1 正则化可以理解为每次从权重中减去一个常数。

L2 正则化可以理解为每次移除权重的 x%。

本质都是为了降低模型的复杂度,防止过拟合

1. L1正则化

L1 loss 正则化,即原损失函数 + 所有权重的平均绝对值 * λ ,其中λ >0

在这里插入图片描述
alpha :代表正则化系数
n : 代表样本数

loss =. loss + np.sum(np.abs(w)*alpha)/n

根据损失更新ω,需要先对ω求导:梯度L1正则
在这里插入图片描述

dw = dw + alpha * np.sign(w) * alpha / n

最终更新系数为:
在这里插入图片描述

2. L2 正则化

** L2 loss正则化,即原损失函数 + 所有权重平方和的平均值 * λ / 2 , λ>0**
在这里插入图片描述

loss =. loss + 0.5 * alpha * np.dot(w,w)/n

同样,需要先对ω求导:梯度L2正则
在这里插入图片描述

dw = dw + alpha * w / n

最终更新系数
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值