吴恩达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

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

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

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

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

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

相关文章

数据仓库与数据挖掘实验练习8

pivot_table()透视表 sales.pivot_table(values Revenue,index Date, columns Name,aggfunc sum,fill_value 0,margins True,margins_name 总计 ) 使用 Pandas 的 pivot_table 函数将一个名为 sales 的 DataFrame 转化为透视表。 1. sales.pivot_table(...) sales: …

将写的项目部署到Linux服务器上

一、首先购入一个云Linux服务器 例如:腾讯云,阿里云等(经常会有学生优惠) 这个腾讯云,新用户82元可以使用一年,还是可以的(如果觉得贵,可以和同学一起拼一个~~) 二、连接…

Python实现PPT表格的编写包含新建修改插图(收藏备用)

自动创建一个ppt文件并创建好表格 代码要用到pptx库 pip install python-pptx 创建含有表格的ppt文件代码: from pptx import Presentation from pptx.util import Inches# 创建一个PPT对象 ppt Presentation()# 添加一个幻灯片 slide ppt.slides.add_slide(p…

vscode编译文件夹下所有文件的配置(包含插件和 .json 文件)

文章目录 我所使用的插件.json 文件配置1. c_cpp_properties.json2. launch.json3. settings.json4. tasks.json 如何运行 我所使用的插件 红框中的五个插件是必备的,其中 Code Runner 插件可以在写完一个 .c 或 .cpp 文件后,按下 Crtl R 快捷键快速编…

Kubernetes——Ingress详解

目录 前言——Service策略的作用 1.外部访问方案 2.使用场景和限制 2.1NodePort 2.2LoadBalancer 2.3externalIPs 2.4Ingress 3.Ingress如何实现对外服务 4.LB和Ingress结合起来实现对外服务的过程 一、Ingress 1.定义 2.组成 3.工作原理 4.总结 二、部署Nginx-I…

SQL Server数据库安装部署

目录 一、简介二、安装步骤1、安装包下载2、安装过程 一、简介 SQL Server 是由 Microsoft 公司开发和提供的关系型数据库管理系统(RDBMS)。它是一个功能强大且可靠的数据库平台,广泛用于企业和组织中的数据存储和管理。以下是 SQL Server 的…

Gradio中Button用法及事件监听器click方法使用

Gradio中Button用法及事件监听器click方法使用 瞎想乱记 事情是这样的:入职时面试的是Java,简历中写了会python,刚好最近有个小项目需要用Python实现,老板就将这个项目交给了我,我… 项目中还真遇到了好几个坑&#…

SEO之关键词扩展(二)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 (接上一篇。。。) 5、各种形式的变体 1.同义词 假设核心关键词是酒店,…

Ps:批处理

Ps菜单:文件/自动/批处理 Automate/Batch 批处理 Batch命令可以对一个文件夹中的文件执行事先创建的动作 Actions,从而快速地完成大量的重复性操作,提升工作效率。 提示 1: 可以从 Adobe Bridge 中调用 Photoshop 的批处理命令。 …

被斯坦福抄作业了?在线体验下:国产大模型确实越来越棒啦!

抄袭? 这里不做评价了: 官方仓库 地址:miniCPM-Llama3-V-2_5 免费在线体验地址 链接:Llama3-V-2_5 模型能力: 模型实际体验 问他什么模型:(可能用了它的数据集吧) 图片分析…

「Qt Widget中文示例指南」如何实现一个简单的RHI小部件示例(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将为大家演示如…

一次 K8s 故障诊断:从 CPU 高负载到存储挂载泄露根源揭示

一、背景 现代软件部署中,容器技术已成为不可或缺的一环,在云计算和微服务架构中发挥着核心作用。随着容器化应用的普及,确保容器环境的可靠性成为了一个至关重要的任务。这就是容器SRE(Site Reliability Engineering&#xff0c…

【学习笔记】Windows GDI绘图(十)Graphics详解(中)

文章目录 Graphics的方法AddMetafileComment添加注释BeginContainer和EndContainer新建、还原图形容器不指定指定源与目标矩形指定源与目标矩形 Clear清空并填充指定颜色CopyFromScreen截图CopyPixelOperation DrawImage绘制图像DrawImage的GraphicsDrawImageAbort回调ExcludeC…

初识 peerDependencies

目录 初步认识 peerDependencies semver 介绍 # 摘要 # 简介 # 语义化版本控制规范(SemVer) # 合法语义化版本的巴科斯范式语法 # 为什么要使用语义化的版本控制? # FAQ 示例讲解:vue-router 插件 # 说明 声明 验证 初…

在Windows11系统上搭建SFTP服务器

利用OpenSSH搭建SFTP服务器 下载安装部署OpenSSH创建一个测试账户测试链接为SFTP用户配置根目录下载安装部署OpenSSH 参考链接 部署完启动服务要使用管理员模式。 net start sshd创建一个测试账户 使用PC的微软账户是访问不了SFTP的。 需要使用被微软账户覆盖掉的系统账户和…

微信自定义小程序源码系统 众多组件随心搭 各行各业都适用的小程序 带完整的安装代码包以及搭建教程

系统概述 微信自定义小程序源码系统是一款基于微信官方开发框架进行深度定制的源码系统。该系统整合了众多优质组件,通过可视化的拖拽式操作,让开发者无需编写复杂的代码,即可快速搭建出符合自己需求的小程序。同时,该系统支持多…

iTerm2 携手 OpenAI,带来命令行的自然语言革新

在技术不断进步的今天,命令行工具的智能化已成为提升效率的关键。iTerm2,macOS 系统上广受欢迎的开源终端工具,通过最新版本 v3.5 的发布,实现了与 OpenAI 的集成,引领了这一变革。 iTerm2 简介 iTerm2 是一款功能强…

qcom 平台系统签名流程

security boot 平台的东东,oem 可定制的功能有限,只能参考平台文档,可以在高通的网站上搜索:Secure Boot Enablement,然后找对应平台的文档xxx-Secure Boot Enablement User Guide, step by step 操作即可 开机校验流…

CodeBlocks官方主题颜色更换及方法

文章目录 一、前言二 、用工具导入配置文件2.1 运行 cb_share_config.exe文件2.2 替换文件2.3 设置主题 三、配置主题3.1 步骤13.2 步骤23.3 步骤3 四、设置光标4.1 配置字体4.2 展示 行号 五、设置左边行号区域部分六、设置完后的效果七、下载地址 一、前言 Codeblocks 默认的…

【Python系列】Python装饰器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…