机器学习—学习曲线

news2024/12/4 1:40:08

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

绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误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,所以在这种情况下,仅仅通过增加训练集的大小来降低交叉验证错误是可能的,为了让你的算法性能越来越好,这与高偏差情况不同,如果你唯一要做的是得到更多的训练数据,这实际上不会帮助您的学习算法的性能,总而言之如果学习算法存在高方差,那么获得更多训练的数据确实可能有所帮助。在这个例子中,只需获取更多训练数据,允许算法从这个相对较高的交叉验证错误更接近人类水平的表现。如果你增加更多的训练例子,并继续拟合四阶多项式,就会得到一个更好的四阶多项式拟合这个数据。

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

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

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

相关文章

数据库基础(MySQL)

1. 数据库基础 1.1 什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点: 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质: 磁盘内存 为…

2024年11月HarmonyOS应用开发者基础认证全新题库

注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同 更新时间:2024年11月1日 这是基础认证题库,不是高级认证题库注意看清楚标…

静态时序分析--时序约束

目录 1.时钟约束1.1创建时钟1.2.生成时钟1.3虚拟时钟1.4 最小时钟脉宽 2.I/O延时约束2.1设置输入延时2.2设置输出延时 3.I/O环境建模约束3.1输入驱动建模3.2输出负载建模 4.时序例外4.1多周期路径设置(multicycle path)4.2伪路径设置(false_p…

51单片机基础05 实时时钟-思路及代码参考2、3

目录 一、思路二 1、原理图 2、代码 二、思路三 1、原理图 2、代码 一、思路二 所有设定功能相关的操作均在矩阵键盘进行实现&#xff0c;并在定时器中扫描、计数等 1、原理图 2、代码 #include <AT89X52.h> //调用51单片机的头文件 //------------------…

【C++篇】深入剖析C++ Vector底层源码及实现机制

文章目录 须知 &#x1f4ac; 欢迎讨论&#xff1a;如果你在学习过程中有任何问题或想法&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习。你的支持是我继续创作的动力&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;觉得这篇文章对你有帮助吗&#xff1…

【代码pycharm】动手学深度学习v2-04 数据操作 + 数据预处理

数据操作 数据预处理 1.数据操作运行结果 2.数据预处理实现运行结果 第四课链接 1.数据操作 import torch # 张量的创建 x1 torch.arange(12) print(1.有12个元素的张量&#xff1a;\n,x1) print(2.张量的形状&#xff1a;\n,x1.shape) print(3.张量中元素的总数&#xff1…

鸿蒙HarmonyOS开发:一次开发,多端部署(工程级)三层工程架构

文章目录 一、工程创建1、先创建出最基本的项目工程。2、新建common、features、 products 目录 二、工程结构三、依赖关系1、oh-package.json52、配置ohpm包依赖 四、引用ohpm包中的代码1、定义共享资源2、在common模块index文件中导出3、在phone模块oh-package.json5文件中引…

NLP论文速读(EMNLP 2023)|工具增强的思维链推理

论文速读|ChatCoT: Tool-Augmented Chain-of-Thought Reasoning on Chat-based Large Language Models 论文信息&#xff1a; 简介&#xff1a; 本文背景是关于大型语言模型&#xff08;LLMs&#xff09;在复杂推理任务中的表现。尽管LLMs在多种评估基准测试中取得了优异的成绩…

uniapp vue3小程序报错Cannot read property ‘__route__‘ of undefined

在App.vue里有监听应用的生命周期 <script>// 只能在App.vue里监听应用的生命周期export default {onError: function(err) {console.log(AppOnError:, err); // 当 uni-app 报错时触发}} </script>在控制台打印里无意发现 Cannot read property ‘__route__‘ of …

第17章 子查询

一、介绍子查询 1.1 介绍 子查询指一个查询语句嵌套在另一个查询语句内部的查询&#xff0c;这个特性从MySQL 4.1开始引入。 SQL 中子查询的使用大大增强了 SELECT 查询的能力&#xff0c;因为很多时候查询需要从结果集中获取数据&#xff0c;或者需要从同一个表中先计算得出一…

蓝队技能-应急响应篇日志自动采集日志自动查看日志自动化分析Web安全内网攻防工具项目

知识点&#xff1a; 1、应急响应-系统日志收集-项目工具 2、应急响应-系统日志查看-项目工具 3、应急响应-日志自动分析-项目工具 演示案例-蓝队技能-工具项目-自动日志采集&自动日志查看&自动日志分析 系统日志自动采集-观星应急工具(Windows系统日志) SglabIr_Co…

【西瓜书】线性判别分析-LDA

线性判别分析&#xff08;Linear Discriminant Analysis&#xff0c;简称LDA&#xff09;是一种经典的线性学习方法。在二分类问题上&#xff0c;因为最早由Fisher提出&#xff0c;也称“Fisher判别分析”。 严格说来&#xff0c;LDA 与 Fisher判别分析稍有不同&#xff0c;LDA…

Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统

一、Photino.NET简介&#xff1a; 最近发现了一个不错的框架 Photino.Net 一份代码运行&#xff0c;三个平台 windows max linux &#xff0c;其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…

湘潭大学软件工程算法设计与分析考试复习笔记(四)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;一&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;二&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;三&#xff09; 前言 现在是晚上十一点&#xff0c;我平时是十…

Python毕业设计选题:基于python的豆瓣电影数据分析可视化系统-flask+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 个人中心 管理员登录界面 管理员功能界面 电影管理 用户管理 系统管理 摘要…

小程序租赁系统开发为企业提供高效便捷的租赁服务解决方案

内容概要 在这个数字化飞速发展的时代&#xff0c;小程序租赁系统应运而生&#xff0c;成为企业管理租赁业务的一种新选择。随着移动互联网的普及&#xff0c;越来越多的企业开始关注如何利用小程序来提高租赁服务的效率和便捷性。小程序不仅可以为用户提供一个快速、易用的平…

《深入理解 Spring MVC 工作流程》

一、Spring MVC 架构概述 Spring MVC 是一个基于 Java 的轻量级 Web 应用框架&#xff0c;它遵循了经典的 MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;将请求、响应和业务逻辑分离&#xff0c;从而构建出灵活可维护的 Web 应用程序。 在 Spring MV…

RHCE的学习(21)

第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符。 通过这些运算符&#xff0c;Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句&#xff0c;例如判断语句和循环语句中…

SpringBoot中的restTemplate请求存在乱码问题的解决

SpringBoot中的restTemplate请求存在乱码问题的解决 搜索网上各种解法&#xff0c;最后在不断的一点点对比中&#xff0c;排查到了问题&#xff0c;是restTemplate不支持gzip&#xff0c;对返回的数据不能对gzip自动解压&#xff0c;因此需要去掉header中的accept-encoding 网…

【蓝桥杯C/C++】翻转游戏:多种实现与解法解析

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: 蓝桥杯C/C 文章目录 &#x1f4af;题目&#x1f4af;问题分析解法一&#xff1a;减法法解法二&#xff1a;位运算解法解法三&#xff1a;逻辑非解法解法四&#xff1a;条件运算符解法解法五&#xff1a;数组映射法不同解法的比较…