【吴恩达机器学习笔记】八、应用机器学习的建议

news2024/11/25 20:24:08

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。
📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记,方便大家参考学习。
💡专栏地址:https://blog.csdn.net/Newin2020/article/details/128125806
📝视频地址:吴恩达机器学习系列课程
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

八、应用机器学习的建议

1. 决定下一步要做什么

假如你现在想用一个常规的线性回归算法去预测房屋的价格,但是你发现预测的结果与实际结果偏差很大,那么你可以考虑下面的这几点:

  • 尝试获得更多的数据集去训练模型。
  • 尝试减少的特征值,有时可能会因为过拟合导致结果不精确。
  • 尝试增加的特征值,有时可能项目太大,但是特征值太少。
  • 尝试增加多项式特征(x12,x22,x1x2等)。
  • 尝试增加λ值。
  • 尝试减小λ值。

当然,有时候你可能做完了项目才发现某些算法并不理想,所以后面的内容将介绍该如何排除一些不适合的算法,并且告诉你上面这些方法可以用来解决哪些问题。

2. 评估假设函数

这节课,我们来讲讲该如何去评估你的假设函数,因为有时候误差很小并不是一件好事,可能是过拟合了,当特征量特别多的时候,就很难通过画图去评估假设函数,所以要用到接下来要讲的方法。

在这里插入图片描述

首先,对于数据集的处理,我们可以分为两个部分:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rn0PTBOg-1669855788009)(吴恩达机器学习.assets/image-20211111205202002.png)]

一部分为训练集,一部分为测试集,而我们通常将训练集和测试集按照7:3的比例进行划分,这里要注意,所划分的数据集要是随机的。

训练和测试线性回归的步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3sGhmeEb-1669855788011)(吴恩达机器学习.assets/image-20211111205653269.png)]

  • 将70%的数据集拿去训练,然后计算出最小的训练误差,得到θ值。
  • 计算测试误差。

训练和测试逻辑回归的步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybvD3KBz-1669855788012)(吴恩达机器学习.assets/image-20211111210207405.png)]

  • 将70%的数据集拿去训练,然后计算出最小的训练误差,得到θ值。
  • 计算测试误差。

还有一种度量方式是0/1错误分类度量(Misclassification error),可能更好理解一些:

  • 当err为1时,说明分类错误即当hθ(x)≥0.5时,将y判断成了0。
  • 当err为0时,说明此时分类正确。

3. 模型选择和训练、验证、测试集

这节课我们来看看该如何去选择一个合适的模型,首先先来回顾一下之前的模型选择步骤:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hZOU6V6Y-1669855788013)(吴恩达机器学习.assets/image-20211112113324422.png)]

我们之前是用训练集来最小化每一个模型得到θ,然后用同一个训练集来测试哪个误差最小,选出最优的那个模型,而其中出现的d代表的是多项式的阶数。我们假设上面模型中最优的是第五个即d=5,但是这个结果可能过于乐观了,因为它只是针对于训练集训练出的结果,如果放在新样本中可能效果就不会那么好了,所以接下来就要引出验证集了。

在这里插入图片描述

为了更好的选择模型,我们现在不再只划分两个数据集,而是三个,分别是训练集、交叉验证集(验证集)和测试集,比例通常在6:2:2,并且选择时也是随机选择的。

在这里插入图片描述

接下来就可以分别计算出训练/验证/测试误差,然后进行模型选择。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6wTo9TQ-1669855788022)(吴恩达机器学习.assets/image-20211112114038240.png)]

这里和上面不同,虽然还是先用训练集去最小化代价得到θ,但是用于选择模型的数据集变成了验证集,这样就多了一个测试集出来,用于评估所得模型。

4. 诊断偏差和方差

在训练模型的时候,你可能会遇到两种问题,一种就是高偏差问题,一种就是高方差问题,如何判断是否遇到了这两个问题是我们这节课要学的内容,先来看看训练误差和验证误差与多项次数d的关系。

在这里插入图片描述

由图中可以看到,当d很小的时候,会处于欠拟合状态,所以训练和验证误差会非常的大,当d很大的时候,训练误差会非常的小因为处于过拟合状态,所以这时候验证误差会变得很大。而在中间能够找到一个合适的d,使验证误差达到最小,所以我们就可以进行总结了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8duVeRvN-1669855788029)(吴恩达机器学习.assets/image-20211112203833342.png)]

当训练误差和验证误差都很大的时候,处于欠拟合状态,那就是出现了高偏差问题。

当训练误差很小并且远小于验证误差时,处于过拟合状态,那就是出现了高方差问题。

5. 正则化和偏差、方差

这节课我们来更深入的理解一下正则化和偏差、方差的关系,我们先来看看加了正则化的模型该如何去选择。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKD6Hkyg-1669855788030)(吴恩达机器学习.assets/image-20211112135149044.png)]

这里选择模型需要我们尝试各个λ的值,然后通过验证集去拟合参数计算验证误差得到最优解,假设我们得到的是θ(5),那么我们就可以像上面讲的一样,用测试集来评估这个选出来的模型如何。

接下来我们来看看λ对于J(θ)的曲线的影响如何。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTa6osSL-1669855788032)(吴恩达机器学习.assets/image-20211112140011634.png)]

  • Jtrain(θ)的值会随着λ的增大而增大,因为λ太小时,就几乎没有正则化,所以会导致过拟合;λ太大时,会对θ的惩罚过大,导致欠拟合。
  • Jcv(θ)的值会随着λ的增大先减小后增大,同样当λ太小时,几乎没有正则化,这里就被称为高方差问题,而太大时就被称为高偏差问题,在中间就可以找到一个合适的λ值去拟合数据。

6. 学习曲线

假设我们用一个二次函数来拟合我们的数据,并且人为的控制数据量来观察h(θ)的拟合情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Z0bTJms-1669855788033)(吴恩达机器学习.assets/image-20211112151600473.png)]

从上图右边的图像可以看出,在m很小的时候即数量集只有几个的时候,二次函数可以很好的拟合数据,但是随着m增大,拟合效果会变差。

再来看看Jtrain(θ)随m增大变化如何,从曲线看发现随着m增大Jtrain(θ)也会增大,而Jcv(θ)反而会减小。

接下来再来看看分别在高偏差和高方差下,曲线的情况,先来看高偏差(High bias)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ox845aJC-1669855788034)(吴恩达机器学习.assets/image-20211112152528366.png)]

你会发现,当m增大到一定程度时,验证误差和训练误差几乎保持不变,所以在高偏差的情况下,一般增大数据集的数量并不能减少误差值。

接下来,再来看看高方差(High variance)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HZitEsV8-1669855788036)(吴恩达机器学习.assets/image-20211112202312925.png)]

可以看到当训练集数量增大到一定程度时,训练误差和验证误差也会逐渐相近,并且会接近于比较低的一个点,所以增大训练集的数量对高方差问题是有一定改善的。

7. 决定接下来要做什么

现在,我们就可以总结一下第一节所提到的那些方法可以分别用于什么问题了:

  • 尝试获得更多的数据集去训练模型:解决高方差问题。
  • 尝试减少的特征值,有时可能会因为过拟合导致结果不精确:解决高方差问题
  • 尝试增加的特征值,有时可能项目太大,但是特征值太少:解决高偏差问题。
  • 尝试增加多项式特征(x12,x22,x1x2等):解决高偏差问题。
  • 尝试增加λ值:解决高方差问题。
  • 尝试减小λ值:解决高偏差问题。

然后我们再来看看神经网络:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8cVgdN2Z-1669855788038)(吴恩达机器学习.assets/image-20211112205705872.png)]

如果你选择一个较小的神经网络,你的计算量就会非常的小,参数也会很少,而且会更容易欠拟合。

如果你选择一个较大的神经网络,你的计算量就会非常的大,参数也会很多,而且会更容易过拟合,但是我们一般宁愿选择一个较大的神经网络而不是较小的神经网路是因为,过拟合时你可以用正则化来改善过拟合的问题。

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

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

相关文章

小袁博客重构V2.0版本重新发布(增加实时聊天/定时发布/权限管理/微信登录等功能)

有话说 第一代V1.0版本的博客项目,结构比较乱 ,各种注入和各种校验,层次不分明 重构之后,分了七大模块 注册中心模块后台模块前台模块第三方服务模块实体类模块工具模块系统模块 降低了模块间的耦合度,结合Valid注…

RabbitMQ初步到精通-第十一章-RabbitMQ之常见问题汇总

目录 RabbitMQ之常见问题汇总 1.rabbitmq丢消息场景 1.1 消息未持久化丢失 1.2 消费时消息丢失 1.3 如何阻止消息丢失 2. mq消费消息是pull 还是 push 2.1 pull形式消费 2.2 push形式消费 3. mq重复消费场景 3.1 生产端重复情况 3.2 消费端重复 3.3 如何防止 4.pre…

行业新趋势!利尔达OpenCPU方案助力水表厂商破局

在“十四五”规划数字化转型的大背景下,水务行业的不断发展对智能水表的需求呈爆发式增长,NB-IOT智能水表凭借其低功耗、低成本、安全、便捷、智能的特点较好解决了传统抄表的痛点,迅速成为行业市场的主角。 但过去两年里,“缺芯…

Rust机器学习之Plotters

Rust机器学习之Plotters 本文将带领大家学习Plotters的基础用法。重点学习Plotters的图表元素和常用图表的使用。 本文是“Rust替代Python进行机器学习”系列文章的第四篇,其他教程请参考下面表格目录: Python库Rust替代方案教程numpyndarrayRust机器…

关于账本数据库:你想知道的这里都有

💕前言:十二月份出个openGuass集合专栏,带领大家浅浅的认识一下国产数据库吧💕 1. 什么是账本数据库 区块链大家想必都耳熟能详,比特币、以太坊甚至狗狗币等代币,作为区块链的代名词,不仅牵动着…

《歌在飞》在抖音播放7.7亿,歌者苏勒亚其其格用公益让爱心传递

随着短视频的流行,抖音平台也被大家所熟知,很多好听的音乐作品,都是通过抖音平台传唱开来。 曾经有一首《歌在飞》的音乐作品,在抖音平台传唱度很广,截止目前已经有7.7亿的播放量。据悉,《歌在飞》这首歌曲…

基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 载波同步是相干解调的基础,不管对于模拟通信还是数字通信来说,只要是相干解调,接收端都必须提供同频同相的载波。当然,若采用基带传输&#…

hadoop 3.x大数据集群搭建系列7-安装Hudi

文章目录编译环境准备一. 下载并解压hudi二. maven的下载和配置2.1 maven的下载和解压2.2 添加环境变量到/etc/profile中2.3 修改为阿里镜像三. 编译hudi3.1 修改pom文件3.2 修改源码兼容hadoop33.3 手动安装Kafka依赖3.4 解决spark模块依赖冲突3.4.1 修改hudi-spark-bundle的p…

pytest + yaml 框架 - 3.全局仅登录一次,在用例中自动在请求头部添加Authentication token认证

前言 我们在使用自动化测试框架的时候,经常会遇到一个需求,希望在全局用例中,仅登录一次,后续所有的用例自动带上请求头部token 或者cookies。 环境准备 Python 3.8版本 Pytest 7.2.0 最新版 pip 安装插件 pip install pytes…

[附源码]Python计算机毕业设计Django的实验填报管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

OSSID: Online Self-Supervised Instance Detection by (And For) Pose Estimation

许多机器人操作算法都需要 实时目标姿态估计。然而,最先进的目标姿态估计方法是针对一组特定的对象进行训练的;因此,这些方法需要 重新训练 以估计每个新对象的姿势。本文提出了 OSSID 框架,利用 慢速零样本 姿态估计器 来 自监督…

OpenGL 图像色调

目录 一.OpenGL 图像色调 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像色调 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

Spring | IOC技术之Bean的配置与实例化

👑 博主简介:    🥇 Java领域新星创作者    🥇 阿里云开发者社区专家博主、星级博主、技术博主 🤝 交流社区:BoBooY(优质编程学习笔记社区) 文章目录Bean的基础配置1、id 与 cla…

家电生产线数控机床上下料长臂机器人组设计

目录 摘 要 I ABSTRCT II 前言 III 1.长臂机器人组概况 1 1.1国内外发展状况 1 1.2研究意义 2 1.2.1长臂机器人组研究现状 2 1.2.2长臂机器人组研究方向 3 1.3本课题意义和目的 4 1.3.1本课题的意义 4 1.3.2本课题的目的 4 2.长臂机器人组的组成分类及设计分析 6 2.1 长臂机器人…

【车载开发系列】UDS诊断---诊断故障清除($0x14)

【车载开发系列】UDS诊断—诊断故障清除($0x14) UDS诊断---诊断故障清除($0x14)【车载开发系列】UDS诊断---诊断故障清除($0x14)一.概念定义二.参数说明三.清除内容方式1)清除内容2)…

python接口自动化44- requests 库使用 hook 机制

前言 requests 是 Hooks 即钩子方法,用于在某个框架固定的某个流程执行是捎带执行(钩上)某个自定义的方法。 requests 库只支持一个 response 的钩子,即在响应返回时可以捎带执行我们自定义的某些方法。 可以用于打印一些信息&am…

Unity引擎开发-无人机模拟飞行实现

目 录 摘 要 I Abstract II 一、 绪论 1 (一) 研究背景和研究意义 1 (二) 国内外研究现状 1 (三) 论文组织结构 2 二、 3D游戏技术的知识系统 2 (一) 3D图形库 2 (二&…

UML概述及UML类图详解

一 UML介绍 UML这三个字母的全称是Unified Modeling Language,翻译就是统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果 UML 本身是一套符号的规定,就像数学符号和化学符…

Linux——md5命令

文章目录介绍选项使用案例生成文件md5值文本模式或二进制模式md5值重定向重定向追加md5校验实际开发场景介绍 md5sum命令用于生成和校验文件的md5值。它会逐位对文件的内容进行校验。是文件的内容,与文件名无关,也就是文件内容相同,其md5值相…

CTGU操作系统

CTGU操作系统第一章第二章 Operating-System structures操作系统结构第三章自己看,懒得写了,我也不知道为啥划重点他要把所有PPT过一遍,离谱第一章 第二章 Operating-System structures操作系统结构 第三章自己看,懒得写了&#x…