【吴恩达机器学习笔记】九、机器学习系统的设计

news2024/9/30 15:33:20

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

九、机器学习系统的设计

1. 确定执行的优先级

现在我们先来看一个关于分类垃圾邮件和非垃圾邮件的例子。

这里所用到的就是监督学习,我们会选取一定的特征量x表示文章中出现的单词,下面就是选取了100个特征关键词作为判断标准,然后给于训练集在垃圾和非垃圾邮件中去判断其中这些单词是否出现。

而特征值等于1说明出现了,等于0说明没有出现。

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

这里需要注意的是,在现实中,我们通常会在训练集中选取出现频率最高的单词作为特征,一般数量在1000到50000个,而不是像我们上面那样手动选取100个特征来那个。

那么,该如何提高分类的准确度而降低错误率呢,这有以下几个方法:

  • 增加你的训练数据集。
  • 用更复杂的特征关注于邮件的标题。
  • 对于文章主体即正文使用更复杂的特征。
  • 用一些更复杂的算法来检测出拼写错误。

2. 误差分析

上面我们介绍过利用图像来判断高方差和高偏差的问题,能够帮你节省很多没必要的时间,接下来我将为你介绍另一个方法,能够帮助你更好的去完善模型,那就是误差分析。

还是拿上面垃圾邮件分类的例子,你可以通过分析那些被分错的邮件有哪些共同之处,然后可以去增加一些特征量,去想一个更好的模型,如下所示:

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

假设分类算法错误分类了100个邮件,这时你可以手动的分类,观察它们哪些类别的邮件出错率很高,比如可能钓鱼邮件分类错误率高,这时就去观察这些邮件中有什么共同之处,比如拼写错误、奇怪的来源或者是不正常的标点。假设有不正常的标点特征的邮件居多,这可能就值得你去花时间去思考一些新的特征量新的模型去改善这些情况,提高分类的准确度。

除此之外,我们最好能有一个单一规则的数值评价指标,能帮助我们快速分辨出某些算法适不适用于我们的模型,如果没有一个指标来评估,手动来测试好坏往往会使我们难以判断是否要用这些算法。

最后,还有一个建议就是,在你所有一切开始的时候,最好快速的先实现一个算法,不要管他是好是坏,人们一般在第一步构建上面花费太多时间即便是一个很简单的算法。快速的实现一个算法后你就可以通过误差分析等方法,快速的去改善你的算法。

3. 不对称分类的误差评估

上节课我们提到了数值评估,它可以帮助我们快速决定算法的适用性,但是如果出现偏斜类(skewed classes)问题,这种方法就很难进行判断,如下:

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

这个例子中是对癌症进行分类,上面原先的模型假设误差由1%,但是当我们换一个算法,就只判断是否y=0,这显然并不是一个很好的分类方法,但我们通过数值估计发现误差竟然降低了,因为上面这个偏斜类问题中,正样本数量远少于负样本数量,故我们无法很好的判断这个方法与我们原先用的模型哪个更适合。

面对这种偏斜类问题时,我们希望能有不同的误差度量值或者不同评估度量值,而其中一种误差度量值就是查准率和召回率,如下:

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

上面这种指标一般用于我们想要预测某种十分稀少的情况,比如说癌症。

而我们一般会先将所分出来的数据集划分为四个部分,分别是真阳性(True postive)即预测与实际都为1,假阳性(False postive)即预测为1但实际为0,假阴性(False negative)即预测为0但实际为1,真阴性(True negatvie)即预测与实际都为0。然后再对查准率和召回率进行定义。

查准率(Precision)

在所有预测为癌症的患者中,有多少患者是真真切切是患有癌症的。

召回率(Recall)

在所有实际患有癌症的患者中,有多少病人是你正确预测患有癌症的。

通过上面这两个度量指标,再回过去看之前那个总是预测y=0的模型,我们就可以得到它的召回率为0,因为他总是不预测是否患有癌症,故可以清楚知道这个模型并不好。

4. 查准率和召回率的权衡

通过上节课我们了解了查准率和召回率,这节课我们来学习该如何权衡这两者,在此之前我们先看下面这些情况:

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

你可以通过改变临界值来得到你想要的结果:

  • 如果你想有十足的把握告诉病人他得了癌症,避免误判,那么你可以设置较高的临界值例如0.7,只有当hθ(x)大于0.9,才会预测为1,这种情况下就会得到高查准率,低召回率
  • 如果你不想漏掉一些本该得了癌症的病人,那么你可以设置很低的临界值例如0.3,当hθ(x)大于0.3时,就会预测为1,这种情况下就会得到高召回率,低查准率

所以有时候想要得到高查准率或者高召回率就要舍弃另一边的准确率,这就需要我们去权衡,可以通过画出查准率与召回率的曲线,来选择你想要的结果,那么是否一种方法可以自动的选择临界值呢。

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

上面我们说如果单一看一个评估数值无法很好判断算法好坏,所以引出了查准率和召回率,但是还存在一个问题,就算我们得到了这两个数值,我们也还是要花很长时间去思考去对比每个算法的查准率和召回率,这样效率仍然不高。所以我们就又要需要一个数值通过查准率和召回率帮助我们判断算法的好坏,但是如果仅算这两者的平均值,得到的结果仍然不准确,这就要引入第三个度量值F值(F score)

这样,就算你一边很高但是另一边很低,得到的F值也会很低,从而排除掉一些极端的算法。

5. 机器学习数据

我们先来看一个例子,下面这是一个比较有影响力的研究。

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

通过给四个算法不断地喂训练集,然后观察它们随训练集数量的增多效果的变化,结果发现数量集越多时劣质算法竟然效果会更好,甚至比优质算法效果还要好,所以有句话就说并不是那些拥有好算法的人是赢家,赢家往往是那些手里掌握着很多数据的人,那么这句话在什么情况下是真的呢,我们来举些例子。

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

首先假设我们有足够多的特征信息能够准确判断y值,然后让我们去判断上面句子中的空白地方是填什么,通过大量的信息机器可能就知道这个地方要填two,而不是to或too,这样数据多看起来是一件不错的事情。

但是我们再来看一个反例,如果只给你一个特征即房屋的大小,不告诉你其它像房屋所处位置,房间个数等等信息,让你去预测房屋的价格,恐怕你有再多的数据集也无法很好的预测房屋的价格吧。

所以训练集越多效果越好是要分情况的,下面这种情况就完美的符合了。

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

我们可以用拥有很多参数的算法,这样我们就可以使偏差变得很低,并且训练误差会很小。

然后再通过很大的数据集去训练,这样就可以使方差变得很低,并且测试误差会接近于训练误差。

两者结合起来即解决了高偏差问题也解决了高方差问题,并且使训练误差也很低。

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

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

相关文章

Allegro如何用list文件抓取器件操作指导

Allegro如何用list文件抓取器件操作指导 Allegro支持list文件在PCB上抓取器件,具体操作如下 在pcb相同目录下新建一个后缀为.lst文件,任意命名一个名字比如123.lst 原理图中批量选择需要抓取器件的信息,支持批量选择,无用的信息框选进去也是可以的 复制到新建lst文件中去…

主流嵌入式操作系统有哪些

嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。常见的嵌入式操作系统有wince、PALM OS、linux、Android、FreeRTOS。 WINDOWS CE是微软开发的一个开放的、可升级的32位嵌入式操作系统,…

【Matplotlib绘制图像大全】(二十六):Matplotlib读取本地图像

前言 大家好,我是阿光。 本专栏整理了《Matplotlib绘制图像大全》,内包含了各种常见的绘图方法,以及Matplotlib各种内置函数的使用方法,帮助我们快速便捷的绘制出数据图像。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmMatp…

基于SpringBoot和Vue的厨到家服务平台的设计与实现毕业设计源码063133

springboot厨到家服务系统 摘 要 在社会快速发展的影响下,餐饮迅速发展,大大增加了餐饮服务信息管理的数量、多样性、质量等等的要求,使餐饮的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的厨到家服…

十二条后端开发经验分享,纯干货

前言 本文是博主从事后端开发以来,对公司、个人项目的经验总结,包含代码编写、功能推荐、第三方库使用及优雅配置等,希望大家看到都能有所收获 博主github地址: github.com/wayn111 一. 优雅的进行线程池异常处理 在Java开发中&#xff0c…

【Recurrent Neural Network(RNN)】循环神经网络——李宏毅机器学习阅读笔记

Recurrent Neural Network(RNN) Example Application Slot Filling 智慧订票系统: How to represent each word as a vector? 但是光这样,feedforward Network是无法solve这一问题的,因为他无法区别是leave Taipei还是arrive Taipei。…

stable diffusion webui安装部署教程

系统环境: 腾讯云服务器,centos 7.6 基础环境安装 git 安装(直接安装高版本的) (默认安装的是1.8 版本的。没有 -c 命令,需要升级) 参考: https://blog.csdn.net/qq_28903377/article/detai…

[附源码]Python计算机毕业设计SSM康健医药公司进销存管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计SSM酒店入住管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

计算机视觉专家:如何从C++转Python

有人说用 Python 编程很简单,6 岁小孩都能学会。计算机视觉专家和编程语言爱好者 asya f 刚开始上手 Python 时也这么想。但门槛低就仅意味着使用简单吗?经常调用 API 的人是不是一定比可以从零写出源码的人菜?在本文中,asya f 告…

数据生产流程——采集、清洗、分析

大家好,这里是小安说网控。 前几篇文章,我们分享了线上价格监测的重要性以及注意事项。数据监测是如何将平台上海量的数据转换为有价值的营销情报的呢?今天,我们来一个数据生产流程大揭秘! 一、 数据采集 数据采集就是…

2022腾讯数字生态大会:腾讯云HiFlow,零代码自动化工作流助手

2022腾讯数字生态大会,在主题为“数字化叠变、全域新协作”的腾讯云SaaS连接专场上,多款产品重磅发布。 未来企业数字化转型的越来越多的使用saas是一个趋势,那么如何解决SaaS之间的互联互通和数据孤岛?腾讯云HiFlow的业务负责人…

嵌入式通用const和volatile和static inline关键字 (volatile寄存器地址修饰必不可少)

const和volatile之间的合作【1】const修饰变量【2】const修饰数组【3】const修饰指针【4】const修饰函数【5】volatile的应用【6】volatile详解【7】const和volatile配合【8】AHB (高级高性能总线)【9】APB (高级外围总线)在学习ADC之前掌握这些 #define __IO volatile …

iPayLinks艾贝盈上线委托换汇功能!

“8.11”汇改以来,人民币汇率市场化形成机制逐步完善,人民币汇率弹性不断增强,双向波动成为常态。 在市场化的汇率形成机制下,外贸人想要快、准、稳地选到合适汇率,降低汇损提高利润,仅靠自己难以实现。 …

模拟电路设计(36)---谐振型变换器

谐振型变换器 今天来介绍下谐振型变换器。脉宽调制型通过控制开关管的导通占空比来调节输出电源功率,而谐振型变换器以正弦形式处理功率开关管,使得开关管在零电流或者在零电压的情况下实现导通和关闭,从而降低开关功耗,提高变换…

这才是数字孪生污水处理厂该有的样子 | 智慧水务

近年来,智慧水务、数字水务成为水务行业的热点领域。对于污水处理领域,如何贯彻落实双碳战略,积极推进智慧水厂建设,显得尤为关键。 图扑软件依托自主研发的 HT for Web 产品,并结合视频融合、BIM、5G、物联网、云计算…

springMVC02,restful风格,请求转发和重定向

springMVC02,restful风格,请求转发和重定向restful风格restful简介restful 例子测试请求转发和重定向restful风格 restful简介 概念: Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,…

第10章Swagger自定义实现index.html页

1 初始化index.html页 复制原程序“index.html”页的内容到当前程序员“index.html”页。 注意:是内容复制,如果是页面替换复制,则必须重新把“index.html”页的属性中的“生成操作”设定为:“嵌入的资源”。 2 自定义SwaggerSet…

【数据结构】堆和优先级队列

目录 一、堆 1.1堆的特点 1.2如何构造一个最大堆 (1)最大堆的构造以及常用方法的实现 (2)添加操作 (3)删除操作 (3)将任意数组调整为堆 二、TopK问题 2.1使用优先级队列 &am…

jenkins 参数化构建发布到kubernetes集群不同的命名空间下

最终效果 在构建前可以选择参数,要拉取的Git分支、什么命名空间下、什么服务。 自由风格项目使用的jenkins agent镜像,请参考这个文章: 【DevOps】(2022.11更新)基于jenkins/jnlp-slave:4.13.3-1-jdk11镜像,加入kubectl、mvn命令_阳光很暖吧的博客-CSDN博客 1、自由风格项…