【机器学习】正则化对过拟合和欠拟合的影响

news/2024/10/17 21:28:50/

模型过拟合和欠拟合的图像特征

偏差大表示欠拟合,而方差大表示过拟合,我们这一节再深入探讨下过拟合和欠拟合问题。一个经典的图如下:
在这里插入图片描述
其中d=1为欠拟合,d=4为过拟合,而d=2则刚刚好。回顾下刚刚说的使用训练集和交叉验证集计算出来的误差(又称代价函数) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ),当d=1的时候,模型欠拟合,那么 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)都很大,因为模型对训练集的拟合都不好,对交叉验证集训练出来的结果只会更烂,此时一般来说 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)很接近,但是 J c v ( θ ) J_{cv}(\theta) Jcv(θ)略高。当d=4的时候,模型过拟合,模型对训练集的拟合已经很好了,但是泛化能力很差,因此 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)比较小,但是 J c v ( θ ) J_{cv}(\theta) Jcv(θ)比较大。 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)图像如下
在这里插入图片描述

方差、偏差和正则化

本节继续深入讨论方差和偏差的关系,以及正则化是如何影响这两者的。
假设对于假设函数 h ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 h(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 h(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4我们使用如下的正则化代价函数训练 J ( θ ) = 1 2 m ∑ i = 1 m h θ ( x ( i ) − y ( i ) ) 2 + λ 2 m ∑ j = 1 m θ j 2 J(\theta) = \frac{1}{2m}\sum_{i=1}^m h_\theta(x^{(i)}-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=1}^m\theta_j^2 J(θ)=2m1i=1mhθ(x(i)y(i))2+2mλj=1mθj2那么可能会有如下图三种情况
左边是 λ \lambda λ非常大的情况,也就是对于任意偏差的惩罚都十分重,这时候图像会倾向于欠拟合(高偏差);右边是 λ \lambda λ非常小的情况,也就是对于任意偏差的惩罚都十分轻微,这时候图像会倾向于过拟合(高方差),就和没使用正则化差不多。只有正则化参数大小适中才能获得泛化能力强偏差小的模型。 另外我们设训练函数为 J t r a i n ( θ ) = 1 2 m ∑ i = 1 m h θ ( x ( i ) − y ( i ) ) 2 J_{train}(\theta) = \frac{1}{2m}\sum_{i=1}^m h_\theta(x^{(i)}-y^{(i)})^2 Jtrain(θ)=2m1i=1mhθ(x(i)y(i))2
也就是去掉正则化项,同样,我们将交叉验证的代价函数和测试集的代价函数设置为 J c v ( θ ) = 1 2 m c v ∑ i = 1 m c v h θ ( x c v ( i ) − y c v ( i ) ) 2 J_{cv}(\theta) = \frac{1}{2m_{cv}}\sum_{i=1}^{m_{cv}} h_\theta(x^{(i)}_{cv}-y^{(i)}_{cv})^2 Jcv(θ)=2mcv1i=1mcvhθ(xcv(i)ycv(i))2 J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t h θ ( x t e s t ( i ) − y t e s t ( i ) ) 2 J_{test}(\theta) = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}} h_\theta(x^{(i)}_{test}-y^{(i)}_{test})^2 Jtest(θ)=2mtest1i=1mtesthθ(xtest(i)ytest(i))2

我们会以每次翻一番的速度更新 λ \lambda λ的值,并且得出代价函数 J ( θ ) J(\theta) J(θ)最小的时候的 θ \theta θ值。然后通过计算出的 θ \theta θ计算 J c v ( θ ) J_{cv}(\theta) Jcv(θ),其基本计算过程如下:
t r y λ = 0 → m i n J ( θ ) → θ ( 1 ) → J c v ( θ ( 1 ) ) try\:\lambda=0\to minJ(\theta)\to \theta^{(1)}\to J_{cv}(\theta^{(1)}) tryλ=0minJ(θ)θ(1)Jcv(θ(1))
t r y λ = 0.01 → m i n J ( θ ) → θ ( 2 ) → J c v ( θ ( 2 ) ) try\:\lambda=0.01\to minJ(\theta)\to \theta^{(2)}\to J_{cv}(\theta^{(2)}) tryλ=0.01minJ(θ)θ(2)Jcv(θ(2))
t r y λ = 0.02 → m i n J ( θ ) → θ ( 3 ) → J c v ( θ ( 3 ) ) try\:\lambda=0.02\to minJ(\theta)\to \theta^{(3)}\to J_{cv}(\theta^{(3)}) tryλ=0.02minJ(θ)θ(3)Jcv(θ(3))
t r y λ = 0.04 → m i n J ( θ ) → θ ( 4 ) → J c v ( θ ( 4 ) ) try\:\lambda=0.04\to minJ(\theta)\to \theta^{(4)}\to J_{cv}(\theta^{(4)}) tryλ=0.04minJ(θ)θ(4)Jcv(θ(4))

t r y λ = 10.24 → m i n J ( θ ) → θ ( 12 ) → J c v ( θ ( 12 ) ) try\:\lambda=10.24\to minJ(\theta)\to \theta^{(12)}\to J_{cv}(\theta^{(12)}) tryλ=10.24minJ(θ)θ(12)Jcv(θ(12))

假设我们计算出 J c v ( θ ( 5 ) ) J_{cv}(\theta^{(5)}) Jcv(θ(5))的值最小,那么我们可以用选择出来的 θ ( 5 ) \theta^{(5)} θ(5)来计算出其 J t e s t ( θ ( 5 ) ) J_{test}(\theta^{(5)}) Jtest(θ(5))的值,该值可以衡量模型对新样例泛化的能力

之前我们谈到,如果正则化参数很小,那么会过拟合;反之则会欠拟合,我们画出正则化参数和 J c v ( θ ) J_{cv}(\theta) Jcv(θ)以及 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)的关系。
在这里插入图片描述
其中紫红色的为 J c v ( θ ) J_{cv}(\theta) Jcv(θ),蓝色的为 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ),因为 λ \lambda λ小的时候,过拟合对训练集拟合很好,但是泛化能力很差;而 λ \lambda λ过大的时候,欠拟合对训练集都拟合不充分,其泛化能力也很差

学习曲线

学习曲线可以验证你的模型是否正确,或者改进算法的精度。我们以训练集的数量m作为横轴,将代价函数作为纵轴,那么可以得出如下的图像:
在这里插入图片描述

如果只有训练集一个样例,那么训练集可以拟合的十分精准——只需要找到任意一条经过该点的曲线便可,但是其泛化能力是很差的。随着样例数量增加,实际上假设函数无法精确经过每一个样例,此时 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)会有所上升,但是逐渐总结出规律后,样例和假设函数的偏差不会太大,因此 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)在上升后会逐渐趋于平缓。而模型的泛化能力则是随着训练集样本的增加而逐渐增强的,因此 J c v ( θ ) J_{cv}(\theta) Jcv(θ)一开始会很高,然后逐渐下降。

在欠拟合(高偏差)的情况下,如果我们增大训练量会怎么样?(如图右边)
在这里插入图片描述
结果是没什么用,因为假设函数次数不够,哪怕增加了样例其假设函数(也就是误差)还是很高。同样的,连训练集都搞不定就更别提交叉验证集了,其结果是 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)都很高。其结论是,如果在欠拟合的情况下,增大训练集数据量会使得 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)逐渐趋于平缓,但其值依旧较高。

在过拟合(高方差)的时候,如果增加样本量会如何?
在这里插入图片描述

可以看出样本小的时候对训练集拟合很好,但是泛化能力很差。随着样本量增大,假设函数很难将所有训练集样本都拟合的很好,因此 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)会轻微上升,但是换来的是其泛化能力的增强——因为模型学会应对更多情况了因此 J c v ( θ ) J_{cv}(\theta) Jcv(θ)会逐渐下降,而如果持续增大样本来给你,其 J c v ( θ ) J_{cv}(\theta) Jcv(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)会逐渐靠近,最后 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)只比 J c v ( θ ) J_{cv}(\theta) Jcv(θ)大一些,而总的来说,两个值都会比在欠拟合情况下要小得多

总结

接下来我们总结若干应对各种问题的方法:
修正过拟合(高方差):增加训练及数量、使用更少的特征、增加正则化参数的值
修正欠拟合(高偏差):增加额外的特征、增加假设函数的复杂度和次方数、减小正则化参数的值


http://www.ppmy.cn/news/581123.html

相关文章

RISC-V处理器的设计与实现(一)—— 基本指令集

本人小白一枚,在学习FPGA的过程中偶然刷到了tinyriscv这个开源项目,并且自己对计算机体系结构的知识也很感兴趣,所以想参考这个开源项目做一个基于RISC-V指令集的CPU,下面是tinyriscv这个开源项目的地址,本项目很多思路…

钉钉企业邮箱smtp服务器

EMAIL_HOST试了’smtp.aliyun.com’不行 换成’smtp.mxhichina.com’就行了

搭建 Extmail企业邮件服务

文章目录 搭建 Extmail企业邮件服务简介邮件协议组成客户端 1、配置 DNS 模块2、使用 extmail 自带模板在 MySQL 中创建数据库安装数据库、修改密码安装Apache、部署网站向数据库中导入extmail的初始化数据,导入前修改部分密码、方便登录 还原数据库,创建…

几何平均值最大子数组

题目描述 从一个长度为N的正数数组numbers中找出长度至少为L且 几何平均值 最大的子数组,并输出其位置和大小。 (K个数的 几何平均值 为K个数的乘积的K次方根) 若有多个子数组的几何平均值均为最大值,则输出长度最小的子数组。 若…

网易免费企业邮箱服务器地址

pop:pop.ym.163.com smtp:smtp.ym.163.com 更多信息请查看 个人博客 或者关注公众号:Z技术

腾讯企业邮箱SMTP服务器连接失败 PHPMailer

今天测试PHPMailer 发送邮箱,按照常规配置,端口正常填写,但是腾讯企业邮箱就是提示错误。 解决方法: 深坑,不要加端口,把端口注释掉! $mail->SMTPDebug SMTP::DEBUG_SERVER; …

公司企业邮箱登陆客户端,邮件服务器如何设置?

企业邮箱有很好的邮件管理功能,例如登录tom企业邮箱后台,可部门分级管理、邮件群组、邮箱搬迁、移动办公、邮件备份等功能,细分起来还有不少。企业邮箱的服务器有很强大的兼容功能,使用其他客户端,邮件也能同步&#x…

企业邮箱容量,注册无限容量邮箱,企业邮箱服务器怎么设置?

公司邮箱容量是在选择企业邮箱时重点考虑的,TOM企业邮箱,无限容量,3折优惠,高性价比,邮件加密传输,是国内唯一具备24年运营经验的直销服务商。 企业邮箱怎么申请 首先开启电脑的一个浏览器,在…