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

news2025/2/23 19:45:41

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

偏差大表示欠拟合,而方差大表示过拟合,我们这一节再深入探讨下过拟合和欠拟合问题。一个经典的图如下:
在这里插入图片描述
其中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.coloradmin.cn/o/685973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript知识点DOM 模型详细讲解

DOM 模型 DOM 全称是 Document Object Model 文档对象模型 大白话,就是把文档中的标签,属性,文本,转换成为对象来管理。 Document 对象 Document对象的理解: ​ 第一点:Document 它管理了所有的 HTML 文…

三次登录验证和验证码功能实现

三次登录验证和验证码功能实现 最近手头上的事忙的差不多了,就想着自己写写小demo玩一下,结果突然看到我们旧系统的登录好像有点拉胯,然后就自己写了个小demo,指不定哪天就用上了呢 一、pom文件 首先当然是pom文件啦&#xff0…

【JS】1724- 重学 JavaScript API - Drag and Drop API

❝ 前期回顾: 1. Page Visibility API 2. Broadcast Channel API 3. Beacon API 4. Resize Observer API 5. Clipboard API 6. Fetch API 7. Performance API 8. WebStorage API 9. WebSockets API 10. Fullscreen API 11. Geolocation API ❞ 🏝 1. 快速…

ThinkPHP6.0 数据迁移工具 migration 入门使用教程

文章目录 安装数据库迁移工具创建迁移文件执行迁移回滚参考资料 开始前需要做好的准备工作: 搭建好 PHP 开发环境(推荐 phpstudy,PHP>7.2.5,MySql5.7.x)。安装好 ThinkPHP6.0,并做配置可正常连接到 MySq…

docker安装nginx,发布部署vue项目

场景 前后端项目&#xff0c;实现前后端简单部署到服务器。前端vue&#xff0c;后端springboot。服务器ubuntu&#xff08;18.04&#xff09;<linux系统同理>. 后端通过(nohup java -jar xxx.jar &) 指令简单部署。该文主要说明部署前端vue项目。 部署vue需要安装ng…

一文看懂51单片机和stm32区别,怎么用怎么学怎么选

一文看懂51单片机和stm32区别&#xff0c;怎么用怎么学怎么选 对于初学单片机的童鞋而言&#xff0c;开始会有这样的疑问&#xff1f;到底选哪个怎么选呢&#xff1f; 1、工业控制51优于stm&#xff1f; 2、没区别,51就是个入门级,不过也有贵的,我用的就是51,用的还可以&…

PG系列4:linux下编译安装PG15

文章目录 一. 源码安装1.1 下载并解压1.2 安装依赖包1.3 开始编译安装1.4 创建用户1.5 创建目录及修改权限1.6 设置环境变量1.7 初始化数据库1.8 启动和关闭数据库 二. 验证2.1 查看数据库后台进程2.2 验证和登陆数据库2.3 查看数据库版本2.4 查看数据库运行状态2.5 修改白名单…

Sangfor华东天勇战队:h2数据库console命令执行( CVE-2021-42392 漏洞)

漏洞版本 1.1.100 < H2 Console < 2.0.204 漏洞复现 此处复现版本1.4.197 启动项目如下 在Driver Class中输入javax.naming.InitialContext 在JDBCURL中输入jndi注入恶意链接 生成链接命令&#xff1a; java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C …

CCD与CMOS

#1, 相机内部结构 https://zhuanlan.zhihu.com/p/158502818 #2&#xff0c;

大数据从0到1的完美落地之Hive分区

分区简介 为什么分区 Hive的Select查询时&#xff0c;一般会扫描整个表内容。随着系统运行的时间越来越长&#xff0c;表的数据量越来越大&#xff0c;而hive查询做全表扫描&#xff0c;会消耗很多时间&#xff0c;降低效率。而有时候&#xff0c;我们需求的数据只需要扫描表…

java面试高频面试题

文章目录 面向对象 什么是面向对象&#xff1f;封装继承多态 和equals比较hashCode与equals重载和重写的区别Final类加载器spring是什么AOP的理解谈谈你对IOC的理解零拷贝RocketMQ 架构设计RocketMq 事务消息原理RockeMq顺序消息消费原理简述RockerMQ持久化机制RocketMQ如何保…

redis学习整理

目录 一、简述 二、作用 三、五大基本数据类型 Key命令 1.String字符串 2.List列表 3.Set(集合&#xff09; 4.Hash&#xff08;哈希&#xff09; 5.zSet&#xff08;有序集合&#xff09; 四、主从复制 与 哨兵模式 1. 主从复制&#xff1a; 2. 哨兵模式&#xff…

【正点原子STM32连载】 第四十一章 游戏手柄实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html# 第四…

【从零开始学习C++ | 第二十一篇】C++新增特性 (上)

目录 前言&#xff1a; 委托构造函数&#xff1a; 类内初始化&#xff1a; 空指针&#xff1a; 枚举类&#xff1a; 总结&#xff1a; 前言&#xff1a; C的学习难度大&#xff0c;内容繁多。因此我们要及时掌握C的各种特性&#xff0c;因此我们更新本篇文章&#xff0c;向…

部署vue element-ui admin报错(vue2)

部署vue element-ui admin报错(vue2) 目录 部署vue element-ui admin报错(vue2) 一、官方安装说明 二、部署报错的关键影响因素 2.1、“开发模板”版本 2.2、完整版 2.2.1、基础知识和基础依赖 2.2.2、原理-安装过程 三、完整版 3.3、win10环境 四、效果 4.1、win7…

云安全技术——kvm虚拟化技术

目录 10-1 kvm简介 10-2 在CentOS 7 图形化界面下安装KVM 使用IDEA开发读写MySQL数据库程序 实验目的 了解 CentOS7图形化界面的部署方法 了解 KVM的组成和作用 了解 KVM的技术架构 了解KVM的安装方法 了解 KVM创建虚拟机的方法 了解KVM的常用管理命令 实验要求 能部署图形化…

为什么建议孩子学Python?理由都在这!

近几年&#xff0c;越来越多的家长选择让孩子学习编程&#xff0c;以此提高孩子的逻辑思维、信息素养等综合能力。 Python作为一种计算机程序设计语言&#xff0c;在科技行业中有广泛的应用&#xff0c;逐渐成为少儿编程教育中必学课程之一。今天&#xff0c;编编就为大家详细…

【开发者指南】如何在MyEclipse中编辑HTML或JSP文件?(二)

在上文中&#xff08;点击这里回顾>>&#xff09;&#xff0c;我们为大家介绍了HTML / JSP编辑器、智能代码完成和内容辅助等功能&#xff0c;本文将继续介绍Emmet支持、Outline 视图功能等。 MyEclipse v2023.1正式版下载 如果您有HTML或JSP文件要编辑&#xff0c;这里…

chatgpt赋能python:Python聊天程序:现代化交流的必备工具

Python聊天程序&#xff1a;现代化交流的必备工具 在信息技术快速发展的现代社会&#xff0c;聊天作为一种流行的交流方式已经取代了传统的语音电话和短信。由于智能手机和电脑的广泛普及&#xff0c;越来越多的人习惯于使用聊天软件来与朋友、家人和同事保持联系。因此&#…

GBASE南大通用携手麒麟软件、索信达 共推金融信创联合解决方案

在国家信创战略推动下&#xff0c;我国正逐步实现基础硬件-基础软件-行业应用软件的国产化替代。信创浪潮中&#xff0c;各产业链以及不同垂直细分领域的创新主体&#xff0c;正以开放、创新、团结的姿态&#xff0c;形成高凝聚力的生态合作&#xff0c;共推信创产业发展&#…