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

目录

  • 引言
  • 一、绘图评估模型的局限性
  • 二、使用测试集评估模型
    • 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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 14.0 Settings主页面去掉自定义您的设备等菜单相关功能

1.前言 在14.0的系统rom产品定制化开发中,在系统Settings主页面的主菜单中,在测试某些功能的时候,比如开启护眼模式和改变系统密度会在主菜单第一项的网络菜单头部增加 自定义您的设备和设置护眼模式时间安排 等等相关的设置模块 这对于菜单布局显示相当不美观,所以根据系…

SpringBoot+Redis发送短信

SpringBootRedis发送短信 pom.xml <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId&g…

【TB作品】 51单片机8x8点阵显示滚动汉字仿真

功能 题目5基于51单片机LED8x8点阵显示 流水灯 直接滚动显示HELLO 直接滚动显示老师好 代码 void main( void ) {/** 移位后&#xff0c;右边的是第一个595&#xff0c;接收0X02&#xff0c;显示出0X02* 移位后&#xff0c;左边的是第2个595&#xff0c;接收0Xfe&#xff0c…

git 的基本操作 Master and branch的版本合并 @ VS 1019

前言&#xff1a; 在VS 2019有git 的可视化管理,但&#xff0c;感觉微软其实就是在git上包了一层。版本冲突后&#xff0c;还是要靠git 的命令行代码搞。本文记录了一次&#xff0c;branch和master的版本合并的过程。作为&#xff0c;后续的参考。 【注意&#xff0c;这个是一…

最短路径——迪杰斯特拉与弗洛伊德算法

一.迪杰斯特拉算法 首先对于最短路径来说&#xff1a;从vi-vj的最短路径&#xff0c;不用非要经过所有的顶点&#xff0c;只需要找到路径最短的路径即可&#xff1b; 那么迪杰斯特拉的算法&#xff1a;其实也就与最小生成树的思想类似&#xff0c;找到较小的&#xff0c;然后…

JavaScript 学习笔记 总结

回顾&#xff1a; Web页面标准 页面结构&#xff1a;HTML4、HTML5页面外观和布局&#xff1a;CSS页面行为&#xff1a;JavaScript强调三者的分离前后端分离开发模式 响应式设计Bootstrap框架入门 Bootstrap总结 基础 下载和使用基础样式&#xff1a;文本样式、图片样式、表格…

多表连接查询和子查询

一、连接查询 连接查询是SQL语言最强大的功能之一&#xff0c;它可以执行查询时动态的将表连接起来&#xff0c;然后从中查询数据。 1.1、连接两表的方法 在SQL中连接两表可以有两种方法&#xff0c;一种是无连接规则连接&#xff0c;另一种是有连接规则连接。 无连接规则连…

matlab模拟黑洞包含吸积盘和喷流,简单模拟

本文介绍 黑洞的简单实现和模拟 代码 % Black Hole Simulation in 3D% Clear workspace and figures clear; close all; clc;% Create figure and set axis properties figure; axis([-10 10 -10 10 -10 10]); hold on; grid on; view(3);% Parameters for the black hole a…

【数据库】SQL--DDL(初阶)

文章目录 DDL1. 数据库操作1.1. 表操作1.1.1 创建1.1.2. 查询 2. 数据类型及案例2.1 数值类型2.2 字符串类型2.3 日期时间类型2.4 案例练习 3. 表操作--修改3.1 添加字段3.2 修改字段3.3 修改表名 4. 表操作-删除4.1 删除字段4.2 删除表 5. DDL小结 更多数据库MySQL系统内容就在…

MySQL经典面试题:谈一谈对于数据库索引的理解~~

文章目录 什么是索引&#xff1f;为什么要引入索引&#xff1f;引入索引的代价操作索引的SQL语句索引背后的数据结构B树B 树 回顾思考☁️结语 什么是索引&#xff1f; 数据库中的索引&#xff0c;就相当于一本书的目录。 什么是书的目录&#xff1f;相信大家都并不陌生&#…

【三】Linux网络配置详解

在RHEL 7系统中配置网络的方法有好几种&#xff0c;咱们这边先讲一下使用图形化工具和修改配置文件这两种方法来配置&#xff0c;其他方法大家可以下去自己研究研究。 一、使用图形化方式配置&#xff1a; 在电脑左上角开始一次点击Applications、System Tools、Settings&…

【Flask-项目运行】解决用本机IP访问不到flask项目而用localhost可以访问到的问题

文章目录 一、问题描述二、解决办法 一、问题描述 使用 localhost 或 127.0.0.1 能访问到项目&#xff1a; 但是使用局域网 IP 访问不到&#xff1a; 二、解决办法 只需要在 app.py 中修改一行代码&#xff1a; run方法添加 host 参数指明全部 ip 可访问。

B端数据看板,其实数据可以更美的。

B端数据看板可以通过设计来提升其美观度。 色彩和配色方案&#xff1a; 选择适合品牌和数据类型的色彩搭配方案。使用渐变色、明亮的色调和对比度来突出重要的数据指标。 数据可视化&#xff1a; 使用图表、图形和数据图像来呈现数据&#xff0c;使其更易于理解和解读。选择…

2024会声会影全新旗舰版,下载体验!

在当今数字时代&#xff0c;视频内容已成为最受欢迎的媒介之一。无论是个人娱乐、教育还是商业推广&#xff0c;优秀的视频制作都是吸引观众的关键。为了满足广大用户对高质量视频制作软件的需求&#xff0c;我们隆重推出了会声会影2024最新旗舰版。这款软件不仅集成了最先进的…

手撸 串口交互命令行 及 AT应用层协议解析框架

在嵌入式系统开发中&#xff0c;命令行接口&#xff08;CLI&#xff09;和AT命令解析是常见的需求。CLI提供了方便的调试接口&#xff0c;而AT命令则常用于模块间的通信控制。本文将介绍如何手动实现一个串口交互的命令行及AT应用层协议解析框架&#xff0c;适用于FreeRTOS系统…

【数据结构】顺序表专题(学习记录)

正文开始 课前预备 1. 课程目标 C语言语法基础到数据结构与算法&#xff0c;前⾯已经掌握并具备了扎实的C语言基础&#xff0c;为什么要学习数据结构课程&#xff1f;⸺通讯录项目 2. 需要的储备知识 简单了解&#xff0c;通讯录具备增加、删除、修改、查找联系⼈等操作。要想…

Linux进程无法被kill

说明&#xff1a;记录一次应用进程无法被kill的错误&#xff1b; 场景 在一次导出MySQL数据时&#xff0c;使用下面的命令&#xff0c;将数据库数据导出为.sql文件&#xff0c;数据量大&#xff0c;导出时间长&#xff0c;于是我就将服务器重启了。 mysqldump -u username -…

队列及其应用

实验内容 请设计一个简单的模拟银行排队系统&#xff0c;要求程序具有以下4项菜单&#xff1a; 1.取号。选择该菜单后&#xff0c;为客户产生一个排队号。 2.叫号。选择该菜单后&#xff0c;显示可服务的客户排队号。 3.查看队伍。从队首到队尾列出所有排队客户的排队号。 4.退…

Vue 学习笔记 总结

Vue.js 教程 | 菜鸟教程 (runoob.com) 放一下课上的内容 Vue练习 1、练习要求和实验2的用户注册一样&#xff0c;当用户输入后&#xff0c;能在下方显示用户输入的各项内容&#xff08;不需要实现【重置】按钮&#xff09; 2、实验报告中的实验小结部分来谈谈用JS、jQuery和…

流量分析——一、蚁剑流量特征

君衍. 一、Webshell特征流量分析二、环境介绍三、使用Wireshark进行流量分析1、环境说明2、HTTP追踪流分析3、蚁剑请求体中代码块解读 四、使用BurpSurite进行流量分析1、环境配置2、抓包分析 六、总结 一、Webshell特征流量分析 对于重保、护网等攻防演练的防守方来说&#x…