机器学习—学习曲线

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

绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误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.xdnf.cn/news/18233.html

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

相关文章

在MATLAB中实现自适应滤波算法

自适应滤波算法是一种根据信号特性自动调整滤波参数的数字信号处理方法,其可以有效处理噪声干扰和信号畸变问题。在许多实时数据处理系统中,自适应滤波算法得到了广泛应用。在MATLAB中,可以使用多种方法实现自适应滤波算法。本文将介绍自适应…

【系统编程】实验7 消息队列

设计程序 使用消息队列实现两个进程之间的信息互通 snd.c #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/msg.h> #include <unistd.h>/*消息发送者 */// 消息结构体如下&#xff1a; …

ETH钱包地址如何获取 如何购买比特币

首先我们要先注册一个交易所 Gate.io&#xff08;推荐&#xff09;: 点我注册 1、注册很简单&#xff0c;通过手机号就可以进行注册了。 2、获取ETH钱包地址 注册好之后&#xff0c;如图所示&#xff0c;点击“统一账户” 3、通过搜索栏搜索ETH&#xff0c;如下图所示 4、点…

[Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress

目录 1. 什么是 Docker Compose 生活案例 2. 为什么要使用 Docker Compose Docker Compose 的安装 Docker Compose 的功能 使用步骤 核心功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; 模仿示例 文件基本结构及常见…

OpenCV基础(1)

1.图像读写与窗口显示 1.1.imread读取图像文件 Mat cv::imread(const string &filename,int flags IMREAD_COLOR); filename&#xff1a;要读取的图像文件名flags&#xff1a;读取模式&#xff0c;可以从枚举cv::ImreadModes中取值&#xff0c;默认取值是IMREAD_COLOR&am…

【优选算法篇】分治乾坤,万物归一:在重组中窥见无声的秩序

文章目录 分治专题&#xff08;二&#xff09;&#xff1a;归并排序的核心思想与进阶应用前言、第二章&#xff1a;归并排序的应用与延展2.1 归并排序&#xff08;medium&#xff09;解法&#xff08;归并排序&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 2.2 数组…

生产环境centos8 Red Hat8部署ansible and 一键部署mysql两主两从ansible脚本预告

一、各节点服务器创建lvm逻辑卷组 1.初始化磁盘为物理卷&#xff08;PV&#xff09; 命令&#xff1a;sudo pvcreate /dev/vdb 2.创建卷组&#xff08;VG&#xff09; 命令&#xff1a;sudo vgcreate db_vg /dev/vdb 3.创建逻辑卷&#xff08;LV&#xff09; 命令&#xff1a;s…

CNN神经网络

CNN 一 基本概述二 基础知识三 经典案例 今天跟大家聊聊人工智能中的神经网络模型相关内容。神经网络内容庞大,篇幅有限本文主要讲述其中的CNN神经网络模型。 一 基本概述 深度学习(Deep Learning)特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网…

【Ubuntu24.04】VirtualBox安装ubuntu-live-server24.04

目录 0 背景1 下载镜像2 安装虚拟机3 安装UbuntuServer24.044 配置基本环境5 总结0 背景 有了远程连接工具之后,似乎作为服务器的Ubuntu24.04桌面版有点备受冷落了,桌面版的Ubuntu24.04的优势是图形化桌面,是作为一个日常工作的系统来用的,就像Windows,如果要作为服务器来…

【策略模式】最佳实践——Spring IoC实现策略模式全流程深度解析

简介 策略模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以互相替换&#xff0c;并且使算法的变化不会影响使用算法的客户端。策略模式通过将具体的业务逻辑从上下文&#xff08;Context&#xff09;中剥离出…

企业项目级IDEA设置类注释、方法注释模板(仅增加@author和@date)

文章目录 前言一 设置类注释1.1 添加模板1.2 复制配置 二 设置方法注释2.1 添加模版2.2 设置模版2.3 设置参数变量2.4 配置对应快捷键2.5 配置对应作用域2.6 使用方式 说明 前言 公司代码规范中&#xff0c;需要在标准JavaDoc注释的基础上加上作者和日期。网上虽然有很多现成的…

单片机学习笔记 2. LED灯闪烁

目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理&#xff1a;需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软件延时 具体操作步骤和之前的笔记一致。此次主要利用无符号整型的范…

编辑器vim 命令的学习

1.编辑器Vim 1.vim是一个专注的编辑器 2.是一个支持多模式的编辑器 1.1见一见&#xff1a; vim 的本质也是一条命令 退出来&#xff1a;-> Shift:q 先创建一个文件 再打开这个文件 进入后先按 I 然后就可以输入了 输入完后&#xff0c;保存退出 按Esc --> 来到最后一…

调用门提权

在我写的2.保护模式&#xff0b;段探测这篇文章中&#xff0c;我们提到了S位对于段描述符的控制&#xff0c;之前我们已经介绍了代码段和数据段&#xff0c;现在我们来把目光转到系统段 在这么多中结构里面&#xff0c;我们今天要介绍的就是编号为12的&#xff0c;32位调用门 结…

langchain模型及I/O的封装

langchain安装&#xff1a;pip install langchain-openai https://python.langchain.com/v0.2/docs/integrations/platforms/openai/ 注意&#xff1a;安装后&#xff0c;我们需要在环境变量中配置OPENAI_API_KEY&#xff0c;langchain会自动获取 1.模型的封装 指令生成式模…

阿里斑马智行 2025届秋招 NLP算法工程师

文章目录 个人情况一面/技术面 1h二面/技术面 1h三面/HR面 20min 个人情况 先说一下个人情况&#xff1a; 学校情况&#xff1a;211本中9硕&#xff0c;本硕学校都一般&#xff0c;本硕都是计算机科班&#xff0c;但研究方向并不是NLP&#xff0c;而是图表示学习论文情况&…

谈一谈QThread::CurrentThread和this->thread

QThread::CurrentThread是指的当前函数调用者者所在的线程 this->thread是指的当前对象所在的线程&#xff08;对象创建出来的时候所在的线程&#xff09; Qt文档说明 CurrentThread返回一个指向管理当前执行线程的QThread的指针 thread返回对象所在的线程 这两个函数所…

深度学习实验十一 卷积神经网络(2)——基于LeNet实现手写体数字识别实验

目录 一、数据 二、模型构建 三、模型训练及评价 四、打印参数量和计算量 五、模型预测 附&#xff1a;完整可运行代码 实验大致步骤&#xff1a; 一、数据 下载网站&#xff1a;MNIST数据集 之前的官网不能下载数据集了&#xff0c;403了&#xff0c;所以找到一个类似…

Python语法便捷查询

一、Python基础语法&#xff1a; (1)注释&#xff1a; (2)标识符&#xff1a; 简介&#xff1a;标识符的格式限制和C语言一样 (3)字符串定义方法&#xff1a; (4)字符串拼接&#xff1a; (5)字符串的格式化&#xff08;占位拼接&#xff09;&#xff1a; 和C语言的printf类…

Ansys Maxwell - 3PH 感应电机 - 第 2 部分 - 机床工具包 ACT

本篇博文是“Ansys Maxwell&#xff1a;3PH 感应电机 - 力和热耦合”的延续。在本篇博文中&#xff0c;我将展示如何使用 Ansys Machine Toolkit ACT 开发扭矩与速度曲线&#xff08;一系列性能曲线&#xff0c;包括效率图&#xff09;&#xff0c;以评估在 Ansys Maxwell 中建…