当前位置: 首页 > news >正文

机器学习—学习曲线

学习曲线是帮助理解学习算法如何工作的一种方法,作为它所拥有的经验的函数。

绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误Jcv,以及Jtrain训练错误,所以在这个曲线中,横轴将是Mtrain,即训练集大小或算法可以从中学习的示例数,在垂直轴上,画出误差,所以让我们从绘制交叉验证错误开始,绿线代表Jcv(w,b),当Jtrain训练集规模变大,所以交叉验证错误现在下降了,绘制训练错误的Jtrain(w,b),随着训练集的规模越来越大,原来训练错误实际上会是这样的(蓝线),随着训练集的规模越来越大,训练集误差实际上增大了,为什么会出现这种情况?

将从一个例子开始,当你只有一个训练例子,如果你拟合一个二次模型,你可以很容易的知道直线或曲线,你的训练误差将为0,如果你有两个这样的训练例子,你可以再次拟合一条直线,实现零训练误差,事实上,如果你有三个训练例子,二次函数仍可以很好的拟合这一点,几乎没有训练错误,但是如果你的训练集再大一点,假设你有四个训练例子,然后要完美地适应所有四个例子就变得有点难了,你可能会得到一条曲线,看起来很适合它,所以当你把训练集的大小增加到四个,训练误差实际上上升了一点,我们有五个训练例子怎么样你可以更好的适应它?但是要完全适应它们就更难了,当你有一个更大的训练集,只是越来越难适应每一个你的训练例子,所以总结一下,当你有非常少的训练例子,像一两个甚至三个,相对容易得到零或非常小的训练误差,但是当你有一个更大的训练集,对于二次函数来说更难完美地拟合所有的训练示例,这就是为什么随着训练集变得越来越大,训练误差增加是因为很难拟合所有的训练示例,注意这些曲线的另一个特点,交叉验证误差通常会高于训练误差,因为你将参数拟合到训练集,或者当m小的时候,也许在训练集上比在交叉验证集上要好得多。

现在让我们看看学习曲线是什么样的?

对于高偏差算法和高方差算法,让我们从高偏差或不合身的情况开始,回想一下,高偏差的一个例子是如果你把一个线性函数拟合到一条曲线上,,如果你要绘制训练错误,然后训练误差会像你预期的那样上升,事实上,这条训练误差曲线可能会开始变平,或者称之为高原,意思是过了一段时间就变平了,这是因为当你得到越来越多的训练例子,当你拟合简单的线性函数时,你的模型实际上变化不大,它符合一条直线,即使你得到越来越多的例子,没有太多要改变的了,这就是为什么平均训练误差在那时间后就会变平,同样,交叉验证出错误也会下降,一段时间也会变平,这就是为什么Jcv又比Jtrain高,但Jcv往往看起来像那样,因为超过了某一点,即使你得到越来越多的例子,拟合的直线不会有太大的变化,这只是一个太简单的模型,不适用于这么多数据,所以这两条曲线,Jcv和Jtrain趋于平坦,如果你有一个基准性能水平的衡量标准,例如人的水平表现,然后它将倾向于一个低于Jtrain的值,还有Jcv,所以人类水平的表现可能是这样的。在性能的基线水平和Jtrain之间有很大的差距,我们发现这个算法有很高的偏差。

如果你能有一个更大的训练集,如果把m值增加到比这张图的右边更远的地方,会是什么样子?

想象如果把这两条曲线都向右延伸,它们都变平了,它们两个可能会继续像那样扁平,无论向右边延伸多远,这条曲线永远不会相交,找到一种方法来降低人类的表演水平,或者一直像这样扁平下去,不管训练集有多大,如果一个算法有很高的偏差,获取更多的训练数据本身并没有多大的帮助,我们习惯于认为有更多的数据是好的,但是如果算法有很高的偏差,那么唯一做的就是向它扔更多的训练数据它本身不会让你降低那么多的错误率,无论在这个图中添加多少示例,直线拟合不会变的更好,这就是为什么再投入大量精力收集更多训练数据之前值得检查学习算法是否有很高的偏差。

现在让我们看看学习曲线是什么样子的?

对于一种高方差的学习算法,如果你拟合一个四阶多项式,对于小的lambda甚至lambda=0,得到一个曲线,如右上图所示,即使它很符合训练数据,它不能概括,在这种高方差的情况下,随着训练集模型的增加Jtrain将上升,Jcv会更高,所以你的交叉验证错误比你的训练错误高得多事实上,这里有一个巨大的差距,高方差在训练集上做得更好,比在交叉集上做得要多,如果你要绘制性能的基线水平,例如人的表现水平,Jtrain有时甚至比人类的性能水平还要低,也可能人类水平的表现比这低一点,但是当你过度训练的时候,也许能很好的适应训练集,有一个不切实际的低误差,比如这个例子中的零误差。人类实际上能够预测房价,或者正在处理应用的程序,高方差的信号是Jcv是否远高于Jtrain,当你有很高的方差时,那么增加训练集的大小可能会有很大的帮助,特别是如果我们能把这些曲线外推到合适的增量Mtrain上,训练误差还会继续往上走,但是交叉验证错误有希望下降并接近Jtrain,所以在这种情况下,仅仅通过增加训练集的大小来降低交叉验证错误是可能的,为了让你的算法性能越来越好,这与高偏差情况不同,如果你唯一要做的是得到更多的训练数据,这实际上不会帮助您的学习算法的性能,总而言之如果学习算法存在高方差,那么获得更多训练的数据确实可能有所帮助。在这个例子中,只需获取更多训练数据,允许算法从这个相对较高的交叉验证错误更接近人类水平的表现。如果你增加更多的训练例子,并继续拟合四阶多项式,就会得到一个更好的四阶多项式拟合这个数据。

因此,如果你正在构建一个机器学习应用程序,你可以画出学习曲线,可以将训练集的不同子集,即使有一千个训练例子,可以用一百个训练例子来训练一个模型,看看训练错误和交叉验证错误,然后再两百个例子上训练一个模型,重复并绘制出学习曲线是什么样子,如果你的学习曲线看起来更像是高偏差或高方差,使用训练集的不同大小的子集。

相关文章:

机器学习—学习曲线

学习曲线是帮助理解学习算法如何工作的一种方法,作为它所拥有的经验的函数。 绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误Jcv,以及Jtrain训练错误,所以在这个曲线中,横轴将是Mtrai…...

在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录 1、在 macOS 和 Linux 中,波浪号 ~macOS示例 Linux示例 区别总结其他注意事项示例macOSLinux 结论 2、root 用户的主目录通常是 /root解释示例切换用户使用 su 命令使用 sudo 命令 验证当前用户总结 1、在 macOS 和 Linux 中,波浪号 ~ 在 macO…...

【Java】实战:多数元素

一、题目描述 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出&#x…...

一文解决Latex中的eps报错eps-converted-to.pdf not found: using draft setting.

在使用Vscode配的PDFLatex编译IEEE TII的Latex模板时,出现eps文件不能转换为pdf错误,看了几十篇方法都没用,自己研究了半天终于可以正常运行了。主要原因还是Settings.JSON中的PDFLatex模块缺少:"--shell-escape", 命令…...

计算光纤色散带来的相位移动 matlab

需要注意的地方 1.以下内容纯属个人理解,很有可能不准确,请大家仅做参考 2.光速不要直接用3e8 m/s,需要用精确的2.9979.... 3.光的频率无论在真空还是光纤(介质)都是不变的,是固有属性,但是波长lambdac/f在不同的介…...

国内docker pull拉取镜像的解决方法

访问网站,查找该网站上可用的镜像源,然后替换掉下面代码中的hub-mirror.c.163.com: docker pull hub-mirror.c.163.com/library/nginx:latest 另外,进入到镜像之后,可以使用下面的命令查看操作系统版本。 lsb_releas…...

“Kafka面试攻略:核心问题与高效回答”

1,生产者发送消息的原理 发送消息的过程中,涉及到两个线程,main线程和sender线程,main线程会创建一个双端队列,main线程向双端队列发送消息,sender线程从双端队列里拉取消息,发送给Kafka Broke…...

C++ 多线程std::thread以及条件变量和互斥量的使用

前言 本文章主要介绍C11语法中std::thread的使用,以及条件变量和互斥量的使用。 std::thread介绍 构造函数 std::thread 有4个构造函数 // 默认构造函,构造一个线程对象,在这个线程中不执行任何处理动作 thread() noexcept;// 移动构造函…...

新华三H3CNE网络工程师认证—子接口技术

子接口(subinterface)是通过协议和技术将一个物理接口(interface)虚拟出来的多个逻辑接口。在VLAN虚拟局域网中,通常是一个物理接口对应一个 VLAN。在多个 VLAN 的网络上,无法使用单台路由器的一个物理接口…...

【MySQL】InnoDB内存结构

目录 InnoDB内存结构 主要组成 缓冲池 缓冲池的作用 缓冲池的结构 缓冲池中页与页之间连接方式分析 缓冲池如何组织数据 控制块初始化 页面初始化 缓冲池中页的管理 缓冲区淘汰策略 查看缓冲池信息 总结 变更缓冲区-Chang Buffer 变更缓冲区的作用 主要配置选项…...

基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)

#1024程序员节|征文# 博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…...

蓝桥杯每日真题 - 第19天

题目:(费用报销) 题目描述(13届 C&C B组F题) 解题思路: 1. 问题抽象 本问题可以看作一个限制条件较多的优化问题,核心是如何在金额和时间约束下选择最优方案: 动态规划是理想…...

CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117

CentOS7.9.2009的yum更换vault地窖保险库过期源,epel的archive归档源 笔记241117 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak清空 /etc/yum.repos.d 文件夹 sudo rm -rf /etc…...

Spark SQL大数据分析快速上手-完全分布模式安装

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…...

Java面试题2024-Java基础

Java基础 1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程 2、…...

局域网协同办公软件,2024安全的协同办公软件推荐

在2024年,随着数字化转型的深入和远程工作需求的增加,协同办公软件已成为企业提升工作效率、优化沟通流程的重要工具。 以下是一些值得推荐的安全的协同办公软件: 钉钉 功能全面:钉钉是一款综合性极强的企业级协同软件&#xff…...

osg、osgearth简介及学习环境准备

一、osg简介(三维场景图渲染与调度引擎) OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns 为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了&…...

nodejs基于微信小程序的云校园的设计与实现

摘 要 相比于传统的校园管理方式,智能化的管理方式可以大幅提高校园的管理效率,实现了云校园管理的标准化、制度化、程序化的管理,有效地防止了云校园信息的不规范管理,提高了信息的处理速度和精确度,能够及时、准确地…...

uni-app快速入门(十)--常用内置组件(下)

本文介绍uni-app的textarea多行文本框组件、web-view组件、image图片组件、switch开关组件、audio音频组件、video视频组件。 一、textarea多行文本框组件 textarea组件在HTML 中相信大家非常熟悉,组件的官方介绍见: textarea | uni-app官网uni-app,un…...

golang基础

在 Go 中字符串是不可变的,例如下面的代码编译时会报错: cannot assign to s[0] 但如果真的想要修改怎么办呢?下面的代码可以实现: var s string "hello" s [ 0 ] c s : "hello" c : [] b…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...