吴恩达2022机器学习专项课程C2W3:2.24 机器学习实践建议(决定下一步做什么模型评估模型选择交叉验证)

news2024/11/15 18:32:58

目录

  • 引言
  • 一、绘图评估模型的局限性
  • 二、使用测试集评估模型
    • 1.线性回归
    • 2.逻辑回归
    • 3.测试误差与泛化误差
  • 三、测试集评估模型存在的问题
    • 1.评估模型流程
    • 2.流程存在的问题
  • 四、解决问题
    • 1.训练集分割成三段
    • 2.计算交叉验证集的误差
  • 五、重新评估模型
    • 1.线性回归模型
    • 2.神经网络模型
    • 3.评估流程注意事项
  • 总结
  • 课后问答
    • quiz1
    • quiz2
    • quiz3

引言

1.本周内容简述
解决机器学习模型与神经网络模型中的欠拟合与过拟合问题。

2.算法出现问题该如何解决
假设你用正则化线性回归预测房价,出现大误差时,你可以尝试不同方法解决:获取更多训练样本、减少或增加特征、添加多项式特征或调整正则化参数 λ。有效构建机器学习算法的关键在于正确投资时间,例如收集更多数据有时有用,有时没用。
在这里插入图片描述
3.将学习的内容
本周将学习诊断方法,以了解算法的有效性并提升性能。某些诊断可以帮助你决定是否需要更多训练数据,从而节省时间。我们将讨论多种诊断方法,提供提升算法性能的参考,并首先学习如何评估算法性能。
在这里插入图片描述

一、绘图评估模型的局限性

当你训练了一个机器学习模型后,需要系统地评估其性能。以房价预测为例,假设使用房子大小作为特征训练一个四阶多项式模型,通过绘制模型,能看到该模型可能会过拟合训练数据,无法预测训练集之外的数据。为了提高模型的泛化能力,加入更多特征如卧室数量、层数和房龄。但由于特征增多,难以直观绘制模型。因此不能单纯的通过绘制手段评估模型,需要系统的方法来评估模型的表现。

在这里插入图片描述

二、使用测试集评估模型

1.线性回归

(1)分割训练集:将训练集(例如10个样本)分成训练集和测试集,用m_train表示训练样本数(这里是7),用m_test表示测试样本数(这里是3),大部分数据用于训练,一小部分用于测试。

在这里插入图片描述
(2)计算训练集误差和测试集误差:首先通过最小化成本函数计算出合适的w,b。评估模型时,使用w,b计算训练集的误差J_test(w, b)和测试集的误差集 J_train(w, b) 。
在这里插入图片描述
(3)为什么计算误差的时候不用正则化项?:正则化是为了防止过拟合,而我们的目的是仅计算预测值与真实值之间的差异,因此无需添加正则化项。
(4)结论:因为案例中的模型过拟合,使用训练集计算的误差接近零,因此使用训练集计算的误差J_train(w, b) 值会很低。然而,测试集对于模型来讲是新数据,由于模型过拟合,模型的预测结果相较于真实值差距大,因此使用测试集计算的误差J_test 会很高,表示该模型的泛化效果差,这样通过计算测试集,就评估出了模型的泛化能力。在这里插入图片描述

2.逻辑回归

(1)计算训练集和测试集误差:对于0或1的手写数字分类也使用同样的流程,分割出训练集和测试集,分别计算误差。
在这里插入图片描述
(2)错误分类的比例:在分类问题中,J_test 和 J_train 还有另一种定义,意思是衡量测试集和训练集中被错误分类的部分。例如,在手写数字分类中,J_test是测试集中错误分类的比例,J_train是训练集中错误分类的比例。在这里插入图片描述

3.测试误差与泛化误差

  • 训练误差:是模型在训练数据集上的误差,反映了模型对训练数据的拟合程度。由于模型参数是根据训练数据调整的,训练误差通常很低。
  • 泛化误差:是模型在所有可能的新数据上的表现,由于实际泛化误差难以直接计算(数据是无限的),我们使用测试误差来估计泛化误差。
  • 测试误差:是模型在测试数据集上的误差,是泛化误差的估计值。测试误差能够更好地反映模型在新数据上的表现,因为测试数据集在模型训练过程中未曾使用。

在这里插入图片描述

三、测试集评估模型存在的问题

1.评估模型流程

先设计出不同的线性回归模型,然后训练模型,通过w,b参数计算每个模型的测试误差J_test,比较所有模型的J_test值,选择误差最小的模型。例如,五阶模型的测试误差最小,则选择该模型。在这里插入图片描述

2.流程存在的问题

根据测试集的测试误差来选择多项式,可能会导致测试误差J_test过于乐观,因为你选择的模型是在测试数据上表现最好的模型,而这种表现并不一定能泛化到全新的数据上。

四、解决问题

1.训练集分割成三段

将训练集分成三个子集:训练集、交叉验证集和测试集。交叉验证集也称为验证集(validation set)或开发集(development set)。交叉验证集用来检查或信任检查不同模型的有效性和准确性。
在这里插入图片描述

2.计算交叉验证集的误差

同样,交叉验证集也计算均方误差成本函数,通过这三个误差衡量标准,可以进行模型选择。
在这里插入图片描述

五、重新评估模型

1.线性回归模型

依旧先拟合出10个模型,然后分别计算每个待选择模型在交叉验证集上的误差Jcv。选择交叉验证误差最低的模型作为最终模型。如果想知道该模型的泛化效果,可以计算该模型在测试集上的测试误差来判断泛化效果。
在这里插入图片描述

2.神经网络模型

例如拟合手写数字识别模型时,可以考虑几种不同规模的神经网络,训练不同的模型,得到各自的参数 w_1, b_1、w_2, b_2 、w_3, b_3 等。然后使用交叉验证误差Jcv来评估每个模型的性能。对分类问题,通常计算交叉验证集上错误分类样本的比例。选择交叉验证误差最低的模型作为最终模型。例如,如果第二个模型的交叉验证误差最低,则选择该模型。最终使用测试集评估选择的模型,以估计其泛化误差。确保在选择模型和拟合参数时不使用测试集,以避免信息泄露。

在这里插入图片描述

3.评估流程注意事项

在做出所有关于模型的决定(如选择参数和架构)时,只使用训练集和交叉验证集。只有在确定最终模型后,才使用测试集进行评估,确保测试集的公平性和模型泛化能力的准确估计。

总结

本篇初步引入了训练集、交叉验证集和测试集的概念,以及它们的误差如何计算。目前只是引入了简单的模型选择,即哪个模型的J_cv低就选谁。训练误差和交叉验证误差可以告诉你下一步该尝试什么来改进模型。它可以显示你是否存在高偏差(欠拟合)或高方差(过拟合)问题。下一篇描述什么是高方差和高偏差?

课后问答

quiz1

问题:在机器学习中,什么是诊断?
答案选项:

  • 测量学习算法在测试集(未训练的数据)上的表现。
  • 运行一个测试以了解学习算法的工作情况。
  • 机器学习在医学应用中的应用,目的是诊断病人的情况。
  • 通过多种方式快速改进算法以了解什么有效。

在这里插入图片描述
正确答案:运行一个测试以了解学习算法的工作情况。
解释:诊断是用来了解算法的工作情况并改进其性能的测试.(测试集的用途是评估模型的最终性能,而不是用于诊断和改进模型)。


quiz2

问题:在训练集上表现更好的算法在新数据上表现也会更好吗?是或否?
在这里插入图片描述
正确答案:否。
解释:如果模型对训练集过拟合,它可能在新数据上表现不好。过拟合的模型在训练数据上表现很好,但在新数据上泛化能力差。


quiz3

问题:对于分类任务,假设你使用三种不同的神经网络架构训练了三个模型。你使用哪种数据来评估这三个模型以选择最佳模型?
答案选项:

  • 测试集。
  • 所有数据——训练集、交叉验证集和测试集。
  • 交叉验证集。
  • 训练集。

在这里插入图片描述
正确答案:交叉验证集。
解释:使用交叉验证集计算交叉验证误差,以比较三个模型中的哪个最好。

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

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

相关文章

Java多线程核心工具类

1.Thread类:代表一个线程。你可以通过继承Thread类或实现Runnable接口来创建线程。 2.Executor框架:java.util.concurrent.Executors和java.util.concurrent.Executor接口提供了一种创建和管理线程池的方法,可以减少在创建和销毁线程上的开销…

[移动通讯]【无线感知-P2】[特征,算法,数据集】

前言: 这里面主要参考清华大学的杨峥教授,做一下无线感知的总结. 基本思想: 无线信号不仅可以传输数据,还可以感知环境信号发射机产生的无线电波 经由直射,反射,散射等多条路径传播,在信号接收机形成的多径叠加信号 携带反映环境特征…

分布式事务Seata中XA和AT模式介绍

Seata中XA和AT模式介绍 分布式事务介绍分布式解决方案解决分布式事务的思路Seata的架构Seata中的XA模式Seata的XA模型流程XA模式优缺点实现XA模式 Seata中的AT模式Seata中的AT模式流程实现AT模式AT模式优缺点 AT模式与XA模式的区别 分布式事务介绍 分布式事务,就是…

基于LEAP模型在能源环境发展、碳排放建模预测及分析中实践应用

LEAP(Long Range Energy Alternatives Planning System/ Low emission analysis platform,长期能源可替代规划模型)是一种自下而上的能源-环境核算工具,该模型与情景分析法紧密结合,可用于预测不同发展条件下中长期能源…

discuz如何添加主导航

大家好,今天教大家怎么样给discuz添加主导航。方法其实很简单,大家跟着我操作既可。一个网站的导航栏是非常重要的,一般用户进入网站的第一印象就是看网站的导航栏。如果大家想看效果的话可以搜索下网创有方,或者直接点击查看效果…

【TB作品】msp430f5529单片机墨水屏,口袋板,显示温度和万年历,tmp421温度,RTC时间

文章目录 一、部分程序二、展示三、全部代码下载 一、部分程序 int main(void) {WDTCTL WDTPW | WDTHOLD; //关闭看门狗init(); //屏幕初始化InitIIC(); //I2C初始化TMP_Init(); //tmp421初始化SetupRTC();_EINT();while (1){} }#pragma vectorRT…

聊 · Flutter

曾经的团队是国内最早投入Flutter框架怀抱的团队,后来又有机会负责起了Flutter相关项目,翻回以前写的文章,感慨良多,这是其中的一篇关于这些内容的闲聊。 | 导语Flutter相关的技术资源官网和网友都有过系统且细致的整理&#xff0…

AI率过高?掌握这些技巧轻松应对论文AIGC检测

告诉大家一个非常残忍的答案,以后所有论文都会被查ai率的。 学术界不仅关注传统的抄袭问题,还增加了一项名为“AIGC检测”的指标。例如知网、维普等平台都能检测论文AI率。 用GPT写论文虽然重复率基本不用担心,但是AI率基本都较高&#xff…

关于科技的总结与思考

文章目录 互联网时代有趣的数字数据驱动大数据的两个特性数据保护互联网免费模式的再探讨平台互联网的意义人工智能伦理的思考语言理性人梅特卡夫定律冲浪的神奇之处AR的恐怖之处叙词表、受控词表和大众分类法六度/十九度的解读知识图谱是真正的仿生智能幂次法则和优先连接现代…

flinksql 回撤流中主键发生变更的影响(group by中的值发生改变)

flinksql 回撤流中,主键发生变更的影响 1 什么是回撤流2 主键变更场景2.2 实践发生3 实践中发现的比较好的的实时数仓架构1 什么是回撤流 这篇文章主要谈论一个场景,简单来说: 首先我们来简单的说一下什么是回撤流,以及回撤流的底层原理,举个例子: 这个说的不是很清晰…

Nginx设置缓存后,访问网页404 问题原因及解决方案(随手记)

目录 问题描述Nginx文件 解决方案查看error_log日志问题原因修改文件并测试Nginx文件测试 总结 问题描述 在Nginx中设置缓存expires后,结果重启nginx,网站访问404了。 Nginx文件 server {listen 80;server_name bird.test.com;location / {root /app/…

本地Django项目切换使用Python虚拟环境

本地Django项目切换使用Python虚拟环境 之前项目开发时,没有使用虚拟环境。导致现在需要上线导出三方模块比较杂乱,于是想着先在本地通过虚拟环境运行起来,之后再导出三方模块(requirements.txt) 首先在Pychram中查看…

QT开源 串口调式工具

都是基础的代码不详细解释,代码比较多福利链接

微前端基于qiankun微前端应用间通信方案实践

【qiankunvue】微前端子应用之间的通信方式总结 ------------------------------------------------------------------补充--------------------------------------------------------- 什么是微前端? 微前端 微前端是一种多个团队通过独立发布功能的方式来共同构…

【云原生 | 60】Docker中通过docker-compose部署kafka集群

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

如何生成PDF二维码?扫码就能查看文件内容

在现代科技发展的浪潮中,二维码已经成为了信息传递的主要工具之一,被广泛应用在企业办公、产品包装、教育教学等多中场景里,发挥着重要的作用。今天一起来看看究竟如何制作一个PDF文件二维码吧? 扫码后就可以立即查看PDF文件内容…

Virtualbox 安装 ubuntu + qemu

0. 前言 关于 Virualbox 安装虚拟机的优秀文章太多了,笔者主要是着重梳理一些安装小细节,利己利人!! 如果需要保姆式的安装教程,可以查看后续的参考链接。 1. VirtualBox 的安装 直接去官网搜索最近的软件即可&…

【C++】list的使用(上)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🌈关于list🔥默认成员函数构造函数(constructor)析构函数(destructor)赋值运算符重载 &#x1…

一文读懂筛选控件设计

​筛选的作用是缩小展示范围,筛选控件有时会用于“频道切换”。比如内容型或电商产品,用tab切换不同频道,每个频道内有自己的形态。 而到了 B 端产品,如一个 CRM 系统当中,筛选的逻辑比移动端的复杂,有&…

【qt15】windeployqt 安装依赖

debug模式vs可以使用qt插件新建qt文件 D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe .\filecopier.exeWindows PowerShell Copyright (C) …