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

【深度学习】模型评估

上一章——多分类问题和多标签分类问题

文章目录

  • 算法诊断
  • 模型评估
  • 交叉验证测试


算法诊断

在这里插入图片描述
如果你为问题拟合了一个假设函数,我们应当如何判断假设函数是否适当拟合了?我们可以通过观察代价函数的图像,当代价函数达到最低点的时候,此时的拟合状态是最好的,因此我们才需要对其进行梯度下降。

上图的代价函数J是经过了正则化的,假设当前代价函数J的拟合误差较大,如何来减小误差?在过拟合与正则化这一章中,列举了几种方法,在上图中也写出了:

  • 增加训练样本
  • 尝试减少特征集
  • 增加一些额外的特征
  • 添加多项式特征
  • 试着改变正则化系数λ

有的时候我们的机器学习算法并不能达到想要的效果,那么也许是哪里出问题了,解决问题并不难,关键在于找到问题出在哪里,因此我们需要对神经网络进行诊断。
诊断是一种测试,我们可以运行它来深入算法,了解算法中那些是有效的,那些是无效的,从而提升算法的性能。因此学习算法诊断是必要的,不过在此之前,我们看看应当如何评估我们的算法。


模型评估

在这里插入图片描述
如图是一个四阶多项式的拟合函数,通过观察图像我们知道这个函数的拟合效果很好,但是好到过头了,我们也说过这种过度拟合的状态称为过拟合。如果增加新的数据,这个拟合函数显然是不具有泛化性的,我们认为这样的过拟合的函数不能推广到新的数据集中的数据。并且我们给出了四个特征,而上图中用于函数拟合的只使用了size这一特征,显然只用一个特征拟合也是不适当的。然而哪怕我们想要使用四个特征绘制函数,身为三微生物的我们也无法画出四维图像。

因此上述模型存在两个问题:

  • 如何保证拟合其他数据?
  • 对于三个以上的特征,我们无法通过图像判断性能,能否更系统地判断模型的性能?

在这里插入图片描述我们的方法是:将数据集划分为两个子集,其中一个称为训练集(training set),我们取70%,另一个称为测试集,取30%。
我们用(x,y)(x,y)(x,y)来表示测试样例,其中(xm,ym)(x^m,y^m)(xm,ym)代表训练集第m项测试样例,(xtestm,ytestm)(x^m_{test},y^m_{test})(xtestm,ytestm)来表示测试集第m项测试样例。

在这里插入图片描述

接下来,我们可以通过式子①最小化代价函数来找到拟合参数w,bw,bw,b,因为假设函数是包括了多个特征的多项式,因此我们会采取正则化来减小拟合误差。

式子②称为测试误差,通过式子①我们找到了拟合参数w,bw,bw,b,现在将其带入到假设函数,并用式子②算出测试集的测试误差,我们并不是在拟合函数,而是计算测试误差的大小,因此该式子是不用正则化的,最后计算的结果即为测试误差。

式子③与式子②同理。注意,式子①J(w,b)J(w,b)J(w,b)是代价函数,而式子②③中的Jtest(w,b)J_{test}(w,b)Jtest(w,b)Jtrain(w,b)J_{train}(w,b)Jtrain(w,b),是计算误差的函数,从本质上来讲误差函数(损失函数)和代价函数是一个东西,但是它们的功能并不相同,理解概念并注意区分。


现在让我们看看拟合图像,如果数据点如上图所示(红点代表训练集数据,绿点代表测试集数据),我们会发现一个问题:

Jtrain(w,b)J_{train}(w,b)Jtrain(w,b)较低,代表了训练误差低,这是必然的,因为我们是基于训练集的数据来最小化代价函数进行参数选择的,因此拟合出来的函数的训练误差一定是较小的。(与训练集的误差在于正则化)

然而如果测试集的数据点如图所示,就会发现Jtrain(w,b)J_{train}(w,b)Jtrain(w,b)较高,这代表着测试误差较大,这意味着对于测试集,这个拟合函数的拟合状态并不是很好,因此我们可以认为这个函数并不具有泛化性,这个模型是有问题的。


在这里插入图片描述
那么分类问题也是同样的道理,把我们使用分类问题的代价函数(损失函数)来进行计算,

不过在分类问题中,我们对于误差的定义有点不同
在这里插入图片描述
在二分问题里,通常我们将0.5作为阈值,当>阈值分类为1,<阈值分类为0,我们将代价函数的预测值称为y^\hat yy^,分类问题中的误差,指的是对于同一个输入样例,有多少个预测值y^\hat yy^与实际值yyy不同,这个误差指的是这些被错误分类的y^\hat yy^的数量比例。

通过训练集和测试集,你可以系统地对模型误差进行评估,从而创建更好的模型。


交叉验证测试

在这里插入图片描述
那么假如,我们按照刚才的模型评估的步骤来建立一个拟合函数,我们首先通过训练集的数据的正则化最小化代价函数,找到了合适的w和bw和bwb,我们将当前的拟合出来的多次项的项数记为d=nd=nd=n,把对应项数的参数记为w<n>,b<n>w^{<n>},b^{<n>}w<n>,b<n>,最后计算的测试误差记为Jtest(w<n>,b<n>)J_{test}(w^{<n>},b^{<n>})Jtest(w<n>,b<n>),现在我们要做的就是找到最小的测试误差JtestJ_{test}Jtest所对应的w,b和dw,b和dw,bd,现在假设找到了最小测试误差是在当d=5d=5d=5时,我们是否可以认为现在选择的模型是最适宜的?

实际上,答案是否定的,因为我们的估计流程依然存在着问题,导致了JtestJ_{test}Jtest很可能乐观估计了泛化误差,也就是说虽然我们计算出来的测试误差与实际的泛化误差相比可能偏小了,实际误差将会比计算结果要大。原因在于多项式的次数d,因为d是在测试集上确定的,用测试集确定的d来检验测试集的误差,那必然能得到一个较小的误差,就像我给我自己监考,这显然是不公平的。

在这里插入图片描述

我们解决问题的方法是:将数据集分为三个子集,训练集60%,交叉验证集20%,测试集20%。其中新加入的交叉验证集(cross validation set)的作用是用于检查不同验证集合的准确性,你也可以叫他验证集(validation set)或者开发集(development set 或dev set)。

在这里插入图片描述w,bw,bw,b还是用最小化代价函数计算,现在我们要计算的误差总共有三个,它们的公式是一样的,交叉验证集的误差被称为验证误差或者开发误差。
在这里插入图片描述

现在再让我们回到之前的步骤,我们首先通过训练集的数据的正则化最小化代价函数计算不同次数的w,bw,bwb,我们带入验证误差来计算对应次数的JcvJ_{cv}Jcv,假设现在我们找到了d=4d=4d=4时的验证误差最小,那么我们就可以用d,w<4>,b<4>d,w^{<4>},b^{<4>}d,w<4>,b<4>去计算测试误差JtestJ_{test}Jtest,因为w,bw,bw,b是训练集确定的,ddd是交叉验证集确定的,因此没有一个参数与测试集有关,这样就保证我们的误差计算结果相对公平。

在这里插入图片描述在整个神经网络模型的选择上我们也是这样测试的,例如这三个模型的隐藏层,我们计算得到二号模型的参数对应的验证误差较小,那么我们就可以使用第二个神经网络训练的参数,如果想要得到泛化误差的估计值,我们就可以用这个参数带入计算测试误差JtestJ_{test}Jtest来判断神经网络的性能,使用交叉验证集来选择模型也是目前最佳的决定方法。不过想要作出决定只需要训练集和交叉验证集来确定参数即可,在确定参数之后我们可以在测试集进行评估。这种方法可以确保测试集的公平估计,而非对泛化误差的乐观估计。一个重要原则就是:在未决定模型之前,千万不要使用测试集的数据,来保证估计的公平性。

相关文章:

【深度学习】模型评估

上一章——多分类问题和多标签分类问题 文章目录算法诊断模型评估交叉验证测试算法诊断 如果你为问题拟合了一个假设函数&#xff0c;我们应当如何判断假设函数是否适当拟合了&#xff1f;我们可以通过观察代价函数的图像&#xff0c;当代价函数达到最低点的时候&#xff0c;此…...

AcWing《蓝桥杯集训·每日一题》—— 3777 砖块

AcWing《蓝桥杯集训每日一题》—— 3777. 砖块 文章目录AcWing《蓝桥杯集训每日一题》—— 3777. 砖块一、题目二、解题思路三、解题思路本次博客我是通过Notion软件写的&#xff0c;转md文件可能不太美观&#xff0c;大家可以去我的博客中查看&#xff1a;北天的 BLOG&#xf…...

CleanMyMac X软件下载及详细功能介绍

mac平台的知名系统清理应用CleanMyMac在经历了一段时间的测试后&#xff0c;全新设计的X正式上线。与CleanMyMac3相比&#xff0c;新版本的UI设计焕然一新&#xff0c;采用了完全不同的风格。使用Windows电脑时&#xff0c;很多人会下载各类优化软件&#xff0c;而在Mac平台中&…...

pytorch零基础实现语义分割项目(一)——数据概况及预处理

语义分割之数据加载项目列表前言数据集概况数据组织形式数据集划分数据预处理均值与方差结尾项目列表 语义分割项目&#xff08;一&#xff09;——数据概况及预处理 语义分割项目&#xff08;二&#xff09;——标签转换与数据加载 语义分割项目&#xff08;三&#xff09…...

ARM+LINUX嵌入式学习路线

嵌入式学习是一个循序渐进的过程&#xff0c;如果是希望向嵌入式软件方向发展的话&#xff0c;目前最常见的是嵌入式Linux方向&#xff0c;关注这个方向&#xff0c;大概分3个阶段&#xff1a; 1、嵌入式linux上层应用&#xff0c;包括QT的GUI开发 2、嵌入式linux系统开发 3、…...

echart在微信小程序的使用

echart在微信小程序的使用 echarts不显示在微信小程序 <!-- 微信小程序的echart的使用 --> <view class"container"><ec-canvas id"mychart-dom-bar" canvas-id"mychart-bar" ec"{{ ec }}"></ec-canvas> &l…...

51单片机最强模块化封装(5)

文章目录 前言一、创建timer文件,添加timer文件路径二、timer文件编写三、模块化测试总结前言 今天这篇文章将为大家封装定时器模块,定时器是工程项目中必不可少的,希望大家能够将定时器理解清楚并且运用自如。 一、创建timer文件,添加timer文件路径 这里的操作就不过多…...

链表学习之判断链表是否回文

链表解题技巧 额外的数据结构&#xff08;哈希表&#xff09;&#xff1b;快慢指针&#xff1b;虚拟头节点&#xff1b; 判断链表是否回文 要求&#xff1a;时间辅助度O(N)&#xff0c;空间复杂度O(1) 方法1&#xff1a;栈&#xff08;不考虑空间复杂度&#xff09; 遍历一…...

【Linux06-基础IO】4.5万字的基础IO讲解

前言 本期分享基础IO的知识&#xff0c;主要有&#xff1a; 复习C语言文件操作文件相关的系统调用文件描述符fd理解Linux下一切皆文件缓冲区文件系统软硬链接动静态库的理解和制作动静态编译 博主水平有限&#xff0c;不足之处望请斧正&#xff01; C语言文件操作 #再谈文件…...

c++协程库理解—ucontext组件实践

文章目录1.干货写在前面2.ucontext初接触3.ucontext组件到底是什么4.小试牛刀-使用ucontext组件实现线程切换5.使用ucontext实现自己的线程库6.最后一步-使用我们自己的协程库1.干货写在前面 协程是一种用户态的轻量级线程 首先我们可以看看有哪些语言已经具备协程语义&#x…...

英语基础-状语

1. 课前引语 1. 形容词使用场景 (1). 放在系动词后面作表语 The boy is handsome. (2). 放在名词前面做定语 I like this beautiful girl. (3). 放在宾语后面做补语 You make your father happy. 总结&#xff1a;形容词无论做什么&#xff0c;都离不开名词&#xff0c…...

目标检测笔记(八):自适应缩放技术Letterbox完整代码和结果展示

文章目录自适应缩放技术Letterbox介绍自适应缩放技术Letterbox流程自适应缩放Letterbox代码运行结果自适应缩放技术Letterbox介绍 由于数据集中存在多种不同和长宽比的样本图&#xff0c;传统的图片缩放方法按照固定尺寸来进行缩放会造成图片扭曲变形的问题。自适应缩放技术通…...

2023年全国最新高校辅导员精选真题及答案1

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 一、选择题 11.李某与方某签订房屋租赁合同期间&#xff0c;李某欲购买租赁房屋&#xff…...

【Python】Python读写Excel表格

简要版&#xff0c;更多功能参考资料1。1 Excel文件保存格式基础概念此处不提&#xff0c;详见资料1。Excel的文件保存格式有两种&#xff1a; xls 和 xlsx。如果你看不到文件后缀&#xff0c;按下图设置可见。xls是Office 2003及之前版本的表格的默认保存格式。xlsx 是 Excel …...

Python每日一练(20230218)

目录​​​​​​​ 1. 旋转图像 2. 解码方法 3. 二叉树最大路径和 1. 旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像…...

基于SSM框架的狼途汽车门店管理系统的设计与实现

基于SSM框架的狼途汽车门店管理系统的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、…...

视频监控流程图3

<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/> <link rel"stylesheet" type"text/css" href"visio.css"/> <title> 视频监控流程图 </title> <…...

Linux ARM平台开发系列讲解(CAN) 2.14.3 CANFD协议介绍

1. 概述 前面章节介绍了CAN2.0协议,CAN现在主要是用在汽车领域,随着CAN的发展, 又衍生除了CANFD协议,该协议是在CAN的基础之上进行了升级,CAN2.0的最高速率是1Mbps,有限的速率导致CAN总线上负载率变高,所以CANFD就出现了,CANFD目前最高支持10Mbps。除此之外,CANFD还拥…...

参考 | 给C盘 “搬家“

参考 | 给C盘 “搬家” 将在C盘准备 “搬家” 的 文件/文件夹 完整路径 copy 下来 e.g. 路径一 “C:\Users\你的用户名\AppData\Roaming\kingsoft” 将这个 文件/文件夹 CTRLX 剪切下来 注意: 剪切后, 不需要自己重新新建, 直接执行第三步 将这个 文件/文件夹 CTRLV 粘贴到你要…...

剑指 Offer 53 - II. 0~n-1中缺失的数字

原题链接 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 一个长度为n-1的递增排序数组中的所有数字都是唯一的&#xff0c;并且每个数字都在范围0&#xff5e;n-1之内。在范围0&#xff5e;n-1内的n个数字中有且只有一个数字不在该数组中&#xff0c;请找出这个数字…...

分布式id

一、分布式系统 1.1 分布式系统的定义和应用场景 分布式系统是由多个独立的计算机节点协同工作&#xff0c;以共同完成一个任务的系统。这些节点通过网络进行通信和协调&#xff0c;共享计算和存储资源&#xff0c;从而实现对更大规模问题的处理和更高系统可用性的要求。 分…...

创意编程py模拟题

前言&#xff1a;好久没写博客了&#xff0c;来水好好写一篇 注&#xff1a;本篇文章为py&#xff0c;不是c 1、敲七 版本1 题目&#xff1a; 题目描述 输出7和7的倍数&#xff0c;还有包含7的数字例如&#xff08;17&#xff0c;27&#xff0c;37…70&#xff0c;71&#…...

uniapp中条件编译

官方&#xff1a;https://uniapp.dcloud.net.cn/tutorial/platform.html#%E8%B7%A8%E7%AB%AF%E5%85%BC%E5%AE%B9 #ifndef H5 代码段… #endif 表示除了H5其他都可以编译 #ifdef H5 代码段… #endef 表示只能编译H5&#xff0c;其他的都不能编译 其他编译平台请查看官方文档。 …...

封装 YoloV5 detect.py 成 Python 库以供 python 程序使用

本项目地址 Github 本项目地址 Github Introduction YoloV5 作为 YoloV4 之后的改进型&#xff0c;在算法上做出了优化&#xff0c;检测的性能得到了一定的提升。其特点之一就是权重文件非常的小&#xff0c;可以在一些配置更低的移动设备上运行&#xff0c;且提高速度的同时…...

PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离

标签 PostgreSQL , PostGIS , 球坐标 , 平面坐标 , 球面距离 , 平面距离 背景 PostGIS中有两种常用的空间类型geometry和geography&#xff0c;这两种数据类型有什么差异&#xff0c;应该如何选择&#xff1f; 对于GIS来说&#xff0c;首先是坐标系&#xff0c;有两种&#…...

K3S 系列文章-5G IoT 网关设备 POD 访问报错 DNS ‘i/o timeout‘分析与解决

开篇 《K3s 系列文章》《Rancher 系列文章》 问题概述 20220606 5G IoT 网关设备同时安装 K3S Server, 但是 POD 却无法访问互联网地址&#xff0c;查看 CoreDNS 日志提示如下&#xff1a; ... [ERROR] plugin/errors: 2 update.traefik.io. A: read udp 10.42.0.3:38545-&…...

社会工程学介绍

目录前言手段和术语假托在线聊天/电话钓鱼下饵&#xff08;Baiting&#xff09;等价交换同情心尾随&#xff08;Tailgating or Piggybacking&#xff09;社交工程学的演进钓鱼式攻击电脑蠕虫垃圾邮件特别人物总结前言 在信息安全方面&#xff0c;社会工程学是指对人进行心理操…...

干货 | 有哪些安慰剂按钮的设计?

仔细观察我们的生活&#xff0c;你会发现处处都是安慰剂按钮&#xff0c;ATM的点钞声、开启空调的呼呼声&#xff0c;这些都对用户心里产生了有意的引导作用&#xff0c;当你打开了空调按钮&#xff0c;先播放声音会让你感觉你按下的按钮起到了作用。 我们的大脑不喜欢杂乱无章…...

LeetCode 每日一题 2023/2/13-2023/2/19

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录2/13 1234. 替换子串得到平衡字符串2/14 1124. 表现良好的最长时间段2/15 1250. 检查「好数组」2/16 2341. 数组能形成多少数对2/17 1139. 最大的以 1 为边界的正方形2/18 1…...

SAP 关于多种语言配置

怎样才能在登录时选择自己需要的语言登录呢&#xff1f;虽然这个问题对很多人来说可能根本就算不上问题&#xff0c;但对很多新手来说可能却是很想尽快解决的问题。 曾经有位Puber说有个很简单的办法&#xff0c;但可惜的是在我一直没找到这个办法。今天看到一份资料&#xff…...

企业网站备案密码怎么找回/商丘网站推广公司

过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11520 Accepted Submission(s): 5072Problem DescriptionRPG girls今天和大家一起去游乐场玩。最终能够坐上梦寐以求的过山车了。但是&#xff0c;过山车…...

做网站电信运营许可证/营销推广方案ppt案例

zabbix官方的一句话描述zabbix&#xff1a; 监视任何事情适用于任何IT基础架构&#xff0c;服务&#xff0c;应用程序和资源的解决方案 Monitor anythingSolutions for any kind of IT infrastructure, services, applications, resources ---------------------------------…...

发改委门户网站建设思路/杭州搜索引擎排名

S1:C#语言和数据库技术基础 1.第一个C#程序 大家好&#xff0c;今天我要讲的是C#语言&#xff0c;首先它是一种一种编程语言&#xff08;我们之前学的java一样也是一种编程语言&#xff09;&#xff0c;接下来&#xff0c;直接进入正题。下面是我总结的知识&#xff0c;希望对你…...

网站建设套餐服务/百度移动端模拟点击排名

中国电信已经将中国首批IPv6城域网的下一代商用时间确定为下半年&#xff0c;从而拉开中国下一代互联网正式商用的序幕。中国电信将通过对长沙城域网现网设备的升级&#xff0c;建成国内首个IPv6商用城域网络&#xff0c;启动IPv6商用放号。 2009年&#xff0c;中国电信探索了以…...

如何把自己做的网站挂网上/优秀营销软文范例800字

1、背景 在离线环境下&#xff08;局域网中&#xff09;的GIS系统中如何使用地图&#xff1f;这里的地图主要指的是地图底图&#xff0c;有了底图切片数据&#xff0c;我们就可以看到地图&#xff0c;在上面加上自己的业务数据图层&#xff0c;进行相关操作。 要在离线环境下看…...

wordpress换域名把家/seo推广是做什么的

CORS&#xff08;跨域资源共享&#xff0c;Cross-Origin Resource Sharing&#xff09;CORS其实出现时间不短了&#xff0c;它在维基百科上的定义是&#xff1a;跨域资源共享&#xff08;CORS &#xff09;是一种网络浏览器的技术规范&#xff0c;它为Web服务器定义了一种方式&…...