【自学笔记】神经网络(2) -- 模型评估和优化

文章目录

  • 划分数据集
    • 训练集和测试集
      • 训练误差
    • 测试误差
    • 交叉验证测试集
  • 偏差与方差
    • 偏差
    • 方差
    • 表现基准
  • 学习曲线
    • error - train set size
    • error - degree of polynomial
  • 数据增强
  • 迁移学习
  • 项目的完整周期
  • 样本不平衡问题
    • 精确率和召回率
    • 精确率与召回率的平衡

划分数据集

  我们当然希望把所有数据都用来优化模型,然而数据是有限的,我们要追求最大化数据的效用,用最少的数据训练出最好的效果。

训练集和测试集

  通常,我们会将数据集划分一部分出来,用来测试模型在未出现过的数据中的能力(泛化能力)。

训练误差

  训练误差(Training Error)指模型在训练数据集上的预测误差。它衡量的是模型对已知数据的拟合程度。可以用来判断是否欠拟合

测试误差

  测试误差(Test Error)是指模型在未见过的测试数据集上的预测误差。它衡量的是模型的泛化能力,即模型在新数据上的表现。可以用来判断是否过拟合

交叉验证测试集

  交叉验证(Cross-Validation)是一种评估机器学习模型性能和选择模型参数的方法,通过将数据集分为多个子集来进行。交叉验证的主要目标是减少过拟合的风险,并提供模型在未知数据上的性能评估。其中常用的是一种称为K折交叉验证(K-fold Cross-Validation)的方法。
  在K折交叉验证中,数据集被随机划分为K个子集(或称为“折”)。然后,模型被训练K次,每次使用K-1个子集作为训练数据,剩下的一个子集作为验证数据(或测试集)。这样,每个子集都会在验证过程中被用作一次测试集,而其余部分的子集会被用作训练集。模型的性能通常通过这K次训练和验证过程中的平均表现来评估。
  优点:数据资源有效利用
  缺点:算力资源要求较高
  此外,对于某些数据(如时间序列数据),标准的K折交叉验证可能并不适用,因为它假设数据是独立同分布的,而时间序列数据通常具有顺序依赖性

偏差与方差

偏差

  偏差(Bias)是指模型预测值的期望与真实值之间的差异,高偏差模型在拟合训练数据时存在“欠拟合”

方差

  方差(Variance)是模型预测值的差异程度,即预测值在不同数据集上的变动性。它可以用预测值的方差来表示。方差过大表示模型存在“过拟合”

表现基准

  注意,模型具有较高的偏差或方差不一定意味着模型不好,通常会将人类做相同任务所产生的偏差与方差作为表现基准。此外,也可以在其他竞争算法的基础上作优化。

学习曲线

error - train set size

在这里插入图片描述
  这里是选定模型后,增加数据集大小的情况。随着数据集大小增大,交叉验证误差减小,泛化能力增强;同时训练误差增大,这是因为固定的模型(如 f w , b ( x ) = w 1 x + w 2 x 2 + b f_{w,b}(x)=w_{1}x + w_{2}x^{2}+b fw,b(x)=w1x+w2x2+b)会越来越难以完美拟合所有样本点。

  数据集足够大时,曲线会趋于平坦。这可能是由于当前的模型过于简单,无法继续拟合出更好的效果了,这时候就可以考虑更换或优化模型,而不仅仅是向它输入更多的数据。

在这里插入图片描述
  而如果出现交叉验证误差远高于训练误差的情况,可能就是数据量不足或模型设计过于复杂。有时,正则化可以很好解决问题。

error - degree of polynomial

在这里插入图片描述
  这是误差与模型复杂度的图线,这里采用多项式函数,所以复杂度就是多项式的维度。

数据增强

  在数据不足或数据特征过于单一时,可以用一些手段从已有的数据中生成额外的数据,从而实现数据增强。比如,现在你有一张写有字母A的图片,你可以对它进行旋转、模糊、放缩等一系列操作,并保持标签 A A A不变,那么,你就成功将数据集扩充了若干倍,模型的泛化能力也能得到提升。类似的,我们还可以在音频中混入不相干的噪音,或在文本中加入少量不相干的字符,来人为地为数据集添加噪声

迁移学习

  迁移学习是指在机器学习领域中,利用一个神经网络在源任务上学习到的知识,帮助解决另一个相关但不同的目标任务。这一过程可以显著减少目标任务所需的训练时间、数据量和计算资源。
  (1)微调(Fine-tuning):将预训练的神经网络模型应用到新的任务上,并对模型的部分或全部参数进行微调。通常,预训练模型是在大规模数据集(如ImageNet)上训练的,这些模型已经学习到了丰富的特征表示。在新的任务上,通过微调模型的最后几层或所有层,可以快速适应新的数据集。
    比如,如果你想实现一个0~9数字识别的模型,而已经有了识别小猫小狗等各种类别的模型,可以只修改这个模型的输出层,来快速实现任务。
  (2)特征提取:预训练模型的前几层通常学习到的是低级特征(如边缘、纹理等),这些特征在许多任务中都是通用的。因此,可以将这些层作为特征提取器,直接用于新的任务。
  (3)冻结层:在新的任务中,可以冻结预训练模型的前几层,只训练新的分类层或其他特定任务的层,这样可以减少计算资源的消耗,同时利用预训练模型的泛化能力。
  (4)…

项目的完整周期

在这里插入图片描述
在这里插入图片描述

样本不平衡问题

  当样本中某一标签数量远大于其余种类时,模型会表现出倾向该标签的特征,从而达到虚假的高准确率。
在这里插入图片描述
  预测正确标记为 T r u e True True,预测错误标记为 F a l s e False False,标签为1标记为 p o s i t i v e positive positive,标签为0标记为 n e g a t i v e negative negative

精确率和召回率

  则引入两个比值来评估这个模型:
  (1)精确率 P o c i s i o n = T r u e p o s i t i v e s P r e d i c t e d p o s i t i v e s Pocision = \frac{True \ positives} {Predicted \ positives} Pocision=Predicted positivesTrue positives
  (2)召回率 R e c a l l = T r u e p o s i t i v e s A c t r u a l p o s i t i v e s Recall = \frac{True \ positives} {Actrual \ positives} Recall=Actrual positivesTrue positives
  高的精确率意味着模型误判率低,高的召回率意味着模型漏判率低

精确率与召回率的平衡

  精确率和召回率之间通常存在权衡关系。提高精确率往往会降低召回率,反之亦然。
  我们引入 F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall在精确率和召回率之间寻求平衡,特别是在两者都重要的情况下。
  更一般的则有 Fβ Score = ( 1 + β 2 ) × Precision × Recall ( β 2 × Precision ) + Recall \text{Fβ Score} = (1 + \beta^2) \times \frac{\text{Precision} \times \text{Recall}}{(\beta^2 \times \text{Precision}) + \text{Recall}} Fβ Score=(1+β2)×(β2×Precision)+RecallPrecision×Recall
  (1)当 β = 1 β=1 β=1 时, Fβ Score \text{Fβ Score} Fβ Score等同于 F1 Score \text{F1 Score} F1 Score,可以根据需求灵活调整参数 β β β
  (2)当 β < 1 β<1 β<1 时,精确率的权重更高。
  (3)当 β > 1 β>1 β>1 时,召回率的权重更高。

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

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

相关文章

Windows 局域网IP扫描工具:IPScaner 轻量免安装

IPScaner是一款258KB的工具&#xff0c;具备快捷修改IP、批量扫描、地址计算等功能&#xff0c;自动识别本机IP网段&#xff0c;快速查看IP使用情况&#xff0c;适用于监控维护、企业IT运维等场 软件功能介绍&#xff1a; 1&#xff09;快捷修改本地IP、IP批量扫描、IP地址计算…

2024 年Postman 如何安装汉化中文版?

2024 年 Postman 的汉化中文版安装教程

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述&#xff0c;例如20%的用户贡献了80%的销售额&#xff0c;或者是20%的人拥有着80%的财富&#xff0c;你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…

fork函数详解

前言 之前我们提到&#xff0c;创建子进程的时候&#xff0c;需要使用fork()函数&#xff0c;其中分别有id 0和id >0的if函数&#xff0c;但是实验表明&#xff0c;两个if函数中的内容都得到了实现。按照我们之前所学&#xff0c;一个变量同一时间只能有一个值&#xff0c;…

OkHttp网络请求框架

添加依赖 在 build.gradle 文件中添加 OkHttp 依赖&#xff1a; dependencies {implementation("com.squareup.okhttp3:okhttp:4.10.0") }使用OkHttp发起GET请求 同步请求 public class MainActivity extends AppCompatActivity {// Used to load the okhttptes…

Ue5 umg学习(三)文本控件

从通用中&#xff0c;选择文本控件 将其拉入画布中&#xff0c;和图像控件使用方法类似。 右边是字形&#xff0c;尺寸&#xff0c;字间距。 可以导入字形&#xff0c;使用&#xff0c;不过要注意&#xff0c;不要导入FZ系字体&#xff0c;不然可能会涉及侵权 修改尺寸会修…

wireshark演进之路——从GTK到Qt

Wireshark 自 1998 年诞生至今&#xff0c;已有超过26年的历史了。它最早由 Gerald Combs 创建&#xff0c;最初名为 Ethereal。2006 年&#xff0c;Ethereal 更名为 Wireshark&#xff0c;并继续发展成了全球领先且人尽皆知的网络协议分析工具&#xff0c;其GUI演变就是其中非…

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串&#xff0c;最大长度64KB&#xff0c;实际应用中一般为10~100bytes&#xff0c;字典顺序排序&#xff0c;rowkey的设计至关重要&#xff0c;会影响region分布&#xff0c;如果rowkey设计不合理还会出现region写热点等一系列问题。 …

JavaWeb后端开发案例——苍穹外卖day01

day1遇到问题&#xff1a; 1.前端界面打不开&#xff0c;把nginx.conf文件中localhost:80改成81即可 2.前后端联调时&#xff0c;前端登录没反应&#xff0c;application.yml中默认用的8080端口被占用&#xff0c;就改用了8081端口&#xff0c;修改的时候需要改两个地方&…

Centos7镜像下载与docker安装

注意&#xff1a; CentOS 7 已于2024年6月30日停止维护&#xff01; 1、下载 由于 centos 7 已经停止维护&#xff0c;部分镜像网站移除了对centos 7的支持&#xff0c;这里找到了部分现在还可以使用的镜像网站 阿里云开源镜像站&#xff1a;https://mirrors.aliyun.com/cent…

科技云报到:数字化转型,从不确定性到确定性的关键路径

科技云报到原创。 数字化转型是VUCA时代最大的确定性。 如果说&#xff0c;过去是数字化转型的试验阶段&#xff0c;实施的是开荒动土、选种育苗&#xff0c;那么当前要进行的是精耕细作、植树造林&#xff0c;数字化转型已进入了由个别行业、个别场景的“点状应用”向各行各业…

AgentReview:基于 LLM Agents 模拟同行评审过程的框架

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

如何查看电脑关机时间

要查看电脑的关机时间&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 打开事件查看器&#xff1a;按下键盘上的Windows键R键&#xff0c;然后在弹出的运行对话框中输入"eventvwr.msc"&#xff0c;并按下Enter键。 2. 在事件查看器窗口中&#xff0c;单击左侧窗…

详解Gemini API的使用:在国内实现大模型对话与目标检测教程

摘要&#xff1a;本博客介绍了如何利用Gemini API实现多轮对话和图像目标检测识别功能&#xff0c;在Python中快速搭建自己的大模型完成实际任务。通过详细的步骤解析&#xff0c;介绍了如何申请Gemini API密钥&#xff0c;调用API、对话实现的代码&#xff0c;给出了上传图片识…

HashMap的put流程知道吗

HashMap 的 put 方法算是 HashMap 中比较核心的功能了&#xff0c;复杂程度高但是算法巧妙&#xff0c;同时在上一版本的基础之上优化了存储结构&#xff0c;从链表逐步进化成了红黑树&#xff0c;以满足存取性能上的需要。本文逐行分析了 put 方法的执行流程&#xff0c;重点放…

5. ARM_指令集

概述 分类 汇编中的符号&#xff1a; 指令&#xff1a;能够编译生成一条32位机器码&#xff0c;并且能被处理器识别和执行伪指令&#xff1a;本身不是指令&#xff0c;编译器可以将其替换成若干条指令伪操作&#xff1a;不会生成指令&#xff0c;只是在编译阶段告诉编译器怎…

uniapp的基本使用(easycom规范和条件编译)和uview组件的安装和使用

文章目录 1、uniapp1.uview组件安装2.uview-plus组件安装 2、条件编译3、easycom规范1.组件路径符合规范2.自定义easycom配置的示例 总结 1、uniapp UniApp的UI组件库&#xff0c;如TMUI、uViewUI、FirstUI、TuniaoUI、ThorUI等&#xff0c;这些组件库适用于Vue3和TypeScript&…

Vue 学习随笔系列十四 -- JavaScript巧妙用法

JavaScript巧妙用法 文章目录 JavaScript巧妙用法1、String.padStart 函数2、String.padEnd 函数3、tirm 函数3. Object.freeze 函数4. Object.fromEntries 函数5. Object.entries 函数6. Array.prototype.flat 函数 1、String.padStart 函数 在字符串前面进行填充 let temp …

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品&#xff0c;原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的&#xff0c;和原来不兼容&#xff0c;全称&#xff1a;ActiveMQ Artemis 本位仅介绍单机简单部署使用&#xff0c;仅用于学习和本地测试使用 官网&#xff1a;…

商场试衣间惊现隐藏摄像头:小澄检测仪助力博主影子揭露

在信息时代&#xff0c;隐私安全如同一座需要时刻守护的堡垒。然而&#xff0c;近期公共场所出现的针孔摄像头事件&#xff0c;让这座堡垒遭受了严峻冲击。科普博主影子不会说谎近日发布视频&#xff0c;再度曝光隐藏在商场服装店试衣间的针孔摄像头&#xff0c;引发公众关注。…