从0开始学习机器学习--Day19--学习曲线

一般来说,如果一个算法的表现不理想,那么多半是因为出现了欠拟合或过拟合问题,这种时候我们要做的就是搞清楚出现的是偏差问题还是方差问题,亦或是二者皆有,这有助于我们精准定位问题所在。

之前,我们发现假设函数多项式的次数越高,代价函数的误差就越小,假设我们把多项式的次数作为横坐标,训练集代价函数的误差为纵坐标画图,呈现出来的应该是随着横坐标增大纵坐标不断减小的图像:

随着多项式次数增加两种代价函数的变化情况

但如果换做是验证集的假设函数,图像又有所不同。可以看到在 d=2的时候,其误差确实小了,这反映的是其预测值和实际值之间的误差变小,但当 d=4时,出现了过拟合的情况,此时预测值与实际值之间的差又变大,所以其曲线又往上升而不是继续下降,这进一步地说明了为什么我们采用验证集的参数而不是直接用训练集的。

也就是说,通过比较训练集和验证集代价函数的误差,可以确定到底是出现了什么问题。假如两者都很大且两者差值较小,则说明式出现了高偏差、欠拟合的情况,应该适当增大多项式的次数;如果训练集的误差远远小于验证集的误差,则说明出现了高方差、过拟合的情况,需要适当减小多项式的次数。

正则化和偏差、方差(Regularization and bias/variance)

在之前学习正则化的时候,我们知道通过正则化参数,可以挑选出不太重要的参数项,从而决定多项式的次数。但之前我们基本默认 \lambda =1 or \lambda =10,那么在实际情况中我们该怎么挑选合适的\lambda呢?

假设我们的假设函数是4次项的多项式,我们按从小到大的顺序将不同的\lambda带入代价函数算出参数,注意这里的\lambda是按照2倍的速度增长的,当增加到12次时,大概是10.24,这里省略了小数点:

带入不同\lambda值计算参数

计算完结果后,再跟上述一样带入到验证集的代价函数中去计算验证集误差,其中误差最小对应的\lambda就是我们想要的正则化参数。当然,就算得到了结果,也还是要将在验证集得到的参数带入到测试集的代价函数进行最终验证。

同样的,我们画出训练集代价函数和验证集代价函数关\lambda 的图像:

随着\lambda增加两种代价函数的变化情况

可以看到,当\lambda很大时,此时函数处于欠拟合高偏差的问题中,训练集和验证集的代价函数误差都会很大且很接近;当\lambda很小时,函数处于过拟合、高方差的情况,训练集由于是用自己的数据拟合,拟合的好,误差很小,而验证集的误差则远远大于训练集。一般来说,验证集代价函数的误差最小时,该点的\lambda应该是刚好适合假设函数的正则化参数。

学习曲线(Learning curves)

在上述说法中我们通过对比两种代价函数的误差表现来判断出现什么问题,事实上,我们一般采用画出学习曲线的方式来判断算法的表现好坏,横坐标是训练样本个数,纵坐标是代价函数的误差。但与以往不同,我们对横坐标加以限制,用很少量的样本个数(10,20,30等等)来观察两种代价函数的表现。

两种代价函数误差关于样本个数m的图像

假设我们采用二次幂的多项式来拟合,可以观察到,当样本个数m很小(1-3)时,曲线会拟合得很好,样本个数到4的时候,能看出曲线已经开始有些偏离了,也就是说,随着样本个数的增加,训练集的代价函数的误差也会随之增大。对于验证集的代价函数来说,在样本个数很小的时候,其误差会很大,原因是其参数的基础只是几个样本,其对于新样本的效果自然很低;当样本个数逐渐增加,算法分析的特征越来也多,意味着其对于新样本的判断能力在逐渐增加,表现在图像上则是验证集代价函数的误差在逐渐减小。

高偏差时两种误差的表现

可以观察到,两种曲线跟刚刚相比也是类似的变化,当样本更加到一定程度时其误差基本保持不变,与其不同的是,由于这里是用直线来拟合,样本个数过大而参数过小,所以当样本个数增加到一定值时,两者的误差基本相等。

高方差时两种误差的表现

如果换成高次幂比如100次方,其曲线与上述相比,训练集的误差在样本数量增加到一定程度后还是基本不变,但验证集的误差则会一直下降,这是因为样本的个数的增加对验证集来说,其由于对数据更敏感相当于接触到了更多的变化来排除原本数据的一些不好的数据(俗称“噪声”),这说明增加样本数量对于高偏差的情况基本没有帮助,但在高方差时表现良好。

在之前,我们总结了一些可能可以改善算法的方法,在这里对这些方法的用途做一个概括。

对于高方差问题来说:

  1. 增加样本个数,使验证集代价函数感受到更多的变化,使其误差持续减小;

  2. 减少特征量,让函数专注在有用的特征上,加强拟合效果;

  3. 增大\lambda,能够增加特征使其拟合效果更好。

对于高偏差问题来说:

  1. 增加特征量或多项式特征,也就是增加函数的复杂程度,使其更贴合训练样本;

  2. 减小\lambda,能够减少不必要的特征和“噪声”,减弱过拟合效果。

而在使用神经网络来构建模型时,与之相对的,使用较少的隐藏层和隐藏单元,在架构中所用到的参数就不会很多,会出现欠拟合的现象,其计算量较少;假如用很多隐藏单元或者很多层隐藏层,则会出现过拟合现象,不过我们可以通过加入正则项来解决这个问题(一般为了避免我们会直接添加,而不是等到了出现过拟合再作正则化操作),所以一般越大型、越复杂的神经网络效果越好。

视频参考链接:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.player.switch&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8636.html

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

相关文章

豆包大模型团队开源RLHF框架,破解强化学习训练部署难题

1. 引言 1.1 强化学习 强化学习(Reinforcement Learning, RL)是与监督学习和无监督学习并列的一种机器学习方法,其用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题…

练习LabVIEW第四十三题

学习目标: 模拟红绿灯,红灯亮十秒,绿灯亮五秒,交替,并用波形图将波形显示 开始编写: 前面板 两个指示灯,一个红色,一个绿色,一个波形图; 程序框图 创建…

css:基础

前言 我们之前其实也可以写出一个看起来算是一个网页的网页,为什么我们还要学css? CSS(Cascading Style Sheets)也叫层叠样式表,是负责美化的,我们之前说html就是一个骨架,css就可以用来美化网…

解析 “Cookies Not Marked as HttpOnly” 漏洞

一、引言 在 Web 应用安全领域,Cookies 相关的漏洞一直是备受关注的问题。其中,“Cookies Not Marked as HttpOnly” 漏洞可能会对用户数据安全和网站的正常运行造成潜在威胁。本文将详细介绍这个漏洞,包括其原理、影响、检测方法以及修复措…

基于MATLAB DCT域图像水印技术

1数字水印技术的概念和特点 数字水印(Digital Watermark)技术是将与多媒体内容相关或不相关的一些标示信息直接嵌入多媒体内容当中,但不影响原内容的使用价值,并不容易被人的知觉系统觉察或注意到。通过这些隐藏在多媒体内容中的…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 文章目录 【语义分割|代码解析】CMTFNet-2: …

在暗处执着生长,终有一日馥郁传香

总有人说很孤独,一个人吃饭,一个人上班,一个人逛街; 总有人又说享受孤独,面对时间,迎接苦难,战胜痛苦; 可没人说这些的大前提是你要有信念支撑啊,如果干完了上面的所有&a…

揭秘集装箱箱号自动识别原理,箱号识别算法

集装箱箱号自动识别算法是一种高效且实用的软件工具。它利用相机、手机或其他摄像头捕获集装箱箱号图像,并通过深度学习的OCR(光学字符识别)识别技术对集装箱号码进行准确识别。要想进行集装箱箱号识别,需要以下几个基本步骤&…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言,主要用于网页开发。它使得网页具有动态交互性,能够响应用户的操作。随着前端开发的不断发展,JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

高新技术企业知识库搭建:在创新创业中的支撑作用

在快速迭代的科技时代,高新技术企业(以下简称“高企”)作为推动经济社会发展的核心力量,正面临着前所未有的创新挑战与机遇。知识库,作为信息时代的智慧宝库,不仅承载着企业内部的宝贵知识与经验&#xff0…

ReposVul: A Repository-Level High-Quality Vulnerability Dataset 论文阅读

本文发表于 ICSE2024 会议中。 引入 在过去的漏洞数据库中,主要存在以下几种问题: 无效补丁(Tangled Patches):针对某个漏洞的补丁无法正确修复该漏洞缺乏跨函数漏洞(Inter-procedural Vulnerabilities&…

【图解版】力扣第70题:爬楼梯

推理出状态表达式 f(5)表示到达第5层,所有可能的方法数。 到达第5层,有可能是从第4层走一步上来,也有可能是从第3层走两步上来。所以我们可以慢慢延伸,画出上面👆🏻的图。 从图中,我们可以看到…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术,对进程进行封装隔离,一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行,镜像是容器的只读模板,容器是模板的一个实例。镜像是分层结…

QT——自定义控件绘图

一.QPaintEvent绘图事件 QPaintEvent是QT中一个重要的类,专门用于绘图事件。当QT视图组件需要重绘制自己的一部分时,就会产生该事件,通常发生在以下几种情况。 窗口第一次显示时:当窗口或控件第一次出现在屏幕中,系统…

Java项目实战II基于Java+Spring Boot+MySQL的高校办公室行政事务管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在高等教育…

非计算机背景但是想从事医学AI研究,需要掌握的编程语言|个人观点·24-11-08

小罗碎碎念 目前,我们从事医学AI研究的,接触的最多的两种编程语言应该就是R和Python了。那么初学者很容易提出一个疑问,**我想从事医学AI相关的研究的话,应该学哪些编程语言呢?**在文章的开头,我可以先给出…

arkUI:Flex弹性布局的各个属性

arkUI:Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 (Flex弹性布局的方向)2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

高效Web测试:构建Pytest、Allure和Jenkins的自动化测试生态

Pytest介绍 pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活、容易上手、文档丰富;支持参数化,可以细粒度地控制被测用例;能够支持简单的单元测试和复杂的功能测试,还可以用来…

ros入门:topic话题通信(c++)

准备工作 创建工作空间 mkdir -p demo02_pub/src/ 生成依赖文件 cd demo02_pub/ catkin_make 进入src目录执行 catkin_create_pkg ros_pub_sub/ roscpp rospy std__msgs 发布者实现 消息发布代码编写 cd demo02_pub/src/ros_pub_sub/src 创建代码文件demo01_pub.cc …

重建大师7.0 | 质效全面提升,塑造更优质的实景三维重建

在大势智慧“AI智算、国产信创”2024秋季新品发布会上,重建大师7.0版以其卓越性能惊艳登场。这一新版本不仅引入了创新的倾斜高斯泼溅方法(OPGS),实现城市级场景的高效三维重建。 针对传统倾斜建模方法,重建大师7.0同…